Eu investiguei exatamente essa questão há 20 anos ao projetar um GIS de desktop. Precisávamos encontrar distâncias ponto a ponto interativamente; nosso objetivo era fazer os cálculos em menos de 1/2 segundo para milhares de pontos. Os testes (em um PC 486 de 25 MHz!) Mostraram que poderíamos calcular todas as distâncias, exatamente como você descreve (com o algoritmo óbvio simples), tão rapidamente que não fazia sentido criar uma solução mais sofisticada, como uma estrutura de quadtree .
Para calcular distâncias até um único ponto de "sonda", suas opções incluem (a) projetar todos os pontos usando uma projeção equidistante centralizada no ponto de sonda ou (b) adotar um modelo de terra esférico e usar a fórmula de Haversine . O primeiro é apropriado se você precisar da precisão de um modelo elipsoidal. Em ambos os casos, os cálculos são razoavelmente rápidos, provavelmente levando menos de 1000 ticks: você pode consultar cerca de um milhão de pontos por segundo com um único processador.
Rápido o suficiente para você? Caso contrário, o método da força bruta é paralelo facilmente e é escalonado diretamente com o número de processadores: apenas divida os pontos entre os processadores e faça uma comparação final do mais próximo encontrado por cada processador.
Se você precisar ir mais rápido, poderá usar várias aproximações aos pontos da tela. Por exemplo, se você está entre -88 e +88 graus de latitude e o ponto mais próximo encontrado até agora fica a 200 km, qualquer ponto cuja latitude difere da latitude do ponto de sonda em mais de 2 graus não pode estar mais próximo (porque em qualquer lugar terra, um grau de latitude excede cerca de 110 km). Em muitos casos, esse tipo de pré-triagem pode permitir que você processe centenas de milhões de pontos por segundo.