Investigué exactamente esta pregunta hace 20 años cuando diseñé un SIG de escritorio. Necesitábamos encontrar distancias punto a punto de manera interactiva; Nuestro objetivo era hacer los cálculos en menos de 1/2 segundo para miles de puntos. Las pruebas (¡en una PC 486 de 25 MHz!) Demostraron que podíamos calcular todas las distancias, exactamente como usted describe (con el algoritmo simple y obvio), tan rápido que no tenía sentido crear una solución más sofisticada, como una estructura quadtree .
Para calcular distancias a un solo punto de "sonda", sus opciones incluyen (a) proyectar todos los puntos usando una proyección equidistante centrada en el punto de la sonda o (b) adoptar un modelo de tierra esférica y usar la fórmula de Haversine . El primero es apropiado si necesita la precisión de un modelo elipsoidal. En cualquier caso, los cálculos son razonablemente rápidos, probablemente con menos de 1000 ticks: puede consultar alrededor de un millón de puntos por segundo con un solo procesador.
¿Lo suficientemente rápido para ti? De lo contrario, el método de fuerza bruta se paraleliza fácilmente y se escala directamente con el número de procesadores: simplemente divida los puntos entre los procesadores y luego haga una comparación final del más cercano encontrado por cada procesador.
Si necesita ir más rápido, puede usar varias aproximaciones para puntos de pantalla. Por ejemplo, si está entre -88 y +88 grados de latitud y el punto más cercano encontrado hasta ahora está a 200 km de distancia, entonces cualquier punto cuya latitud difiera de la latitud del punto de la sonda en más de 2 grados no puede estar más cerca (porque en cualquier lugar del tierra, un grado de latitud supera los 110 km). En muchos casos, este tipo de preselección podría permitirle procesar cientos de millones de puntos por segundo.