Untuk proyek satu kali, saya perlu membuat geocode beberapa ribu alamat. Di masa lalu saya telah menggunakan berbagai sumber daya online untuk hal semacam ini (misalnya, Google Maps API), tetapi alamat yang saya kerjakan harus dirahasiakan - yang berarti tidak mengirimnya melalui Internet, kecuali ada zat besi - Jaminan privasi. Opsi apa lagi yang saya miliki?
geocoding
united-states
privacy
Matt Parker
sumber
sumber
Jawaban:
Lihatlah
Geocoder::US 2.0
, penerus geocoder.us:http://github.com/geocommons/geocoder
Ini adalah port ruby dari modul perl oleh penulis yang sama.
sumber
Jika menggunakan Google Geocoding API atau sumber daring lain adalah pilihan Anda daripada pilihan lokal, saya sarankan untuk melihat ke dalam Proyek Tor (mudah dipasang melalui bundel yang disebut 'the Vidalia Bundle').
Seiring dengan injeksi alamat acak dan menggunakan ssl (https) untuk mengenkripsi komunikasi ke titik akhir mereka (pastikan Anda juga melakukan ini), saya tidak bisa memikirkan cara yang lebih aman untuk melakukan geocode dari jarak jauh. Layanan geocoding apa pun yang Anda gunakan tidak akan pernah dapat mengidentifikasi dari mana permintaan akhirnya berasal, dan dengan https, tidak ada orang lain yang akan melakukannya. Catatan: jangan gunakan layanan geocoding yang memerlukan kunci api untuk ini, atau Anda tidak akan lagi anonim. (Google tidak memerlukan kunci api lagi).
Sisi 'manfaat' dari prosedur ini adalah bahwa Anda tidak akan lagi dibatasi untuk sejumlah permintaan geocoding, karena permintaan Anda akan terlihat seperti berasal dari beberapa alamat ip. Namun, saya tidak merekomendasikan atau mendukung penyalahgunaan API gratis yang indah ini! Nilai masih akan terbatas jika API membatasi laju (meskipun kecepatan transmisi menggunakan Tor sedikit lebih lambat daripada menghubungkan langsung).
Studi kasus dengan Python - Setelah Anda menginstal Vidalia Bundle dan menjalankan proxy pada 127.0.0.1:8118 (default), dengan Python 2.7 atau lebih tinggi, Anda dapat mengatur proxy https urllib2 menggunakan:
Perhatikan bahwa proksi urllib2 tidak berfungsi dengan https hingga setidaknya Python 2.7 atau lebih, jadi metode ini hanya berfungsi dengan versi Python terbaru. Pastikan Anda memiliki 'https' (bukan 'http') di kedua tempat dalam contoh di atas. Saya hanya mengujinya dengan Python 2.7.1.
Vidalia mengubah identitas / asal alamat IP semula setiap 10 menit, tetapi jika Anda mengalami tingkat kelambatan atau masalah lain (kuota melebihi kesalahan), atau jika Anda terutama paranoid dan ingin mengubah identitas Anda lebih sering, Anda dapat mengubah identitas Tor Anda menggunakan kode python di sini (sedikit dimodifikasi di bawah). Anda harus mengubah kata sandi Tor menjadi yang statis (daripada yang dibuat secara acak) dengan memasukkan pengaturan Vidalia. Mungkin juga perlu me-restart Vidalia setelah semua perubahan.
sumber
Salah satu opsi adalah menggunakan Geo-Coder-US , yang merupakan modul Perl open-source yang menggunakan data Tiger / Line Sensus AS untuk melakukan geocode. Saya belum menggunakannya secara pribadi, tetapi terlihat sangat bagus. Tautan di atas mencakup ikhtisar yang bagus dan tautan ke versi yang sudah memiliki file Sensus yang diperlukan.
sumber
Pustaka Geokit dapat menggunakan Google, Yahoo, Geocoder.us, Geocoder.ca, dan Geonames. Itu ditulis dalam Ruby, dan ada juga sister library untuk proyek Ruby on Rails Anda:
http://geokit.rubyforge.org/
Untuk menghemat privasi, Anda dapat menyebarkan kueri ke semua penyedia dengan memisahkannya ke dalam set yang cenderung tidak terkait dengan aktivitas Anda. Anda juga dapat menyuntikkan noise di alamat Anda dengan menambahkan alamat asli dari direktori telepon online. Dan saya sarankan Anda menjalankan skrip ini dari berbagai tempat, seperti warung internet, menggabungkan hasil di akhir.
Satu-satunya cara untuk benar-benar menjaga privasi Anda adalah dengan mengunduh set lengkap data dan menjalankan skrip Anda terhadapnya. Ada sistem Nominatim dari OpenStreetMap. Ini tidak lengkap untuk semua kota, tetapi Anda bisa menggunakannya untuk mengurangi daftar alamat yang dikirim ke penyedia lain.
sumber
Meskipun masih dalam tahap awal pengembangan, http://openaddresses.org/ bertujuan untuk menyediakan basis data terbuka untuk alamat di seluruh dunia, dan layanan geocoding terkait.
Meskipun tidak bersifat pribadi, sifat dari basis data alamat terbuka dapat berarti tersedia untuk diunduh secara keseluruhan (atau setidaknya untuk wilayah tertentu) untuk memungkinkan geocoding offline.
sumber
Bergantung di mana alamat itu berada, Anda bisa mengunduh dan menggunakan fitur OpenStreetMap.
Lihat itu: http://www.openstreetmap.org/
Juga, jika Anda berada di AS, ada proyek TIGER bersama dengan PostGIS TigerGeocoding API. http://svn.osgeo.org/postgis/trunk/extras/tiger_geocoder/
sumber
Saya pikir kode di belakang http://geocoder.us/ tersedia untuk diunduh sedemikian rupa sehingga Anda bisa mendapatkannya dan file data TIGER dan lebih-kurang mengatur instalasi lokal Anda sendiri. Saya tidak melihat itu segera setelah mengunjungi kembali situs itu, tetapi Anda mungkin ingin melihat-lihat sedikit.
sumber
Mengapa tidak menggunakan geocoder yang sama seperti yang Anda gunakan sebelumnya, hapus saja semua meta data lainnya?
Jangan kirim "Lokasi Rahasia; 123 Main Street, Some City", cukup kirim "123 Main Street, Some City"? Alamatnya adalah informasi publik. Hanya saja, jangan beri tahu geocoder bahwa Anda memiliki daftar pangkalan nuklir atau semua lokasi NSA. Hasilnya akan dalam format tabel, Anda kemudian dapat melampirkan kembali semua meta-data rahasia Anda.
sumber
Pencarian di beranda OpenStreetMap adalah sistem yang disebut Nominatim . Anda bisa menyebutnya sebagai layanan geocoding (jika Anda lembut) tetapi semuanya open source, sehingga Anda dapat mengaturnya di server Anda sendiri juga.
Ini menggunakan data OpenStreetMap yang dimuat ke dalam database postGiS. Ini masih relatif baru dan masih dalam pengembangan, dan proses pengaturan dan pemuatan dengan data tidak begitu mudah, dan sangat membutuhkan sumber daya. ... tapi gratis dan terbuka!
sumber
Sebagian besar jawaban mengarahkan Anda ke database lokal. Meskipun itu pasti akan berhasil, Anda juga harus mempertimbangkan apakah gecoding adalah domain inti Anda. (Apakah itu yang Anda kuasai? Jika demikian, Anda mungkin sudah memiliki data yang mereka rekomendasikan. Jika tidak, DAN ANDA INGIN MENJADI, maka Anda harus mengunduh data dan melakukannya secara lokal. Namun, jika Anda hanya perlu untuk menyelesaikan masalah dan tidak ingin menambah jam untuk produksi, masih ada opsi untuk melakukannya melalui API tanpa mengorbankan keamanan.
Pertama, bersikeras HTTPS karena Anda membutuhkan data untuk aman dalam perjalanan ke API dan kemudian dalam perjalanan kembali ke Anda. Kedua, pastikan Anda melakukan permintaan POST alih-alih permintaan GET ke API. Menggunakan POST, Anda hanya meneruskan permintaan URL dengan payload dan satu-satunya hasil yang akan menekan log server adalah fakta bahwa verifikasi alamat dan permintaan geocoding dilakukan pada waktu tertentu dan dari IP tertentu. Baik alamat yang dikirim maupun alamat yang dikembalikan tidak akan disimpan ke disk atau ditulis ke log server. Itu tidak jauh lebih aman dari itu.
Jadi, sementara kotak lokal pasti aman, itu bisa memerlukan banyak pengembangan untuk melakukan apa yang Anda butuhkan. Karena masalah keamanan dapat ditenangkan, Anda mungkin ingin mempertimbangkan (lagi) opsi menggunakan API.
Saya bekerja untuk perusahaan verifikasi alamat yang berspesialisasi dalam geocoding API aman - SmartyStreets .
sumber
Utas lama tetapi layak untuk disebutkan. http://www.tigergeocoder.com/ menggunakan data TIGER 2013, siap menjalankan server Anda sendiri di Amazon EC2 cloud.
sumber
Atur PostGIS Tiger Geocoder di kotak linux lokal Anda. Ini jelas lebih rumit daripada API online, tapi mungkin yang terbaik untuk situasi Anda. Dan itu bisa menskalakan ke jutaan alamat jika diperlukan.
Dengan bantuan playbook yang memungkinkan, pengaturan server di linux jauh lebih mudah dari sebelumnya. Menulis pertanyaan SQL mungkin akan memakan waktu lebih lama jika Anda tidak terbiasa dengan SQL atau PostGIS.
Anda dapat memeriksa pengaturan sistem dan skrip saya untuk detail lebih lanjut. Itu harus mencakup semua informasi yang Anda butuhkan.
sumber