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
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
geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle')
returnerer addess komplet med et postnummer? PS, ikke