2012-06-12 12 views
14

Googleジオコーダがどのように機能するのか不思議です。Googleジオコーダはどのように機能しますか?

私は、geocommons' geocoderまたはPostGIS's new Tiger Geocoderのようなオープンソースジオコーダーのいくつかの実装を研究しています。これは私がこれまでに知っていることです(私が宿題をやっていることをうまく証明するためです):

オープンソースのジオコーダーのコアには、3つの主要な要素があります。

1.-任意の文字列を受け取り、それを正規化アドレス正規化taking the example from here):

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.-名のいくつかの魔法のファジーマッチングを行いジオコーダコアアルゴリズムはLevenshtein Distanceです。

好例は、それが単語の子猫と座っ間のレーベンシュタイン距離を算出するWikipediaの記事(つまり、他に1つの文字列を変更するために必要な編集の数であるので、距離は3である)からのものである:

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 datasetのチャンクをダウンロードしました。上記の例で

street interpolation example

、関心の街路セグメント(シェーファーヒルズDR)は上の終了ノード、300(そう300シェーファーヒルズDR)から始まり、ノードからを有します400(400 Schaeffer Hills Drv)。私がこのSchaeffer Hills Drvに合っていて、リクエストが通り310だった場合、アルゴリズムは私の緑色の矢印があるところまでinterpolate(それの10%をトラバースする)になります。

これは、オープンソースのジオコーダツールの機能です。それにもかかわらず、Googleはそれよりもはるかにスマートで、伝統的でないヒントをすべて使用しています。

どのようにですか?

たとえば、680 Mission st(市、州、郡、何も指定しない)と入力できます。標準アドレス正規化器のほとんどは、あまりにも多くの一致を見つけるために爆発するでしょう。私はSFにいるので、私はと推測しています。 googleは私のIPを使ってgeoip-like informationを取得しています。some expanding boundingは、あいまい検索のヒントとして、すぐに一致する最も近いセグメントを見つけ、それは私の答えです!)。

Googleジオコーダの動作方法について、私が上記で説明した技術の他にどのように作用するかを明らかにする答えを探しています。

更新:

OK、これまでのところ、我々はヒント

  • インタレストバウンディングボックスの面積(パウロの例を参照)としてのGeoIP

    • を記載されているヒントの2種類がありますが。
    • 他にもありますか?
  • +3

    私はsuspec正確な情報のない者は、機密保持契約に違反することなく、あなたの質問に答えることができます。 –

    +0

    あなたはこの質問をここで尋ねる方がいいかもしれません:http://gis.stackexchange.com/ –

    +0

    @ Suvi私はgis.stackexchangeについて知っています。それにもかかわらず、このフォーラムにはより多くの目が揃っており、私はそれができることを期待していました: -/ – rburhum

    答えて

    6

    ブラックボックスを突き抜けて見つけることのできるものの1つは、Googleジオコーダがトークンの順序に完全には敏感でないことです(路/都市/州/国の強制的な期待はありませんが、あなたがそれに従うとき)。彼らは何かを全文検索に投げ捨て、戻ってくるものを見ているかもしれないと私に言います。あるいはそうでないかもしれない。 「サルトサンマリーアダムス200」と「サルトサンマリー200アダムス」を検索してみてください。あなたがマップのヒントが直接遊びに来て見ることができるように、それは、素晴らしいものだ、あなたのミッションの例に関しては

    :ヨーロッパ各地マップウィンドウで

    Query with map window over Europe: European results.

    問合せ:ヨーロッパ結果

    Query with map window over North America: American results.

    北アメリカの地図ウィンドウでクエリ:アメリカの結果

    4

    郡のプロパティマップがあります。これらは道路だけでなく、不動産ライン(およびその住所)も含みます。 Googleの地図上でこれを見ることができます。実際には、隣接するプロパティを区別する微妙な線が表示されます。時には建物を概観することさえあります(郡マップにはこれらも含まれます)。

    あなたのGPS座標があなたの正確な住所を見つけることは、2Dのクエリと同じくらい単純なことができますので、逆のルックアップを行うこともできます。私が物理的に遠い道路からはまだ財産の中にあり、ハンドセットが別の通りに近づいているにもかかわらず、正しい住所を返していました。

    これらのマップは公開されている傾向があり、一部の郡では独自のオンラインインターフェイスがあることにも注意してください。特定のプロットを所有している人を探すことさえできます。

    +0

    逆ジオコーディングははるかに簡単な問題です。ちょうど緯度/経度を取得し、最も近いフィーチャー(区画またはストリートセグメント)にスナップしてください。ジオコーディングを行うためのもう1つのデータソースであるParcelフィーチャーのトピックが表示されます。伝統的な*ジオコードのプロセスは、ストリートセグメントアプローチと非常によく似ています。 – rburhum

    +1

    私の答えを間違ったものとして解明してくれて、今削除されました。私は、Google Geolocationのホワイトペーパーが、何らかの形で関係するかもしれないジオコーディングに関連する潜在的なインフラストラクチャについて議論していると思いました。あなたの答えは+1してください。乾杯! – arttronics

    関連する問題