Les données de code postal sont gratuites auprès des différents gouvernements du monde entier. Pourtant, de nombreuses organisations, réputées ou non, souhaitent facturer de l’argent pour cela.
Ce projet est une solution automatisée pour récupérer et rassembler des données de codes postaux aux États-Unis et dans le monde entier.
En 2011, nous avons initialement extrait toutes les données du recensement américain que nous avons pu trouver, les avons analysées et les avons exportées dans 3 fichiers .csv. Plus tard, nous avons écrit 3 tâches de rake pour automatiser ce processus.
En 2017, nous avons commencé à utiliser les données GeoNames, sous licence Creative Commons. Nous remercions GeoNames pour son partage et vous invitons à visiter leur site et à soutenir leur travail.
En 2018, nous avons refactorisé le projet et en avons fait un joyau Ruby avec un exécutable en ligne de commande pour automatiser ce processus.
free_zipcode_data
- qui automatise le processus de téléchargement et traite les données de code postal de GeoNames. Tous les pays ne sont pas pris en compte. Veuillez vérifier GeoNames pour voir une liste des fichiers zip de pays pris en charge.Chaque code postal est corrélé avec les coordonnées estimées ou du centre de gravité zip, de la latitude et de la longitude. Le cas échéant, le pays, le comté/province, l’état et la communauté sont également corrélés.
Consultez le fichier readme.txt de GeoNames pour plus d’informations.
Tout d’abord, vous devez installer Ruby et Rubygems. Bien que ce ne soit pas une tâche difficile, cela dépasse le cadre de ce README. Un moteur de recherche de votre choix vous aidera à découvrir comment procéder. Une fois que vous avez fait cela :
$ gem install free_zipcode_data
Déterminez les codes de pays à 2 lettres pour les pays que vous souhaitez utiliser sur GeoNames, ou ne spécifiez pas de pays pour obtenir tous les codes postaux de tous les pays 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
Téléchargez et traitez tous les codes postaux américains :
$ free_zipcode_data --work-dir /tmp/work_dir --country US --generate-files
Téléchargez et traitez les codes postaux pour tous les pays disponibles :
$ free_zipcode_data --work-dir /tmp/work_dir --generate-files
Les tâches de râteau se succèdent, de bas en haut. Donc, si vous exécutez rake data:populate_db
, il appellera automatiquement rake data:build
si les fichiers .csv sont manquants, qui appellera rake data:download
si les fichiers .zip sont manquants.
L'exécutable générera une base de données SQLite3 dans le répertoire spécifié --work-dir
mais il ne générera pas les fichiers .csv
par défaut. Spécifiez --generate-files
si vous les souhaitez également.
Par défaut, les tables seront nommées comme suit. Pour remplacer les noms de table, consultez les options de ligne de commande ci-dessus.
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 )
)
Les géocodes lat
et lon
sont renseignés pour chaque enregistrement de code postal.
Les données de code postal sont sous licence Creative Commons Attribution 3.0 Unported, reprise de GeoNames.
Voir CHANGELOG pour plus d'historique et d'errata.