Ho appena iniziato con GeoPy e sono stato eseguendo alcuni test per determinare la qualità dei diversi geocodificatori disponibili. Ho notato che il geocodificatore di Bing è più preciso di quello di Google (almeno per i miei scopi), ma invece di restituire un codice postale, Bing restituisce <built-in function zip>
anziché il codice postale. Qualche idea sul perché / modi per correggere questo problema?
Ecco il mio codice di prova:
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)
Il mio output è:
<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 sembra essere più coerente, restituendo solo un singolo risultato corretto piuttosto che due risultati. Lunico problema è che Bing non sembra voler restituire un codice postale, per qualche motivo, piuttosto restituisce una stringa contenente lindirizzo e <built-in function zip>
.
Commenti
Risposta
Non sono sicuro che questo possa aiutare, ma potresti utilizzare un provider di verifica dellindirizzo che includa la geocodifica. Sono uno sviluppatore di SmartyStreets, proprio un fornitore di questo tipo. Dai unocchiata a questa risposta JSON di esempio (scorri verso il basso).
Google e Bing sono ottimi servizi di approssimazione degli indirizzi, ma potresti incontrare problemi con i loro contratti di licenza a seconda di ciò che stai cercando di ottenere. Offriamo un piano gratuito per sempre per i clienti a basso utilizzo ed è assolutamente gratuito per le organizzazioni non profit.
Commenti
- Ehi, sembra fantastico, penso che ' proverò a fare un tentativo. ' hai ragione, è meglio in termini di accordi di licenza per il mio progetto. Grazie.
- Per curiosità, da dove provengono i tuoi dati?
- I nostri dati provengono dallUSPS, di cui SmartyStreets è un licenziatario certificato CASS. en.wikipedia.org/wiki/Coding_Accuracy_Support_System
geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle')
restituisce laddess completo di un codice postale? PS, non