Jeg er lige begyndt med GeoPy og har været kører nogle tests for at bestemme kvaliteten af de forskellige tilgængelige geokodere. Jeg har bemærket, at Bings geokoder er mere nøjagtig end Googles (til mine formål, i det mindste), men i stedet for at returnere et postnummer returnerer Bing <built-in function zip> snarere end postnummeret. Har du nogen tanker om hvorfor / måder at rette dette på?

Her er min testkode:

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 output 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 ud til at være mere ensartet og giver kun et enkelt korrekt resultat i stedet for to resultater. Det eneste problem er, at Bing af en eller anden grund ikke synes at ønske at returnere et postnummer, men snarere returnerer en streng, der indeholder adressen og <built-in function zip>.

Kommentarer

  • Jeg kan ' ikke synes at gengive denne adfærd – jeg kan se ZIP-koder for hvert eksempel. Kan du sende flere oplysninger om dit operativsystem, python-version, geopy-version osv …?
  • BTW, dette spørgsmål synes mere velegnet til stackoverflow.com.
  • I ' bruger Linux Mint 10, Python 2.7, GeoPy 0.94.1. Hvad bruger du? Mærkeligt, at det ' fungerer for dig, så geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle') returnerer addess komplet med et postnummer? PS, ikke
  • I ' m kører OS X Lion, Python 2.7.2, GeoPy 0.94.2 (at ' er hvad PIP trak ned). Ja, jeg ser de faktiske ZIP-koder til bing-resultater, ikke < indbygget funktion zip >.
  • Okay, det ser ud til at det var problemet. Jeg fik en ven til at køre koden, og han fik de samme resultater som dig. Det ser ud til, at problemet, uanset hvad det var, blev løst i GeoPy 0.94.2. Afinstalleret 0.94.1, installeret 0.94.2, og det ' er alt godt nu.

Svar

Ikke sikker på, om dette vil hjælpe, men du kan bruge en adresseverifikationsudbyder, der inkluderer geokodning. Jeg er udvikler hos SmartyStreets, bare sådan en udbyder. Tjek dette eksempel på JSON-svar (rul ned).

Google og Bing er gode adressetilnærmelsestjenester, men du kan løbe ind i problemer med deres licensaftaler afhængigt af hvad du prøver at opnå. Vi tilbyder en gratis evig plan for kunder med lavt forbrug, og det er helt gratis for nonprofitorganisationer.

Kommentarer

  • Hej, dette ser ud fantastisk, jeg tror jeg ' vil prøve at give dette en chance. Du ' har ret, dette er bedre med hensyn til licensaftaler til mit projekt. Tak.
  • Af nysgerrighed, hvor kommer dine data fra?
  • Vores data kommer fra USPS, som SmartyStreets er en CASS-certificeret licenstager med. da.wikipedia.org/wiki/Coding_Accuracy_Support_System

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *