Openlayers vector layer içerisinde feature araması

8 Tem

Opanlayers 3 kütüphanesinde vektör verilerin gösterilebilmesi amacıyla ol.layer.Vector nesneleri kullanılmaktadır. Bu nesneler içerisinde property olarak  bulunan ve veri kaynağını işaret eden ol.source.Vector nesneleri, vektörlerin nereden ve nasıl alındığını temsil etmektedir. En basit şekliyle bir vektör gösterim temsili şu şekildedir.

var vectorLayer = new ol.layer.Vector({
    source: new ol.source.Vector({
       ulr:'data/file.geojson'
    })
});

Vektör katmanı otomatik olarak verileri kaynak nesnesi aracılığı ile kaynaktan yükleyebilmektedir. Yuakrıdaki örnekte hedef veriler bir *.geojson dosyasında bulunmaktadır.

Başka bir kaynaktan elde edilen bir geometrik verinin katman içerisinde bulunup bulunmadığı bilgisi ya da arama metodu şu anda Openlayers kütüphanesinde bulunmamaktadır. Örneğin eczanelerin konumlarının (Lon, Lat) şeklinde bulunduğu bir katman olsun. Başka bir kaynaktan gelen tek bir noktanın (Lon,Lat) bu katman içerisinde bulunup bulunmadığını araştırmak istiyor olalım. Bu durumda ilk kullanılacak yöntemlerden biri geometrik verilerin WKT biçimlerini karşılaştırması olabilir. Bir noktanın WKT biçimi şu şekildedir:

     POINT(-71.064544 42.28787)

Bir katman içerisinde bir geojson nesnesinin arandığını varsayalım. Bu işlemi gerçekleştiren fonksiyonu şu şekilde hazırlayabiliriz.

var isGeojsonExistInLayer = function (layer, geojson) {
    var isExist = undefined;

    var feature = (new ol.format.GeoJSON()).readFeature(geojson);

    var formatWKT = new ol.format.WKT();
    var wktNew = formatWKT.writeGeometry(feature.getGeometry());

    if(angular.isArray(layer.getSource().getFeatures())){
        angular.forEach(layer.getSource().getFeatures(), function (item) {
            var wktExisting = formatWKT.writeGeometry(item.getGeometry());

            if (wktExisting === wktNew) {
                isExist = item;
            }
        });
    }

    return isExist;
};

Bu fonksiyonda kullanılan Foreach döngüsü angularjs kütüphanesine aittir. Uygulama kodları Openlayers v4.0.1 kütüphanesi kullanılarak hazırlanmıştır.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorum için bu kutuya doğru sayıyı girin * Time limit is exhausted. Please reload CAPTCHA.