Encontrando distância entre duas coordenadas no elipsóide?

18

Eu tenho dois conjuntos de latitude e longitude.

Como faço para encontrar a distância entre os dois locais se eu assumir que a Terra é um elipsóide perfeito (com uma excentricidade de 0,0167)?

Jon Bringhurst
fonte

Respostas:

16

Eu recomendaria verificar:
Esférico: http://www.movable-type.co.uk/scripts/latlong.html
Grande Círculo: http://www.movable-type.co.uk/scripts/gis-faq -5.1.html

Wallbasher
fonte
1
As fórmulas nessa página parecem ignorar a excentricidade. Eles assumem que a Terra é uma esfera e não um elipsóide.
Jon Bringhurst
Anteriormente, eu sempre usava uma biblioteca que conhecia distâncias entre alguns pontos definidos e depois fazia a média para calcular a distância de quaisquer pontos desconhecidos. Vou perguntar a algumas pessoas sobre isso.
Wallbasher
Ah, o segundo link parece ter a fórmula certa. Obrigado!
precisa
1
Obrigado pela sua resposta @Wallbasher. No entanto, seria melhor se as respostas pudessem permanecer por conta própria. Seria de grande ajuda se você também publicasse a fórmula relevante com sua resposta.
RK
7

Então você conhece suas duas latitudes e longitudes, digamos

Você pode calcular as coordenadas cartesianas para cada um:

xa = (Cos(thisLat)) * (Cos(thisLong));
ya = (Cos(thisLat)) * (Sin(thisLong));
za = (Sin(thisLat));

xb = (Cos(otherLat)) * (Cos(otherLong));
yb = (Cos(otherLat)) * (Sin(otherLong));
zb = (Sin(otherLat));

E então calcule a grande distância do círculo entre os dois usando:

MeanRadius * Acos(xa * xb + ya * yb + za * zb);

Essa abordagem simplificada permite o pré-cálculo dos valores x, ye z, que podem ser armazenados em um banco de dados para consultas eficientes sobre "pontos dentro de x milhas".

Obviamente, isso pressupõe uma esfera perfeita, e a Terra nem sequer é um elipsóide perfeito, então a precisão será de apenas alguns metros.

Rowland Shaw
fonte
1
Eu apontaria a "coisa de esfera perfeita" também. Você deve estar ciente de que esse método fornecerá vários graus de precisão, dependendo de onde você esteja no mundo.
TroutSlayer
O @TrotuSlayer geralmente é bom o suficiente para a maioria das aplicações, e sempre há uma troca entre velocidade e precisão. Se você precisa ser mais preciso, é hora de tirar a roda de rodízio ou recorrer a suposições de que a Terra é plana para sua área e as distâncias 2D são suficientes.
Rowland Shaw