形状で記述された都市の境界にLAT/LONGを非常に効率的に割り当てるにはどうすればよいですか?
質問
私は36.000の非重複ポリゴン(都市の境界)の巨大なシェイプファイルを持っています。特定のLat/Longが落ちるポリゴンを簡単に判断したいと思います。それが非常に計算効率が良くなければならないことを考えると、何が最善の方法ですか?
ルックアップテーブル(Tilex、Tiley、Polygone_id)を作成することを考えていました。TilexとTileyは、ズームレベル21または22でタイル識別子です。はい、タイル数と平面投影の精度の欠如が私のアプリケーションで受け入れられます。
私はむしろPostgresのGIS拡張機能を使用せず、すべての挿入ステートメントを生成するために2日間実行されるプログラムでは問題ありません。
解決
ステートメントを何に挿入しますか?別の空間データベースまたは他のデータベースを使用していますか? Python、C、またはJavaを使用することをいとわない場合は、Shapely、GEO、またはJTSを使用して、必要なことを簡単に実行するためにいくつかのカスタムコードを記述できます。
Pythonでは、このlibを使用してShapefileを開きますhttp://indiemaps.com/blog/2008/03/easy-shapefile-loading-in-python/
その後、形がありますhttp://gispython.org/shapely/docs/1.0/manual.html#contains封じ込めをテストします
Javaには、JTSも含まれるGeoToolsを使用します。
他のヒント
あなたが欲しいように聞こえます BSPツリー. 。基本的に、領域をファッションのような木で小さくて小さなポリゴンに分割します。
利点は、後ですべてのポリゴンと座標を比較する必要がないことです。これにより、正しいポリゴンを見つけるための非常に速い方法になります。
QGIS /ベクターツールには、探している機能があります