Saya memiliki database dengan banyak poin di WGS84. Sekarang saya sedang membangun cache yang melakukan NN dan menunjuk dalam rentang pertanyaan menggunakan KDtree. Intinya [sic] adalah bahwa jari-jari pencarian akan disediakan dalam meter dan bahwa lat / lon bukan SRS yang bagus untuk kueri geometris ini.
Saya mencari SRS geometris yang berlaku untuk seluruh dunia dan yang menjaga jarak. Saya tidak peduli dengan kesalahan beberapa 10 meter.
Jawaban:
Saya melakukan beberapa googling untuk "Indeks Spasial Spheris". Ada banyak metode yang mungkin menggunakan dekomposisi segitiga bola, atau voronoi tilings. Salah satu metode yang terlihat mudah diimplementasikan, adalah dengan mempertimbangkan data Anda dalam 3d, seperti pada bagian "3D Bounding Box" di sini:
http://lin-ear-th-inking.blogspot.co.uk/2007/09/geodetic-data-in-postgis-spherical.html
Maka Anda memerlukan indeks spasial 3d dari beberapa jenis, maka Anda dapat dengan cepat menemukan semua titik dalam 1 km Anda. Ini akan menjadi radius pencarian 1km 3D , jadi sedikit berbeda dengan radius 1km di sepanjang permukaan bumi, tetapi untuk jari-jari pencarian kecil, itu akan secara efektif identik (lakukan matematika untuk mengerjakan koreksi).
Jika Anda ingin presisi absolut, gunakan ini sebagai langkah pertama dan kemudian hitung jarak melalui lingkaran besar untuk menghilangkan jarak yang lebih jauh (jarak di sepanjang bola selalu lebih besar daripada jarak melalui bola).
sumber
Dengan proyeksi SRS / Peta, selalu ada trade off. Sebenarnya tidak ada satu yang cocok untuk semua tempat di dunia. Mungkin juga berasumsi bahwa bumi adalah bola.
Daripada mencari SRS yang sesuai dengan seluruh dunia, saya pikir Anda lebih baik mencari algoritma perhitungan jarak . Contohnya adalah Great Circle Distanc e yang didasarkan pada trigonometri bola. Itu memang membuat asumsi seperti:
Rumusnya adalah:
Dimana:
Anda mungkin ingin mengujinya dengan data Anda terlebih dahulu dan lihat hasilnya. Btw, apakah Anda menggunakan basis data spasial seperti PostGIS?
sumber