2009-07-12 15 views
7

Używam http://maps.google.com/maps/geo? usługa internetowa do geokodowania niektórych adresów.Wybranie najbardziej dokładnego geocode

Problem polega na tym, że pełniejszy adres niekoniecznie daje dokładniejszy kod.

np przekazując Llantysilio, Denbighshire, Wielka Brytania jest znacznie bardziej dokładne niż Llantysilio, Llangollen, Denbighshire, UK

Atrybut Dokładność XML nie wydaje się bardzo pomocne w podejmowaniu decyzji, które adres do odbioru.

W jaki sposób inne osoby poradziły sobie z tym problemem? Czy istnieje dobry sposób na wybranie najlepszego geocode, który działa przez większość/cały czas?

* edit trochę więcej informacji - kiedy mogę umieścić adres pełniejszego pierwszy wiersz adresu jest ignorowana i geocoder przeskakuje na inny, ale dokładny, adres, który jest centralna ulica znajduje się w dodatkowej linii dodano do adresu. W tym przykładzie wybrał Castle Street w środku llangollen, pozornie lekceważąc Llantysilio.

Edycja przez kdgregory: oto dwa wnioski API że użyłem (brakujący klucz API nie wydaje się być problemem):

http://maps.google.com/maps/geo?q=Llantysilio,+Denbighshire,+UK&sensor=false&output=xml 

http://maps.google.com/maps/geo?q=Llantysilio,Llangollen,++Denbighshire,+UK&sensor=false&output=xml 
+0

Naprawdę? Ponieważ po wklejeniu tych adresów do Map Google otrzymujesz tę samą lokalizację. Byłbym bardzo zaskoczony, gdyby ich internetowe mapy używały innego silnika geokodowania. Być może masz różnicę w pisowni w swoich prawdziwych danych? – kdgregory

+0

Tak, naprawdę - wiem - to dziwne, że się różnią, ale sprawdziłem kilka różnych lokalizacji. Spróbuj także goathland, (whitby,) north yorkshire, uk – wheresrhys

+0

Interesujące: Zbudowałem dwa żądania API, i masz rację, wychodzą z różnymi wynikami. Dłuższa kwerenda zwraca wyniki w dół do arterii, a krótsza nie. Bardziej interesujące jest to, że kiedy sprawdzam link z Google Maps, również jest inny. – kdgregory

Odpowiedz

0

W końcu doszedłem do wniosku, że istnieje zbyt wiele dziwnych blips w konsystencji adresowej z Google za geokodowania usługa w Wielkiej Brytanii, ale w końcu udało się znaleźć sposób korzystania z kodów pocztowych zamiast, która jest znacznie bardziej dokładny: how it's done

0

geocode response.Placemark [0] poprzez GMap możesz sprawdź, co masz, i weź poziom lub spróbuj ponownie. Wybrałem domyślną w zamówieniu

place.AddressDetails.Country.AdministrativeArea.Locality.LocalityName 
place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName 
place.AddressDetails.Country.CountryName 

Może być bardziej logicznie nazwane, jak widać powyżej. gmaps 3 działa nieco niekompatybilny z v2.

0

Możesz spróbować bardzo brzydkiego hacka, który polega na geokodowaniu twojego pełnego adresu i wszystkich podzbiorów słów zawartych w twoim adresie, otrzymujesz wiele geokodów, których używasz do uzyskania adresów powiązanych z nimi za pomocą narzędzia do odwrotnego geokodowania. Gdy masz już wiele adresów, porównaj je z tym, który dałeś pierwszy, a następnie weź najdokładniejszy kod ... Wiele próśb, wiele iteracji rośnie wraz z każdym słowem, które dodajesz do swojego adresu, dobrze brzydka praca, ale może fajnie by poczynić pewne statystyki ^^

1

To chyba dobrze, aby pamiętać, że Google nie wynika specyfikacje xal, ale raczej realizuje je w podgrupie.

Więc oznacza to, że nie muszą być w stanie to zrobić:

place.AddressDetails.Country.AdministrativeArea.Locality.LocalityName 
place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName 
place.AddressDetails.Country.CountryName 

Ponieważ kraj i podrejon mogą być dostarczone podczas gdy obszar administracyjny nie jest.

Dane, które są zwracane, są identyfikowane za pomocą wskaźnika dokładności, który daje względny obraz tego, czego można się spodziewać po danych. Możesz więc przechowywać obiekty i odcinać części pełnego adresu używając tej zmiennej i próbować geokodować w taki sposób - Nie jest to jednak zalecane.

Zazwyczaj pełny adres jest (bez ulicy) jest dobrym sposobem na znalezienie ogólnej lokalizacji. Możesz użyć niektórych z logiki ważonej preferencji, którą zapewnia Google, aby zawęzić adres.

E.g. Użyj setViewPort lub setCountryCode, aby zwiększyć dokładność wyszukiwania.

Pamiętaj, że geokodowanie nie jest nauką. Nie można spodziewać się spójnych wyników.

+0

Na przykład dla "Mississippi River, Minnesota, USA" Google udostępnia tylko place.AddressDetails.Accuracy = 0; place.AddressDetails.AddressLine = ["Mississippi"]; Brak informacji o kraju – mems

4

Musisz interpretować dokładność mojego przyjaciela. Zwykle są 2 części dokładności, najpierw macthing adresu. Druga część to ważna część. Możesz geokodować coś do poziomu dokładności w Stanach Zjednoczonych lub na poziomie miasta, centymetr zip, poziom interpolacji ulicy lub rzeczywisty poziom precyzji paczek. Pierwszy przykład ma 4, a drugi 9. Dla tej usługi wyższe jest lepsze.

Wartość dokładności Opis 0 Nieznana dokładność. 1 Dokładność na poziomie kraju. 2 Dokładność poziomu regionu (województwa, województwa itp.). 3 Dokładność poziomu podregionu (powiatu, gminy itp.). 4 Dokładność poziomu miasta (miasta, wioski). 5 Kod pocztowy (dokładność kodu pocztowego) dokładność poziomu. 6 Dokładność na poziomie ulicy. 7 Dokładność na poziomie skrzyżowania. 8 Dokładność poziomu adresu. 9 Premise (nazwa budynku, nazwa nieruchomości, centrum handlowe itp.) Dokładność poziomu.

Powiązane problemy