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

  • Não consigo ' não reproduzir este comportamento – vejo CEPs para cada entrada de exemplo. Você pode postar mais informações sobre seu sistema operacional, versão python, versão geopy, etc …?
  • A propósito, esta questão parece mais adequada para stackoverflow.com.
  • I ' m usando Linux Mint 10, Python 2.7, GeoPy 0.94.1. O que você está usando? Estranho que ' esteja funcionando para você, então geocoders.Bing('DEV KEY').geocode('854 NE 58th St, Seattle') retorna o endereço completo com um código postal? PS, não
  • Eu ' estou executando o OS X Lion, Python 2.7.2, GeoPy 0.94.2 (que ' é o que o PIP baixou). Sim, estou vendo os CEPs reais dos resultados do bing, não < função integrada zip >.
  • Ok, parece que esse era o problema. Pedi a um amigo que executou o código e obteve os mesmos resultados que você. Parece que o problema, seja ele qual for, foi resolvido no GeoPy 0.94.2. Desinstalou 0.94.1, instalou 0.94.2 e ' está tudo certo agora.

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

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *