Postleitzahlendaten sind von den verschiedenen Regierungen auf der ganzen Welt kostenlos erhältlich. Dennoch möchten so viele Organisationen, ob seriös oder nicht, dafür Geld verlangen.
Bei diesem Projekt handelt es sich um eine automatisierte Lösung zum Abrufen und Zusammenstellen von US-amerikanischen und weltweiten Postleitzahldaten.
Im Jahr 2011 haben wir ursprünglich alle US-Volkszählungsdaten, die wir finden konnten, abgerufen, analysiert und in drei CSV-Dateien exportiert. Später haben wir drei Rake-Aufgaben geschrieben, um diesen Prozess zu automatisieren.
Im Jahr 2017 begannen wir mit der Nutzung von GeoNames-Daten, die unter der Creative Commons-Lizenz stehen. Wir danken GeoNames für den Austausch und bitten Sie dringend, ihre Website zu besuchen und ihre Arbeit zu unterstützen.
Im Jahr 2018 haben wir das Projekt umgestaltet und es in ein Ruby-Gem mit einer ausführbaren Befehlszeilendatei zur Automatisierung dieses Prozesses umgewandelt.
free_zipcode_data
– die den Prozess des Herunterladens und Verarbeitens der Postleitzahldaten von GeoNames automatisiert. Es werden nicht alle Länder berücksichtigt. Bitte überprüfen Sie GeoNames, um eine Liste der unterstützten Länder-ZIP-Dateien anzuzeigen.Jede Postleitzahl ist mit geschätzten oder Postleitzahl-Schwerpunkt-, Breiten- und Längenkoordinaten korreliert. Gegebenenfalls werden auch Land, Landkreis/Provinz, Staat und Gemeinde korreliert.
Weitere Informationen finden Sie in der GeoNames-Datei readme.txt.
Zuerst müssen Sie Ruby und Rubygems installieren. Obwohl dies keine schwierige Aufgabe ist, würde sie den Rahmen dieser README-Datei sprengen. Eine Suchmaschine Ihrer Wahl hilft dabei, herauszufinden, wie das geht. Sobald Sie das getan haben:
$ gem install free_zipcode_data
Bestimmen Sie die 2-Buchstaben-Ländercodes für die Länder, die Sie bei GeoNames verwenden möchten, oder geben Sie kein Land an, um alle Postleitzahlen für alle verfügbaren Länder zu erhalten ...
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
Laden Sie alle US-Postleitzahlen herunter und verarbeiten Sie sie :
$ free_zipcode_data --work-dir /tmp/work_dir --country US --generate-files
Laden Sie Postleitzahlen für alle verfügbaren Länder herunter und verarbeiten Sie sie :
$ free_zipcode_data --work-dir /tmp/work_dir --generate-files
Die Rake-Aufgaben kaskadieren von unten nach oben. Wenn Sie also rake data:populate_db
ausführen, wird automatisch rake data:build
aufgerufen, wenn die .csv-Dateien fehlen, und rake data:download
wird aufgerufen, wenn die .zip-Dateien fehlen.
Die ausführbare Datei generiert eine SQLite3-Datenbank im angegebenen Verzeichnis --work-dir
generiert jedoch standardmäßig nicht die .csv
Dateien. Geben Sie --generate-files
an, wenn Sie diese auch möchten.
Standardmäßig werden die Tabellen wie folgt benannt. Um die Tabellennamen zu überschreiben, sehen Sie sich die Befehlszeilenoptionen oben an.
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 )
)
Sowohl die Geocodes lat
als auch lon
werden für jeden Postleitzahlendatensatz ausgefüllt.
Die Postleitzahldaten sind unter einer Creative Commons Attribution 3.0 Unported License lizenziert, die von GeoNames übernommen wird.
Weitere Informationen zum Verlauf und Errat finden Sie im CHANGELOG.