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

  • Non riesco a ' riprodurre questo comportamento: vedo i codici postali per ogni voce di esempio. Puoi postare maggiori informazioni sul tuo sistema operativo, versione python, versione geopy, ecc …?
  • A proposito, questa domanda sembra più adatta per stackoverflow.com.
  • I ' m usando Linux Mint 10, Python 2.7, GeoPy 0.94.1. Cosa stai usando? Strano che ' stia lavorando per te, quindi geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle') restituisce laddess completo di un codice postale? PS, non
  • I ' m esegue OS X Lion, Python 2.7.2, GeoPy 0.94.2 (che ' è ciò che PIP ha rimosso). Sì, vedo i codici postali effettivi per i risultati di bing, non < funzione integrata zip >.
  • Ok, sembra che fosse il problema. Ho chiesto a un amico di eseguire il codice e ha ottenuto i tuoi stessi risultati. Sembra che il problema, qualunque cosa fosse, è stato risolto in GeoPy 0.94.2. 0.94.1 disinstallato, 0.94.2 installato e ' è tutto a posto.

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *