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.
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?
I suspec t nikt z dokładnymi informacjami nie będzie w stanie odpowiedzieć na twoje pytanie bez naruszenia umowy o zachowaniu poufności. –
możesz mieć więcej szczęścia zadając to pytanie tutaj: http://gis.stackexchange.com/ –
@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