Os dados do código postal são gratuitos de vários governos ao redor do mundo. No entanto, muitas organizações, respeitáveis ou não, querem cobrar por isso.
Este projeto é uma solução automatizada para recuperar e agrupar dados de códigos postais dos EUA e de todo o mundo.
Em 2011, originalmente retiramos todos os dados do censo dos EUA que pudemos encontrar, analisamos e exportamos em 3 arquivos .csv. Posteriormente, escrevemos 3 tarefas de rake para automatizar esse processo.
Em 2017 começamos a usar dados GeoNames, licenciados sob Creative Commons. Somos gratos à GeoNames por compartilhar e pedimos que você visite o site e apoie seu trabalho.
Em 2018 refatoramos o projeto e o transformamos em uma gem Ruby com um executável de linha de comando para automatizar esse processo.
free_zipcode_data
- que automatiza o processo de download e processamento dos dados do CEP do GeoNames. Nem todos os países são contabilizados. Verifique GeoNames para ver uma lista de arquivos zip de países suportados.Cada código postal é correlacionado com coordenadas estimadas ou zip-centróides, latitude e longitude. Quando aplicável, o país, o condado/província, o estado e a comunidade também estão correlacionados.
Consulte o arquivo readme.txt do GeoNames para obter mais informações.
Primeiro, você precisa instalar Ruby e Rubygems. Embora não seja uma tarefa difícil, está além do escopo deste README. Um mecanismo de busca de sua escolha o ajudará a descobrir como fazer isso. Depois de fazer isso:
$ gem install free_zipcode_data
Determine os códigos de país de 2 letras para os países que deseja usar no GeoNames ou não especifique um país para obter todos os códigos postais de todos os países disponíveis...
Options:
-w, --work-dir= < s > REQUIRED: Specify your work/build directory, where the SQLite and .csv files will be built
-f, --country= < s > Specify the country code for processing, or all countries if not specified
-g, --generate-files Generate CSV files: [counties.csv, states.csv, countries.csv, zipcodes.csv]
-o, --country-tablename= < s > Specify the name for the ` countries ` table (default: countries)
-s, --state-tablename= < s > Specify the name for the ` states ` table (default: states)
-u, --county-tablename= < s > Specify the name for the ` counties ` table (default: counties)
-z, --zipcode-tablename= < s > Specify the name for the ` zipcodes ` table (default: zipcodes)
-c, --clobber Overwrite existing files
-d, --dry-run Do not actually move or copy files
-v, --verbose Be verbose with output
-h, --help Show this message
Baixe e processe todos os códigos postais dos EUA :
$ free_zipcode_data --work-dir /tmp/work_dir --country US --generate-files
Baixe e processe códigos postais para todos os países disponíveis :
$ free_zipcode_data --work-dir /tmp/work_dir --generate-files
As tarefas de rake são cascatas, de baixo para cima. Portanto, se você executar rake data:populate_db
, ele chamará automaticamente rake data:build
se os arquivos .csv estiverem faltando, o que chamará rake data:download
se os arquivos .zip estiverem faltando.
O executável irá gerar um banco de dados SQLite3 no diretório especificado --work-dir
mas não irá gerar os arquivos .csv
por padrão. Especifique --generate-files
se desejar isso também.
Por padrão, as tabelas serão nomeadas da seguinte forma. Para substituir os nomes das tabelas, consulte as opções de linha de comando acima.
create table countries (
id integer not null primary key ,
alpha2 varchar ( 2 ) not null ,
alpha3 varchar ( 3 ),
iso varchar ( 3 ),
name varchar ( 255 ) not null
)
create table states (
id integer not null primary key ,
country_id integer not null ,
abbr varchar ( 2 ) not null ,
name varchar ( 255 )
)
create table counties (
id integer not null primary key ,
state_id integer ,
abbr varchar ( 255 ),
name varchar ( 255 ),
county_seat varchar ( 255 )
)
create table zipcodes (
id integer not null primary key ,
code varchar ( 10 ) not null ,
state_id integer ,
city varchar ( 255 ),
area_code varchar ( 3 ),
lat float,
lon float,
accuracy varchar ( 8 )
)
Os geocódigos lat
e lon
são preenchidos para cada registro de CEP.
Os dados do CEP são licenciados sob uma Licença Creative Commons Attribution 3.0 Unported, transferida da GeoNames.
Veja CHANGELOG para mais histórico e erratas.