14

私は、GPS データに基づいてリアルタイムのリバース ジオコーディング操作を実行できることが要件の 1 つであるアプリケーションに取り組んでいます。特に、緯度と経度のペアがマップされている州/県を特定し、ある州/県から別の州/県に移動したことを検出できなければなりません。

これまでにいくつかのアイデアがありますが、次のいずれかについて何かアイデアがあるかどうか疑問に思いました。

  • この問題に効率的に取り組むための最良のアプローチは何ですか?
  • 見つけるのに適した場所と、北米の州/県の境界の適切な形式は何ですか?

手始めに、私が持っている2つの主なアイデアを次に示します。

  1. 北アメリカをグリッドに分割し、グリッド内の各長方形を特定の州にマッピングします。緯度と経度 (またはその逆) に基づいて、このテーブルを検索します (必要な精度を求めるほど、このテーブルは急速に大きくなります)。
  2. 各州のポリゴンを定義し、なんらかの計算を行って、緯度/経度のペアがどのポリゴンにあるかを判断します。これについてどうすればよいか正確にはわかりません。州/県の境界を定義する 1 つの方法として、HTML イメージ マップが思い浮かびます。

私は、興味のある人、または提案したい素敵なライブラリを持っている可能性のある人のために、python で作業しています。

明確にするために... Web アクセスを利用できないため、実行時に既存のリバース ジオコーディング サービスを使用することはできません。

4

6 に答える 6

8

国向けのオフライン逆ジオコーディング モジュールを作成しました: https://bitbucket.org/richardpenman/reverse_geocode

>>> import reverse_geocode 
>>> coordinates = (-37.81, 144.96), (31.76, 35.21)
>>> reverse_geocode.search(coordinates)
[{'city': 'Melbourne', 'code': 'AU', 'country': 'Australia'},
 {'city': 'Jerusalem', 'code': 'IL', 'country': 'Israel'}]

州のデータを追加できるかどうかを確認します。

于 2014-07-22T12:38:55.493 に答える
6

最初のアイデアの変形を使用することをお勧めします:空間インデックスを使用します。空間インデックスは、長方形から構築されたデータ構造であり、緯度/経度をペイロードにマッピングします。この場合、長方形を都道府県のペアにマップすることになるでしょう。R ツリーは良いオプションかもしれません。これはR-tree python packageです。連続した検索の結果を比較することで、ローミングを検出できます。

于 2009-09-15T05:46:24.340 に答える
4

独自のソリューションをゼロから実装することは避けたいと思います。これはかなり大がかりな作業であり、これを行うためのツールはすでに出回っています。オープン ソース アプローチ (無料) をお探しの場合は、このブログ記事をご覧ください: PostGIS を使用して Geocode をリバースする

于 2009-09-15T05:45:16.560 に答える
1

州の境界をポリゴンとして把握できる場合 (たとえば、OpenStreetMap を介して)、現在の州を特定することは、ポリゴン内のポイント テストにすぎません。

住所データが必要な場合、オフライン ソリューションは Microsoft Mappoint を使用することです。

于 2009-09-15T05:53:00.723 に答える
1

開いているストリート マップから米国全体のデータを取得できます。次に、都市や州の場所など、必要なデータをアプリケーションに最適な形式に抽出できます。データの品質は良好ですが、完全に正確であるとは保証されていないため、完全な正確さが必要な場合は、別の場所を探す必要があるかもしれません.

于 2009-10-19T20:43:17.177 に答える
0

このすべてのデータといくつかのアクセス ツールを含むデータベースがあります。国勢調査のトラのデータから作成しました。基本的には、データベースを sqlite にエクスポートし、コードを少し変換するだけだと思います。

于 2009-09-15T05:38:49.787 に答える