Estou apenas começando com GeoPy e tenho executando alguns testes para determinar a qualidade dos diferentes geocodificadores disponíveis. Percebi que o geocodificador do Bing é mais preciso do que o do Google (pelo menos para meus propósitos), mas em vez de retornar um código postal, o Bing retorna <built-in function zip>
em vez do código postal. Alguma ideia do motivo / maneiras de corrigir isso?
Aqui está meu código de teste:
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)
Minha saída é:
<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
O Bing parece ser mais consistente, retornando apenas um único resultado correto em vez de dois resultados. O único problema é que o Bing não parece querer retornar um CEP, por algum motivo, em vez disso, ele retorna uma string contendo o endereço e <built-in function zip>
.
Comentários
Resposta
Não tenho certeza se isso ajudaria, mas você pode usar um provedor de verificação de endereço que inclua geocodificação. Sou um desenvolvedor da SmartyStreets, um desses fornecedores. Confira este exemplo de resposta JSON (role para baixo).
Google e Bing são excelentes serviços de aproximação de endereço, mas você pode ter problemas com seus contratos de licença, dependendo do que você está tentando realizar. Oferecemos um plano gratuito para sempre para clientes de baixo uso e é totalmente gratuito para organizações sem fins lucrativos.
Comentários
- Ei, parece que isso ótimo, acho que ' vou tentar dar uma chance. Você ' está certo, isso é melhor em termos de contratos de licença para meu projeto. Obrigado.
- Por curiosidade, de onde vêm seus dados?
- Nossos dados vêm do USPS, com o qual SmartyStreets é um licenciado certificado CASS. en.wikipedia.org/wiki/Coding_Accuracy_Support_System
geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle')
retorna o endereço completo com um código postal? PS, não