Método para converter Zipcodes em Endereços

0

No local de trabalho da minha mãe, ela geralmente acessa o banco de dados e extrai números para formar relatórios. Desde a seleção de dados do Oracle até a geração de relatórios no formato Excel, ela encontrou esse problema onde recebeu códigos postais e precisa convertê-los em endereços (todos dentro dos EUA).

Está chegando a um ponto em que pode levar um dia inteiro procurando endereços manualmente no site da UPS, então ela me perguntou se havia algo que eu pudesse fazer sobre isso. Então eu procurei por alguma ferramenta on-line para converter códigos postais em endereços para arquivos CSV do Excel e encontrei uma ferramenta do Dino, mas ela não era consistente.

Existem outras ferramentas existentes para converter o zip em endereços? Se não, talvez eu possa criar algum tipo de ferramenta rápida. O que nos leva à pergunta: o que é mais fácil e mais simples? Para converter códigos zip no final do banco de dados ou para criar uma ferramenta que permita arquivos e entradas do excel e carregue os endereços automaticamente no arquivo excel.

    
por krikara 18.07.2013 / 00:27

3 respostas

1

O Serviço Postal dos Estados Unidos (USPS) fornece APIs da web para fazer isso de maneira mais automatizada do que o uso manual do site. APIs das Ferramentas da Web do USPS

    
por 18.07.2013 / 02:57
1

Use o PowerShell e o link para converter códigos postais em endereços completos

Se você abrir um URL como http://zipasaur.us/zip/94105 , o site fornecerá imediatamente um arquivo .JSON para download que contém todos os detalhes do endereço. Mas você não quer abrir um navegador, preencher o CEP correto, baixar, abrir e converter o arquivo todas as vezes.

Aqui se torna o PowerShell muito útil. O script abaixo lê em um CSV de códigos postais, pede zipasaur.us para converter os dados, converte e produz todos os detalhes novamente como CSV. Você pode facilmente criar e abrir arquivos CSV com o Excel.

Como configurar

  1. Abra um novo arquivo de texto e salve este código como convert.ps1

    $url = "http://zipasaur.us/zip"
    $list = Get-Content(".\input.csv")
    $web = New-Object System.Net.WebClient
    
    ForEach ($zip in $list ) { 
      $file = $web.DownloadData("$url/$zip")  
      $string = [System.Text.Encoding]::ASCII.GetString($file) 
      $array = $string  -split '[,:]' | foreach {$_ -Replace '[}""{]',"" }
      $newfile += $array[1] + ',' + $array[7] + ',' + $array[11] + "'n"
    } 
    $newfile | out-file  ".\output.csv"
    
  2. Crie uma lista de entrada de CEPs que você deseja converter. Salve como input.csv na mesma pasta como seu script .ps1

  3. Execute o script do PowerShell. Um novo arquivo output.csv no mesmo local aparecerá

E se eu quiser mais do que apenas o nome da cidade e do estado?

zipasaur.us também fornece informações sobre latitude, longitude, atalho de estado e nome do condado. Por exemplo, esta linha de código adicionará todos os detalhes.

$newfile += $array[1] + ',' + $array[3] + ',' + $array[5] + ',' + $array[7] + ',' + $array[9] + ',' + $array[11] + ',' + $array[13] + "'n"
$array[0]  = code                $array[1]  = 94105
$array[2]  = lat                 $array[3]  = 37.7864
$array[4]  = lng                 $array[5]  = -122.3892
$array[6]  = city                $array[7]  = San Francisco
$array[8]  = state               $array[9]  = CA
$array[10] = state_full          $array[11] = California
$array[12] = county              $array[13] = San Francisco
    
por 18.07.2013 / 00:37
0

Exporte uma lista de códigos postais do Excel como .csv e execute uma consulta para cada um desses códigos postais. Os resultados podem ser formatados como .csv e importados de volta para o Excel.

Aqui está um exemplo bruto com o bash wget e sed demonstrando saída .csv:

$ sh zip.sh 94105 94506 94706  94906 44123
94105; San Francisco, CA;
94506; Danville, CA;
94706; Albany, CA;
94906;  null, null;
44123; Euclid, OH;
$ cat zip.sh
#!/bin/sh

# code="94105"
# lat="37.7864"
# lng="-122.3892"
# city="San Francisco"
# state="CA"
# state_full="California"
# county="San Francisco"

while [ $# -gt 0 ]; do
    unset code
    unset city
    unset state
    eval '
        wget --quiet http://zipasaur.us/zip/$1 -O- |\
        sed -E '
            s/","/"\n/g;
            s/":"/="/g;
            s/\{"//;
            s/"\}/"/;'
        ' 2>/dev/null
    if [ "x$code" != "x" ]; then
        echo "$code; $city, $state; "
    else
        echo    "$1;  null, null; "
    fi
    shift
done
    
por 18.07.2013 / 03:58