Právě začínám s GeoPy a byly spuštění některých testů k určení kvality různých dostupných geokodérů. Všiml jsem si, že Bingův geokodér je přesnější než Google (alespoň pro mé účely), ale místo vrácení PSČ vrátí Bing <built-in function zip>
spíše než PSČ. Nějaké nápady, proč / způsoby, jak to opravit?
Zde je můj testovací kód:
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)
Můj výstup je:
<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
Zdá se, že Bing je konzistentnější, pouze vrací jediný správný výsledek místo dvou výsledků. Jediným problémem je, že Bing z nějakého důvodu nechce vrátit PSČ, spíše vrátí řetězec obsahující adresu a <built-in function zip>
.
Komentáře
Odpovědět
Nejste si jisti, zda by to pomohlo, ale můžete použít poskytovatele ověření adresy, který zahrnuje geokódování. Jsem vývojář v SmartyStreets, právě takový poskytovatel. Podívejte se na tento příklad odpovědi JSON (přejděte dolů).
Google a Bing jsou skvělé služby přibližování adres, ale můžete narazit na potíže s jejich licenčními smlouvami v závislosti na tom, čeho se snažíte dosáhnout. Nabízíme bezplatný navždy plán pro zákazníky s nízkým využitím a pro neziskové organizace je zcela zdarma.
Komentáře
- Hej, vypadá to Skvělé, myslím, že ' zkusím to zkusit. Máte ' pravdu, je to lepší z hlediska licenčních smluv za můj projekt. Díky.
- Ze zvědavosti, odkud pocházejí vaše data?
- Naše data pocházejí z USPS, kterým je SmartyStreets držitelem licence CASS. en.wikipedia.org/wiki/Coding_Accuracy_Support_System
geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle')
vrací doplněk s PSČ? PS, ne