2017-04-27 14 views
0

19,000個のフィーチャ(ポイント)近くのチョコレートで大きなgeoJSONファイルを摂取しています。その結果、マップ上に大量の混乱が生じ、管理が難しくなります。リーフレットでlat-longでGeoJSONをフィルタリングする

目的は、ジオロケーションを使用して自分の位置をマークし、その周囲に5nmの円を描き、そのジオメトリ内に存在するgeoJSONフィーチャのみを表示することです。

私のプロジェクトの要約版は、次のとおりです。 https://jsfiddle.net/blintster/d2ucock2/3/

私は自分の場所を見つけて、円を描く出て働いてきたが、私は場所にGeoJSONの機能を解析することはできませんよ。理想的には、出力は次のように機能します:https://esri.github.io/esri-leaflet/examples/spatial-queries.htmlしかし、その方法はL.esri.FeatureLayerにのみ適用されるようです。これはローカルにインポートされたgeoJSONです。

var allairportsLayer = L.geoJson([airports], { 
    filter: airportFilter, 
    onEachFeature: function(feature, layer) { 
     layer.bindPopup(feature.properties.Type + " - " + feature.properties.FacilityName + "<br>Contact Info: " + feature.properties.Manager + "<br> Phone: " + feature.properties.ManagerPhone); 
    } 
    }).addTo(map); 

    function airportFilter(feature) { 
    if (feature.properties.State === "MD") return true 
    }; 

Iは状態によってフィルター法を使用して、わずかに結果をダウンペアリングすることができただけ私が決定するために許可されている:

問題のにGeoJSON層は、[空港] 19000のエントリである未満であります属性が指定された基準を満たす場合。

また、以下の方法を試みました:https://www.mapbox.com/mapbox.js/example/v1.0.0/marker-radius-search/ 運がありません。

データを解析してジオメトリ内に存在するポイントのみを表示できるようにする追加の方法について知っている人はいますか?

答えて

1

ただし、この方法はL.esri.FeatureLayerにのみ適用されるようで、これはローカルにインポートされたgeoJSONです。

esri-leafletは、空間クエリをサポートするバックエンドホストデータベースを提供するArcGIS ServerおよびArcGIS Onlineサービスをサポートしていません。

明らかにEsriだけが唯一の選択肢ではありませんが、である場合のユースケースは、表示する予定のないデータセット全体をフェッチしないと便利です。

  1. あなたは、ArcGIS developer accountを作成し、自由のための新しいホスティングサービスとしてご.geojsonファイルをアップロードするarcgis.comにサインインできます。

  2. あなたは

  3. あなたは、独自のサーバーを実行して、独自のPostGISデータベースをインストールし、空間的なウェブをフックアップができ、自分自身を照会同等の機能を提供する別のホスティングサービスを見つけることができます。

  4. あなたは、ページの読み込みにすべての19000個の機能をダウンロードして、いずれかを続けることができます:

    a)に関連するL.latLngBounds.contains()各ポイントかどうかを検索し、テストを簡素化します。

    b)turfのようなものを使用して、実際の円との関係をテストします。 (ここで言及する価値のある注意点は、リーフレットに実際のL.circleジオメトリを生成するための組み込みメソッドが含まれていないため、カスタムロジックがさらに必要になることです。私はあなたがripoffにようこそ)同様のhere何かを書いた。

関連する問題