Bu soruyu 20 yıl önce bir masaüstü CBS tasarlarken araştırdım. Etkileşimli olarak noktadan noktaya mesafeleri bulmamız gerekiyordu; hedefimiz hesaplamaları binlerce nokta için 1/2 saniyeden daha kısa sürede yapmaktı. Testler (25 MHz 486 PC'de!) Tüm mesafeleri, tam olarak tarif ettiğiniz gibi (basit bariz algoritmayla) hesaplayabildiğimizi gösterdi, o kadar hızlı ki, dörtlü bir yapı gibi daha sofistike bir çözüm oluşturmanın hiçbir anlamı yoktu. .
Tek bir "prob" noktasına mesafeleri hesaplamak için seçenekleriniz şunları içerir: (a) tüm noktaları prob noktasında ortalanmış eşit mesafeli bir projeksiyon kullanarak yansıtmak veya (b) küresel bir dünya modeli benimsemek ve Haversine formülünü kullanmak . Birincisi, elipsoidal bir modelin doğruluğuna ihtiyacınız varsa uygundur. Her iki durumda da hesaplamalar oldukça hızlıdır, muhtemelen 1000'den az keneyi alır: tek bir işlemciyle saniyede yaklaşık milyon noktayı sorgulayabilirsiniz.
Senin için yeterince hızlı mı? Değilse, kaba kuvvet yöntemi kolayca paralel hale gelir ve doğrudan işlemci sayısı ile ölçeklendirilir: noktaları işlemciler arasında bölün ve ardından her işlemci tarafından bulunan en yakın olanın son karşılaştırmasını yapın.
Daha hızlı gitmeniz gerekiyorsa, noktaları görüntülemek için çeşitli yaklaşımlar kullanabilirsiniz. Örneğin, -88 ila +88 derece enlemindeyseniz ve şimdiye kadar bulunan en yakın nokta 200 km uzaklıktadırsa, enlemi prob noktasının enleminden 2 dereceden farklı olan herhangi bir nokta muhtemelen daha yakın olamaz (çünkü herhangi bir yerde toprak, bir enlem derecesi yaklaşık 110 km'yi aşıyor). Çoğu durumda bu tür ön tarama, saniyede yüz milyonlarca noktayı işlemenizi sağlayabilir.