2012-06-12 11 views
14

Jestem ciekaw, jak działa geocoder Google.Jak działa geocoder Google?

Badałem niektóre implementacje geodetów open source, takich jak geocommons' geocoder lub PostGIS's new Tiger Geocoder. Jest to mniej więcej to, co wiem do tej pory (mam nadzieję, że udowodnię, że wykonuję swoją pracę domową):

Zdaję sobie sprawę, że u podstaw geocoderów typu open source są trzy główne elementy.

1.- adres normalizer że bierze dowolny ciąg i normalizuje się (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 | 

oraz:

2.- geocoder że ma jakąś magiczną rozmyte dopasowywanie nazw gdzie głównym algorytmem jest Levenshtein Distance.

Dobrym przykładem jest jeden z artykułu z Wikipedii, gdzie oblicza odległość Levenshteina między kotka słowa i siedzi (odległość wynosi 3 ponieważ jest to liczba edycji wymaganych zmienić jeden ciąg na drugi):

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

3.- Niektóre interpolacja segmentów ulicy na końcu, aby zgadnąć, gdzie jest dom. Pobrałem fragment darmowego Census Tiger street dataset, aby utworzyć ten przykład.

street interpolation example

W powyższym przykładzie, segment street zainteresowania (Schaeffer Hills Dr) ma od węzła który rozpoczyna na 300 (tak 300 Schaeffer Hills dr) i do węzła że kończy się 400 (400 Schaeffer Hills Drv). Jeśli dopasowałem do tego Schaeffer Hills Drv, a prośba dotyczyła ulicy 310, algorytm miałby po prostu interpolate (przechodzenie przez 10%) do miejsca, w którym znajduje się moja zielona strzałka.

Oto, co robią narzędzia geokoderów Open Source. Niemniej jednak Google jest wyraźnie mądrzejszy i używa wszystkich nietradycyjnych wskazówek.

Jak to zrobić?

Na przykład mogę wpisać 680 Mission st (bez miasta, stanu, hrabstwa, cokolwiek). Większość standardowych normalizatorów adresów wysadziłaby się w powietrze, ponieważ znaleźliby zbyt wiele dopasowań. Ale ponieważ jestem w SF, jestem zgadywanie google używa mojego ip, aby uzyskać geoip-like information, robijako wskazówka z niektórych wyszukiwania rozmytego, i od razu znajduje najbliższy segment, który pasuje i mówi mi, że to moja odpowiedź (co jest poprawne !).

Szukam odpowiedzi, które mogą rzucić więcej światła na to, jak działa geocoder Google oprócz technik, które opisałem powyżej.

Aktualizacja:

OK, do tej pory mamy dwa rodzaje wskazówek wymienionych

  • GeoIP jako podpowiedzi
  • Obszar zainteresowań Obwiednia (patrz przykład Pawła).
  • Inne?
+3

I suspec t nikt z dokładnymi informacjami nie będzie w stanie odpowiedzieć na twoje pytanie bez naruszenia umowy o zachowaniu poufności. –

+0

możesz mieć więcej szczęścia zadając to pytanie tutaj: http://gis.stackexchange.com/ –

+0

@Suvi Wiem o gis.stackexchange. Niemniej jednak, to forum ma o rzędy wielkości więcej oczu i miałem nadzieję, że może: -/ – rburhum

Odpowiedz

6

Jedną z rzeczy, które można znaleźć, szturchając czarne pole, jest to, że geokodulator Google nie jest całkowicie wrażliwy na kolejność tokenów (nie ma wymuszonej ulicy/miasta/stanu/kraju, ale ma się lepiej kiedy to zrobisz). Który mówi mi, że mogą wrzucać wszystko do jakiegoś rodzaju wyszukiwania pełnotekstowego, a następnie zobaczyć, co wróci. A może nie. Spróbuj wyszukać "sault saint marie adams 200" i "sault marie 200 adams".

waszym przykładzie misji, to jest wielki, jak można zobaczyć podpowiedź mapa wejściem w grę bezpośrednio:

Query with map window over Europe: European results.

zapytania z okna mapy całej Europy: wyniki europejskich

Query with map window over North America: American results.

zapytania z mapy oknie nad Ameryką Północną: Amerykańska wyniki

4

Istnieje inne źródło danych: mapy właściwości powiatu. Dotyczy to nie tylko dróg, ale także linii własności (i ich adresów ulicznych). Często można to zobaczyć na mapie Google, w rzeczywistości pokazuje słabe linie, które oddzielają sąsiadujące właściwości. Czasami nawet zarysowują budynki (mapy powiatu często również je zawierają).

Można również wykonać odwrotne wyszukiwanie, biorąc pod uwagę współrzędne GPS, znalezienie dokładnego adresu może być tak proste, jak zapytanie 2D, aby znaleźć poligony właściwości, w których się znajdujesz. Widziałem to poprawnie, gdy byłem fizycznie daleko z drogi, ale nadal znajduje się wewnątrz nieruchomości i zwrócił prawidłowy adres, mimo że telefon znajduje się bliżej innej ulicy.

Należy pamiętać, że mapy te są zwykle publiczne, a niektóre powiaty mają nawet własny interfejs online. Możesz nawet sprawdzić, kto jest właścicielem danej fabuły.

+0

Odwrotne geokodowanie jest o wiele łatwiejszym problemem. Po prostu pobierz lat/lon i przyciągnij do najbliższej funkcji (paczki lub odcinka ulicy). Pojawia się temat funkcji Parcel, które są kolejnym źródłem danych do geokodowania. Proces * tradycyjnego * geokodowania przeciwko nim jest bardzo podobny do podejścia opartego na segmencie ulicy. Moje pytanie wciąż pozostaje bez odpowiedzi :(Dziękuję za to, że to zauważyłem. – rburhum

+1

Dziękuję za wyjaśnienie mojej odpowiedzi jako niepoprawną, została ona usunięta. Wydawało mi się, że Biała Księga Geolokalizacji Google omawia również potencjalną infrastrukturę związaną z geokodowaniem, która może być w jakiś sposób istotna. bądź pewien, +1 za odpowiedź. Pozdrawiam! – arttronics

Powiązane problemy