Los datos de códigos postales son gratuitos para los distintos gobiernos de todo el mundo. Sin embargo, muchas organizaciones, respetables o no, quieren cobrar por ello.
Este proyecto es una solución automatizada para recuperar y cotejar datos de códigos postales de EE. UU. y de todo el mundo.
En 2011, originalmente recopilamos todos los datos del censo de EE. UU. que pudimos encontrar, los analizamos y los exportamos a 3 archivos .csv. Posteriormente, escribimos 3 tareas de rake para automatizar este proceso.
En 2017 comenzamos a utilizar los datos de GeoNames, que tiene licencia Creative Commons. Agradecemos a GeoNames por compartir y lo instamos a visitar su sitio y apoyar su trabajo.
En 2018, refactorizamos el proyecto y lo convertimos en una gema Ruby con un ejecutable de línea de comandos para automatizar este proceso.
free_zipcode_data
, que automatiza el proceso de descarga y procesa los datos del código postal de GeoNames. No se contabilizan todos los países. Consulte GeoNames para ver una lista de archivos zip de países admitidos.Cada código postal está correlacionado con coordenadas estimadas o de centroide postal, latitud y longitud. Cuando corresponda, también se correlacionan el país, el condado/provincia, el estado y la comunidad.
Consulte el archivo readme.txt de GeoNames para obtener más información.
Primero, necesitas instalar Ruby y Rubygems. Aunque no es una tarea difícil, está fuera del alcance de este README. Un motor de búsqueda de su elección le ayudará a descubrir cómo hacerlo. Una vez que hayas hecho eso:
$ gem install free_zipcode_data
Determine los códigos de país de 2 letras para los países que desea usar en GeoNames, o no especifique un país para obtener todos los códigos postales de todos los países disponibles...
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
Descargue y procese todos los códigos postales de EE. UU .:
$ free_zipcode_data --work-dir /tmp/work_dir --country US --generate-files
Descargue y procese códigos postales para todos los países disponibles :
$ free_zipcode_data --work-dir /tmp/work_dir --generate-files
Las tareas del rastrillo se suceden en cascada, de abajo hacia arriba. Entonces, si ejecuta rake data:populate_db
, llamará automáticamente rake data:build
si faltan los archivos .csv, lo que llamará rake data:download
si faltan los archivos .zip.
El ejecutable generará una base de datos SQLite3 en el directorio especificado --work-dir
pero no generará los archivos .csv
de forma predeterminada. Especifique --generate-files
si los desea también.
Por defecto, las tablas se nombrarán de la siguiente manera. Para anular los nombres de las tablas, consulte las opciones de la línea de comando anteriores.
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 )
)
Tanto lat
como lon
, códigos geográficos, se completan para cada registro de código postal.
Los datos del código postal tienen una licencia Creative Commons Attribution 3.0 Unported, transferida de GeoNames.
Consulte CHANGELOG para obtener más historial y erratas.