بيانات الرمز البريدي مجانية من مختلف الحكومات حول العالم. ومع ذلك، فإن العديد من المنظمات، سواء كانت ذات سمعة طيبة أم لا، ترغب في تحصيل أموال مقابل ذلك.
يعد هذا المشروع حلاً آليًا لاسترداد ومقارنة بيانات الرمز البريدي الأمريكي والعالمي.
في عام 2011، قمنا في الأصل بسحب جميع بيانات التعداد السكاني للولايات المتحدة التي تمكنا من العثور عليها، وقمنا بتحليلها وتصديرها إلى 3 ملفات بتنسيق csv. لاحقًا، كتبنا 3 مهام أشعل النار لأتمتة هذه العملية.
في عام 2017، بدأنا في استخدام بيانات GeoNames، المرخصة بموجب المشاع الإبداعي. نحن ممتنون لشركة GeoNames لمشاركتها، ونحثكم على زيارة موقعهم ودعم عملهم.
في عام 2018، قمنا بإعادة هيكلة المشروع وتحويله إلى جوهرة روبي مع سطر أوامر قابل للتنفيذ لأتمتة هذه العملية.
free_zipcode_data
- الذي يعمل على أتمتة عملية تنزيل ومعالجة بيانات الرمز البريدي من GeoNames. لا يتم حساب جميع البلدان. برجاء التحقق من GeoNames لرؤية قائمة بالملفات المضغوطة للدولة المدعومة.يرتبط كل رمز بريدي بإحداثيات خطوط الطول والعرض المقدرة أو المركزية البريدية. حيثما أمكن، يتم أيضًا ربط البلد والمقاطعة/المقاطعة والولاية والمجتمع.
راجع ملف GeoNames readme.txt لمزيد من المعلومات.
أولاً، تحتاج إلى تثبيت Ruby وRubygems. على الرغم من أن هذه ليست مهمة صعبة، إلا أنها تقع خارج نطاق هذا الملف التمهيدي. سيساعدك محرك البحث الذي تختاره في اكتشاف كيفية القيام بذلك. بمجرد القيام بذلك:
$ gem install free_zipcode_data
حدد رموز البلدان المكونة من حرفين للبلدان التي تريد استخدامها في GeoNames، أو لا تحدد بلدًا للحصول على جميع الرموز البريدية لجميع البلدان المتاحة...
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
قم بتنزيل ومعالجة جميع الرموز البريدية الأمريكية :
$ free_zipcode_data --work-dir /tmp/work_dir --country US --generate-files
قم بتنزيل ومعالجة الرموز البريدية لجميع البلدان المتاحة :
$ free_zipcode_data --work-dir /tmp/work_dir --generate-files
تتوالى مهام أشعل النار، من الأسفل إلى الأعلى. لذا، إذا قمت بتشغيل rake data:populate_db
، فسوف يستدعي تلقائيًا rake data:build
إذا كانت ملفات .csv مفقودة، مما سيستدعي rake data:download
إذا كانت ملفات .zip مفقودة.
سيقوم الملف القابل للتنفيذ بإنشاء قاعدة بيانات SQLite3 في الدليل المحدد --work-dir
ولكنه لن يقوم بإنشاء ملفات .csv
بشكل افتراضي. حدد --generate-files
إذا كنت تريدها أيضًا.
بشكل افتراضي، سيتم تسمية الجداول على النحو التالي. لتجاوز أسماء الجداول، راجع خيارات سطر الأوامر أعلاه.
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 )
)
تتم تعبئة كل من lat
lon
، والرموز الجغرافية، لكل سجل الرمز البريدي.
تم ترخيص بيانات الرمز البريدي بموجب ترخيص Creative Commons Attribution 3.0 Unported، المُرحل من GeoNames.
راجع سجل التغيير لمزيد من التاريخ والأخطاء.