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?