質問

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

これまでにいくつかのアイデアがありますが、次のいずれかにアイデアがある人はいないかと思いました。

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

最初に、私が持っている2つの主なアイデアを以下に示します。

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

興味のある人や、提案したい素敵なライブラリがあるかもしれない人のために、私はpythonで働いています。

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

役に立ちましたか?

解決

最初のアイデアのバリエーションを使用することをお勧めします。空間インデックスを使用します。空間インデックスは、緯度/経度をペイロードにマッピングする長方形から構築されたデータ構造です。この場合、おそらく長方形を州と州のペアにマッピングします。 Rツリーが適切なオプションです。 RツリーPythonパッケージをご覧ください。連続検索の結果を比較することで、ローミングを検出できます。

他のヒント

国用のオフライン逆ジオコーディングモジュールを作成しました: 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'}]

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

私は、独自のソリューションをゼロから実装することを避けます。これは非常に大きな仕事であり、これを行うためのツールは既に存在します。オープンソースのアプローチを探している場合(無料:無料)、次のブログ投稿をご覧ください: PostGISを使用してジオコードをリバースする

状態の境界をポリゴンとして保持できる場合(たとえば、OpenStreetMapを使用)、現在の状態を特定することは、ポリゴン内のテストにすぎません。

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

米国全体のデータは、ストリートマップを開くから取得できます。その後、データを抽出できます市や州などの場所が、アプリケーションに最適な形式になっている必要があります。データの品質は良好ですが、完全に正確であるとは限りませんので、完全な正確さが必要な場合は、どこか他の場所を探す必要があります。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top