Właśnie zaczynam pracę z GeoPy i już przeprowadzam testy w celu określenia jakości różnych dostępnych geokoderów. Zauważyłem, że geokoder Bing jest dokładniejszy niż Google (przynajmniej do moich celów), ale zamiast zwracać kod pocztowy, Bing zwraca <built-in function zip>
zamiast kodu pocztowego. Jakieś przemyślenia, dlaczego / jak to naprawić?
Oto mój kod testowy:
from geopy import geocoders g = geocoders.Google() b = geocoders.Bing("<DEV KEY HERE>") services = [g, b] def search_list(addylist): for address in addylist: for x in services: for place, (lat, lng) in x.geocode(address, exactly_one=False): print "%s: %s: %.9f, %.9f \n" % (x, place, lat, lng) addy1 = "513 N 36th Ave , Seattle" addy2 = "121 S First Street , La Conner" addy3 = "854 NE 58th St, Seattle" addylist = [addy1, addy2, addy3] search_list(addylist)
Moje wyniki to:
<geopy.geocoders.google.Google object at 0x18e75d0>: 513 36th Ave, Seattle, WA 98122, USA: 47.606811900, -122.287247300 <geopy.geocoders.google.Google object at 0x18e75d0>: 513 N 36th St, Seattle, WA 98103, USA: 47.651385400, -122.351573800 <geopy.geocoders.bing.Bing object at 0x18e76d0>: 513 N 36TH St, Seattle, WA <built-in function zip>, United States: 47.651340485, -122.351692200 <geopy.geocoders.google.Google object at 0x18e75d0>: 121 1st St, La Conner, WA 98257, USA: 48.391576600, -122.496045800 <geopy.geocoders.google.Google object at 0x18e75d0>: 121 N 1st St, La Conner, WA 98257, USA: 48.394719800, -122.494525700 <geopy.geocoders.bing.Bing object at 0x18e76d0>: 121 S 1ST St, La Conner, WA <built-in function zip>, United States: 48.391513824, -122.495391846 <geopy.geocoders.google.Google object at 0x18e75d0>: 854 NE 58th St, Seattle, WA 98105, USA: 47.670977000, -122.317815000 <geopy.geocoders.bing.Bing object at 0x18e76d0>: 854 NE 58TH St, Seattle, WA <built-in function zip>, United States: 47.670978546, -122.317817688
Bing wydaje się być bardziej spójny, zwracając tylko jeden poprawny wynik, a nie dwa wyniki. Jedynym problemem jest to, że z jakiegoś powodu Bing nie chce zwrócić kodu pocztowego, a raczej zwraca ciąg zawierający adres i <built-in function zip>
.
Komentarze
Odpowiedź
Nie jestem pewien, czy to pomogłoby, ale możesz skorzystać z dostawcy weryfikacji adresu, który obejmuje geokodowanie. Jestem programistą w SmartyStreets, właśnie takim dostawcą. Zobacz ten przykład odpowiedzi JSON (przewiń w dół).
Google i Bing to świetne usługi przybliżania adresów, ale możesz napotkać problemy z ich umowami licencyjnymi w zależności od tego, co próbujesz osiągnąć. Oferujemy darmowy plan na zawsze dla klientów o niskim poziomie wykorzystania, który jest całkowicie bezpłatny dla organizacji non-profit.
Komentarze
- Hej, to wygląda świetnie, myślę, że ' spróbuję tego spróbować. ' masz prawo, to jest lepsze pod względem umów licencyjnych za mój projekt. Dzięki.
- Z ciekawości, skąd pochodzą twoje dane?
- Nasze dane pochodzą z USPS, z którym SmartyStreets jest licencjobiorcą z certyfikatem CASS. en.wikipedia.org/wiki/Coding_Accuracy_Support_System
geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle')
zwraca adres w komplecie z kodem pocztowym? PS, a nie