Acabo de comenzar con GeoPy y he estado ejecutando algunas pruebas para determinar la calidad de los diferentes geocodificadores disponibles. He notado que el geocodificador de Bing es más preciso que el de Google (para mis propósitos, al menos), pero en lugar de devolver un código postal, Bing devuelve <built-in function zip>
en lugar del código postal. ¿Alguna idea sobre por qué / formas de corregir esto?
Aquí está mi código de prueba:
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)
Mi salida es:
<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 parece ser más consistente, solo devuelve un único resultado correcto en lugar de dos resultados. El único problema es que Bing no parece querer devolver un código postal, por alguna razón, sino que devuelve una cadena que contiene la dirección y <built-in function zip>
.
Comentarios
Respuesta
No estoy seguro de si esto ayudaría, pero podría usar un proveedor de verificación de direcciones que incluya codificación geográfica. Soy un desarrollador de SmartyStreets, un proveedor de este tipo. Consulte este respuesta JSON de ejemplo (desplácese hacia abajo).
Google y Bing son excelentes servicios de aproximación de direcciones, pero puede tener problemas con sus acuerdos de licencia dependiendo de lo que esté tratando de lograr. Ofrecemos un plan gratuito para siempre para los clientes con poco uso, y es absolutamente gratis para las organizaciones sin fines de lucro.
Comentarios
- Hola, esto parece genial, creo que ' intentaré probar esto. Tienes ' razón, esto es mejor en términos de acuerdos de licencia por mi proyecto. Gracias.
- Por curiosidad, ¿de dónde provienen sus datos?
- Nuestros datos provienen del USPS, con el cual SmartyStreets es un Licenciatario certificado por CASS. en.wikipedia.org/wiki/Coding_Accuracy_Support_System
geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle')
devuelve la dirección completa con un código postal? PS, no