16

Google ジオコーダーがどのように機能するのか興味があります。

私は、 geocommons の geocoderPostGIS の新しい Tiger Geocoderなどのオープン ソース ジオコーダの実装について研究しています。これは私がこれまでに知っているおおよそのことです (うまくいけば、私が宿題をしていることを証明するためです):

オープンソースのジオコーダーの中核には、3 つの主要な要素があることを認識しています。

1.-任意の文字列を取得して正規化するアドレス ノーマライザー(例はこちらから):

normalize_address('address string');

e.g.: SELECT naddy.* FROM normalize_address('29645 7th Street SW Federal Way 98023') AS naddy;

 address | predirabbrev |      streetname       | streettypeabbrev | postdirabbrev | internal | location | stateabbrev |  zip  | parsed
 ---------+-------------+-----------------------+------------------+---------------+----------+----------+-------------+-------+--------
 29645 |               | 7th Street SW Federal  | Way              |               |          |          |             | 98023 | 

と:

2.-コアアルゴリズムがレーベンシュタイン距離である名前の魔法のファジーマッチングを行うジオコーダー。

良い例は、ウィキペディアの記事からのもので、kitten と siting という単語の間のレーベンシュタイン距離を計算します (距離は 3 です。これは、1 つの文字列を別の文字列に変更するのに必要な編集回数であるためです)。

kitten → sitten (substitution of 's' for 'k')
sitten → sittin (substitution of 'i' for 'e')
sittin → sitting (insertion of 'g' at the end).

3.- 家がどこにあるかを推測するために、最後に道路セグメントを補間します。この例を作成するために、無料のCensus Tiger Street データセットのチャンクをダウンロードしました。

ストリート補間の例

上記の例では、対象のストリート セグメント (Schaeffer Hills Dr) には、 300 で始まるfrom ノード(300 Schaeffer Hills Dr) と400 (400 Schaeffer Hills Drv) で終了するto ノードがあります。この Schaeffer Hills Drv に一致し、要求が 310 番街に対するものだった場合、アルゴリズムはそれを (その 10% をトラバースして) 私の緑色の矢印がある場所に補間します。

これは、オープン ソースのジオコーダー ツールが行うことです。それにもかかわらず、Google は明らかにそれよりも賢く、あらゆる種類の非伝統的なヒントを使用しています。

どうして?

たとえば、680 Mission st (都市、州、郡などは一切入力しない) と入力できます。標準的なアドレス ノーマライザーのほとんどは、あまりにも多くの一致を検出するため、機能しなくなります。しかし、私は SF にいるので、Google は私の IP を使用して geoip のような情報を取得あいまい検索でヒントとして境界を拡張し、一致する最も近いセグメントをすぐに見つけて、それが私の答えだと教えてくれると推測しています (どちらが正しい!)。

上記で説明した手法に加えて、Google ジオコーダーがどのように機能するかをさらに明らかにできる回答を探しています。

アップデート:

OK、これまでのところ、2 種類のヒントがリストされています

  • ヒントとしての Geoip
  • 関心領域境界ボックス (ポールの例を参照)。
  • その他?
4

2 に答える 2

7

ブラック ボックスを調べてみるとわかることの 1 つは、Google ジオコーダーがトークンの順序に完全に敏感ではないことです (通り/都市/州/国の強制的な期待はありませんが、従うとより良くなります)。それ)。つまり、彼らはすべてをある種の全文検索に投入し、何が返ってくるかを見ているのかもしれません。あるいはそうではないかもしれません。「sault saint marie adams 200」「sault saint marie 200 adams」で検索してみてください。

ミッションの例に関しては、マップのヒントが直接作用することがわかるので、それは素晴らしいものです。

ヨーロッパのマップ ウィンドウを使用したクエリ: ヨーロッパの結果。

ヨーロッパのマップ ウィンドウを使用したクエリ: ヨーロッパの結果

北米のマップ ウィンドウを使用したクエリ: アメリカの結果。

北米のマップ ウィンドウを使用したクエリ: アメリカの結果

于 2012-06-12T21:19:35.250 に答える
4

もう 1 つのデータ ソースがあります。郡のプロパティ マップです。これらには、道路だけでなく、敷地境界線 (およびその番地) も含まれます。これは Google の地図でよく見ることができますが、実際には、隣接する物件を区切るかすかな線が表示されます。建物の輪郭を描いていることもあります (郡の地図には、これらも含まれていることがよくあります)。

GPS 座標を使用して正確な住所を見つけることは、2D クエリと同じくらい簡単であるため、逆ルックアップを実行することもできます。物理的に道路から離れていたときに、これが適切に機能することを確認しましたが、まだ敷地内にあり、ハンドセットが別の通りに近いにもかかわらず、正しい住所を返しました。

これらの地図は一般公開されている傾向があり、郡によっては独自のオンライン インターフェイスを持っていることにも注意してください。特定の区画の所有者を調べることもできます。

于 2012-06-12T06:17:53.967 に答える