Am început să folosesc GeoPy și am fost rularea unor teste pentru a determina calitatea diferitelor geocodificatoare disponibile. Am observat că geocodorul Bing este mai precis decât Google (cel puțin în scopurile mele), dar în loc să returneze un cod poștal, Bing returnează <built-in function zip>
mai degrabă decât codul poștal. Ai vreo idee despre de ce / modalități de a corecta acest lucru?
Iată codul meu de testare:
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)
Rezultatul meu este:
<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 pare să fie mai consistent, returnând doar un singur rezultat corect, mai degrabă decât două rezultate. Singura problemă este că Bing nu pare să dorească să returneze un cod poștal, din anumite motive, mai degrabă returnează un șir care conține adresa și <built-in function zip>
.
Comentarii
Răspuns
Nu sunt sigur dacă acest lucru vă va ajuta, dar puteți utiliza un furnizor de verificare a adresei care include geocodificare. Sunt „dezvoltator la SmartyStreets, doar un astfel de furnizor. Vedeți acest exemplu de răspuns JSON (derulați în jos).
Google și Bing sunt servicii excelente de aproximare a adreselor, dar aveți probleme cu acordurile lor de licență, în funcție de ceea ce încercați să realizați. Oferim un plan gratuit pentru totdeauna pentru clienții cu utilizare redusă și este absolut gratuit pentru organizații non-profit.
Comentarii
- Hei, arată grozav, cred că ' voi încerca să încerc asta. ' ai dreptate, acest lucru este mai bun în ceea ce privește acordurile de licențiere pentru proiectul meu. Mulțumesc.
- Din curiozitate, de unde provin datele dvs.?
- Datele noastre provin de la USPS, cu care SmartyStreets este licențiat certificat CASS. en.wikipedia.org/wiki/Coding_Accuracy_Support_System
geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle')
returnează suplimentul completat cu un cod poștal? PS, nu