Saya menyelidiki pertanyaan ini persis 20 tahun yang lalu ketika merancang GIS desktop. Kami perlu menemukan jarak titik-ke-titik secara interaktif; target kami adalah melakukan perhitungan dalam waktu kurang dari 1/2 detik untuk ribuan poin. Pengujian (pada PC 25 MHz 486!) Menunjukkan bahwa kami dapat menghitung semua jarak, persis seperti yang Anda gambarkan (dengan algoritma sederhana yang jelas), begitu cepat sehingga tidak masuk akal untuk membuat solusi yang lebih canggih, seperti struktur quadtree. .
Untuk menghitung jarak ke titik "probe" tunggal, opsi Anda meliputi (a) memproyeksikan semua titik menggunakan proyeksi yang sama yang berpusat di titik pemeriksaan atau (b) mengadopsi model bumi berbentuk bola dan menggunakan rumus Haversine . Yang pertama sesuai jika Anda membutuhkan keakuratan model ellipsoidal. Dalam kedua kasus tersebut perhitungannya cukup cepat, mungkin mengambil kurang dari 1000 kutu: Anda dapat meminta sekitar satu juta poin per detik dengan satu prosesor.
Cukup cepat untukmu? Jika tidak, metode brute-force berparalel dengan mudah dan skala langsung dengan jumlah prosesor: hanya membagi poin di antara prosesor dan kemudian melakukan perbandingan akhir dari yang terdekat yang ditemukan oleh masing-masing prosesor.
Jika Anda harus melangkah lebih cepat, Anda dapat menggunakan berbagai perkiraan untuk menyaring poin. Misalnya, jika Anda berada di antara -88 dan +88 derajat lintang dan titik terdekat yang ditemukan sejauh ini adalah 200 km jauhnya, maka setiap titik yang garis lintangnya berbeda dari garis lintang titik pemeriksaan lebih dari 2 derajat tidak mungkin lebih dekat (karena di mana pun bumi, satu derajat garis lintang melebihi sekitar 110 km). Dalam banyak kasus pra-penyaringan semacam ini memungkinkan Anda untuk memproses ratusan juta poin per detik.