Jeg er akkurat i gang med GeoPy og har vært kjører noen tester for å bestemme kvaliteten på de forskjellige tilgjengelige geokoderne. Jeg har lagt merke til at Bings geokoder er mer nøyaktig enn Googles (for mine formål, i det minste), men i stedet for å returnere et postnummer, returnerer Bing <built-in function zip>
i stedet for postnummeret. Noen tanker om hvorfor / måter å rette på dette?
Her er testkoden min:
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)
Min produksjon er:
<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 ser ut til å være mer konsistent, og gir bare et enkelt riktig resultat i stedet for to resultater. Det eneste problemet er at Bing ikke ser ut til å returnere et postnummer, av en eller annen grunn, men returnerer en streng som inneholder adressen og <built-in function zip>
.
Kommentarer
Svar
Ikke sikker på om dette vil hjelpe, men du kan bruke en adressebekreftelsesleverandør som inkluderer geokoding. Jeg er utvikler hos SmartyStreets, nettopp en slik leverandør. Sjekk ut dette eksempel på JSON-svar (bla nedover).
Google og Bing er gode adressetilnærmingstjenester, men du kan komme i problemer med lisensavtalene, avhengig av hva du prøver å oppnå. Vi tilbyr en gratis evig plan for kunder med lite bruk, og det er helt gratis for ideelle organisasjoner.
Kommentarer
- Hei, dette ser ut flott, jeg tror jeg ' skal prøve å gi dette en sjanse. Du ' har rett, dette er bedre når det gjelder lisensavtaler for prosjektet mitt. Takk.
- Av nysgjerrighet, hvor kommer dataene dine fra?
- Dataene våre kommer fra USPS, som SmartyStreets er en CASS-sertifisert lisensinnehaver med. no.wikipedia.org/wiki/Coding_Accuracy_Support_System
geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle')
returnerer tillegget komplett med et postnummer? PS, ikke