Bagaimana saya bisa melakukan geocode ke bentuk bukan koordinat?


8

Geocoding ke bentuk, bukan titik

Proyek yang sedang saya kerjakan adalah Find-A-Record . Kami membuat geocoding koleksi catatan silsilah dan menyimpannya dalam indeks spasial (telusuri blog kami jika Anda ingin tahu lebih banyak). Pencarian didasarkan pada bentuk. Kami mengembalikan koleksi yang berpotongan atau terdapat di dalam area pencarian.

Selama kondisi awal pengembangan, kami menggunakan geonames untuk membuat geocode koleksi ke suatu titik. Ini berfungsi dengan baik untuk koleksi yang terkait dengan tingkat administrasi yang lebih rendah seperti kota, kota, dan desa. Namun itu benar-benar rusak ketika Anda mendapatkan tingkat kabupaten, negara bagian, dan negara.

Sensus AS 1940 dikaitkan dengan Amerika Serikat dan akan ditugaskan di Kansas Utara. Pertanyaan apa pun di AS yang tidak mendekati titik itu tidak akan mengembalikan Sensus AS 1940.

Untuk mengatasi ini, kita perlu membuat geocode koleksi dengan bentuk, bukan titik.

OSM

OpenStreetMaps memiliki data yang kami butuhkan, tetapi sangat sulit untuk diekstraksi. Hirarki administratif tidak disimpan secara eksplisit. Nominatim digunakan untuk menyelesaikan masalah ini untuk OSM, pencarian Nominatim hanya mengembalikan fitur. Jadi permintaan untuk Knighton on Teme mengembalikan dua halte tetapi bukan hubungan batas administratif.

The Overpass API tampak menjanjikan tetapi tidak bisa melakukan pertandingan string yang kabur. Jalan layang hanya dapat melakukan pencocokan tepat atau regex. Kita bisa menggunakan Jalan layang jika ada cara mudah untuk membakukan nama tempat. Dengan kata lain, jika OSM menyediakan cara bagi kita untuk membakukan "Knighton on Teme, Worcestershire, Inggris" menjadi "Knighton on Teme CP, Malvern Hills, Worcesterhire, West Midlands, Inggris, Inggris" menurut hierarki OSM kemudian hirarki string pencocokan tidak diperlukan.

Ringkasan

Yang kami butuhkan adalah layanan yang memungkinkan kami melakukan pencarian string fuzzy untuk suatu tempat (atau tingkat administratif) dan mengambil batas-batasnya.

Kami menyadari bahwa akan sulit untuk mendapatkan data batas untuk seluruh dunia. Untungnya kami mungkin tidak perlu melakukannya dalam waktu dekat. Kami hanya membutuhkan data untuk area di dunia di mana catatan silsilah ada dan silsilah melakukan penelitian.

Sepertinya kami perlu membangun layanan kami sendiri yang mengindeks OSM sedemikian rupa yang memungkinkan kami untuk menanyakan batasan administratif. Tapi kami lebih suka tidak melakukannya. Apakah ada cara lain untuk mengambil data ini dengan layanan yang ada?

Jawaban:


6

Proyek keren! Anda mungkin melihat MapIt: Global :

MapIt adalah layanan yang memetakan titik geografis ke area administratif. Edisi ini didasarkan pada data sumber dari proyek OpenStreetMap yang benar-benar menakjubkan , jadi tambahkan batasan Anda di sana jika ada yang hilang. Jika Anda berada di UK, MapIt UK kami dengan data Survei Ordnance terbuka mungkin akan lebih berguna.

MapIt berguna bagi siapa saja yang memiliki koordinat titik di Bumi, dan siapa yang perlu mengetahui negara, wilayah, kota, daerah pemilihan, atau negara bagian di mana ia berada. Ini juga bagus untuk melihat bentuk dari semua batas itu.

Amal, penggunaan volume rendah dari layanan ini gratis - baca lebih lanjut .

Anda dapat mengunduh sumbernya di Github .

Perlu lisensi? Baca lebih lanjut atau hubungi (commercial@mysociety.org).


Itu cukup dekat. Saya berharap mereka akan mengizinkan pencarian string. Kita bisa melakukan hal yang sama dengan Overpass.

Menginstal seluruh sistem di server Anda sendiri, yang merupakan satu-satunya cara untuk menggunakan hasil secara komersial, tampaknya merupakan proses yang cukup rumit seperti yang didokumentasikan di code.mapit.mysociety.org (mereka merekomendasikan ruang kosong 500GB jika menggunakan OSM). Ketahuilah bahwa salah satu sumber yang mereka gunakan, GADM, memiliki batasan non-komersial juga.
Rob Hoare

Mereka memang memiliki lisensi komersial menurut global.mapit.mysociety.org/licensing
blah238

1
@JustinY: Hai, saya salah satu pengembang yang bekerja di MapIt: Global. Saya kira Anda telah melihat bahwa Anda dapat mencari dengan awalan string ( contoh ) - jika Anda ingin pencarian fuzzy dapatkah saya menyarankan Anda meminta itu di pelacak masalah ? Ini adalah proyek open source, jadi bahkan jika kita tidak punya waktu untuk mengerjakannya, mungkin seorang sukarelawan akan melakukannya.
Mark Longair

1
@MarkLongair Saran yang bagus. github.com/mysociety/mapit/issues/101

2

Saya juga bekerja dengan data nama tempat dan batas global (termasuk historis) saat ini, jadi saya mengerti apa yang Anda alami!

Namun, saya pikir benar-benar ada dua langkah untuk masalah Anda: 1. menggunakan pencarian nama fuzzy untuk mengubah nama area admin menjadi sesuatu yang standar, kemudian 2. mencari batas-batas tempat itu di database batas. Daripada mencoba mencari data yang juga memiliki pencarian fuzzy.

WeRelate Places mungkin membantu dengan langkah 1 untuk nama-nama tempat lama, dan banyak geocoder lain seperti yang sudah Anda gunakan dapat membakukan nama-nama modern.

Langkah 2 benar-benar sulit saat ini, karena sebagian besar data batas yang sesuai berada di bawah lisensi non-komersial (atau lebih buruk), terutama untuk data historis. Titik awal untuk tingkat negara dan admin 1 adalah Bumi Alami .

Lalu ada sumber-sumber berbasis nasional untuk divisi admin yang lebih rendah, yang diekstraksi dari data pemerintah terbuka, seperti USGeoJSON dan uk-atlas . Tidak ada yang saya sadari benar-benar global dalam ruang lingkup.

Berhati-hatilah untuk melacak asal data dan lisensi, pembatasan non-komersial sangat umum, misalnya untuk GADM , Visi Inggris , dan (AS) Atlas Batas Wilayah Historis .


Terima kasih telah menunjukkan bahwa mungkin ada dua langkah. Jika ada cara mudah untuk menggunakan OSM untuk menstandardisasi nama maka kita dapat dengan mudah menyelesaikan masalah kita (dengan batasan yang tersedia OSM).

Pada titik ini kami tidak terlalu khawatir untuk mendapatkan data berkualitas. Kami sebagian besar membutuhkan area admin besar seperti negara bagian dan negara. Data county yang berkualitas akan menyenangkan tetapi tidak perlu.

Pada level itu, turun ke adm1 di setiap negara, Natural Earth mungkin merupakan pilihan terbaik Anda untuk memulai dengan (batas-batas ADM0 dan ADM1). File SHP dapat dikonversi ke GeoJSON atau berbagai format lain dengan ogr2ogr dan utilitas serupa lainnya.
Rob Hoare

Wow, entah bagaimana saya melewatkan itu dalam jawaban Anda. Terima kasih telah menunjukkannya lagi.

2

Kueri Nominatim Anda mencakup place_idbidang yang memiliki nilai 4828147 dalam contoh Anda. Bidang ini berfungsi sebagai pengidentifikasi internal untuk Nominatim (sehingga tidak unik secara global). Tetapi ini dapat digunakan untuk melihat hierarki alamat internal Nominatim untuk tempat ini . Hirarki ini juga berisi hubungan batas, misalnya hubungan 1875245 dan beberapa lainnya.

Dengan menelusuri daftar ini dan melihat admin_levelkunci, Anda harus menemukan relasi yang Anda cari. Sayangnya halaman khusus ini tampaknya belum tersedia melalui API.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.