ข้อมูลรหัสไปรษณีย์เป็นอิสระจากรัฐบาลต่างๆ ทั่วโลก แต่องค์กรจำนวนมาก ไม่ว่าจะมีชื่อเสียงหรือไม่ก็ตาม ต้องการเรียกเก็บเงินจากมัน
โปรเจ็กต์นี้เป็นโซลูชันอัตโนมัติสำหรับการดึงและเปรียบเทียบข้อมูลรหัสไปรษณีย์ของสหรัฐอเมริกาและทั่วโลก
ในปี 2011 เดิมทีเราได้ดึงข้อมูลการสำรวจสำมะโนประชากรของสหรัฐอเมริกาทั้งหมดที่เราพบ แยกวิเคราะห์ และส่งออกเป็นไฟล์ .csv จำนวน 3 ไฟล์ ต่อมา เราได้เขียนงานคราด 3 งานเพื่อทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ
ในปี 2017 เราเริ่มใช้ข้อมูล GeoNames ซึ่งได้รับอนุญาตภายใต้ Creative Commons เราขอขอบคุณ GeoNames สำหรับการแบ่งปัน และขอแนะนำให้คุณเยี่ยมชมเว็บไซต์ของพวกเขาและสนับสนุนงานของพวกเขา
ในปี 2018 เราได้ปรับโครงสร้างโปรเจ็กต์ใหม่และทำให้เป็น Ruby gem พร้อมด้วยบรรทัดคำสั่งที่สามารถเรียกใช้งานได้เพื่อทำให้กระบวนการนี้เป็นแบบอัตโนมัติ
free_zipcode_data
- ซึ่งทำให้กระบวนการดาวน์โหลดและประมวลผลข้อมูลรหัสไปรษณีย์จาก GeoNames เป็นแบบอัตโนมัติ ไม่ใช่ทุกประเทศที่ได้รับการพิจารณา โปรดตรวจสอบ GeoNames เพื่อดูรายการไฟล์ zip ของประเทศที่รองรับรหัสไปรษณีย์แต่ละรหัสมีความสัมพันธ์กับพิกัดโดยประมาณหรือจุดศูนย์กลางไปรษณีย์ ละติจูดและลองจิจูด หากเป็นไปได้ ประเทศ เขต/จังหวัด รัฐ และชุมชนก็มีความสัมพันธ์กันเช่นกัน
ดูไฟล์ GeoNames readme.txt สำหรับข้อมูลเพิ่มเติม
ก่อนอื่นคุณต้องติดตั้ง Ruby และ Rubygems แม้ว่านั่นจะไม่ใช่งานที่ยาก แต่ก็อยู่นอกเหนือขอบเขตของ README นี้ เครื่องมือค้นหาที่คุณเลือกจะช่วยค้นหาวิธีการทำเช่นนี้ เมื่อคุณทำเสร็จแล้ว:
$ gem install free_zipcode_data
กำหนดรหัสประเทศ 2 ตัวอักษรสำหรับประเทศที่คุณต้องการใช้ใน 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 License ซึ่งยกมาจาก GeoNames
ดู CHANGELOG สำหรับประวัติและข้อผิดพลาดเพิ่มเติม