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

  • Jeg kan ' ikke ser ut til å gjengi denne oppførselen – jeg ser postnummer for hvert eksempeloppføring. Kan du legge ut mer informasjon om operativsystemet ditt, pythonversjonen, geopy-versjonen osv …?
  • BTW, dette spørsmålet virker mer egnet for stackoverflow.com.
  • I ' bruker Linux Mint 10, Python 2.7, GeoPy 0.94.1. Hva bruker du? Merkelig at det ' fungerer for deg, så geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle') returnerer tillegget komplett med et postnummer? PS, ikke
  • Jeg ' m som kjører OS X Lion, Python 2.7.2, GeoPy 0.94.2 (at ' er hva PIP trakk ned). Ja, jeg ser de faktiske postnummerene for bing-resultater, ikke < innebygd funksjons zip >.
  • Ok, det ser ut som det var problemet. Jeg hadde en venn som kjørte koden, og han fikk de samme resultatene som deg. Det ser ut til at problemet, uansett hva det var, ble løst i GeoPy 0.94.2. Avinstallert 0.94.1, installert 0.94.2, og det ' er bra nå.

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *