Je viens de commencer avec GeoPy et jai été exécuter des tests pour déterminer la qualité des différents géocodeurs disponibles. Jai remarqué que le géocodeur de Bing est plus précis que celui de Google (pour mes besoins, au moins), mais au lieu de renvoyer un code postal, Bing renvoie <built-in function zip>
plutôt que le code postal. Avez-vous une idée de pourquoi / moyens de corriger cela?
Voici mon code de test:
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)
Ma sortie est:
<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 semble être plus cohérent, ne renvoyant quun seul résultat correct plutôt que deux résultats. Le seul problème est que Bing ne semble pas vouloir renvoyer un code postal, pour une raison quelconque, il renvoie plutôt une chaîne contenant ladresse et <built-in function zip>
.
Les commentaires
Réponse
Je ne sais pas si cela pourrait aider, mais vous pouvez utiliser un fournisseur de vérification dadresse qui inclut le géocodage. Je suis un développeur chez SmartyStreets, un tel fournisseur. Découvrez cet exemple de réponse JSON (faites défiler vers le bas).
Google et Bing sont dexcellents services dapproximation dadresse, mais vous pouvez rencontrer des problèmes avec leurs accords de licence en fonction de ce que vous essayez daccomplir. Nous proposons un forfait permanent gratuit pour les clients à faible utilisation, et il est absolument gratuit pour les organisations à but non lucratif.
Commentaires
- Hé, ça semble super, je pense que ' vais essayer de tenter le coup. Vous ' avez raison, cest mieux en termes de contrats de licence pour mon projet. Merci.
- Par curiosité, doù viennent vos données?
- Nos données proviennent de lUSPS, avec lequel SmartyStreets est un licencié certifié CASS. en.wikipedia.org/wiki/Coding_Accuracy_Support_System
geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle')
renvoie ladresse complète avec un code postal? PS, pas