¿Encontrar la distancia entre dos coordenadas en elipsoide?

18

Tengo dos conjuntos de latitud y longitud.

¿Cómo encuentro la distancia entre las dos ubicaciones si supongo que la Tierra es un elipsoide perfecto (con una excentricidad de 0.0167)?

Jon Bringhurst
fuente

Respuestas:

16

Recomendaría revisar:
esférico: http://www.movable-type.co.uk/scripts/latlong.html
Great-Circle: http://www.movable-type.co.uk/scripts/gis-faq -5.1.html

Wallbasher
fuente
1
Las fórmulas en esa página parecen ignorar la excentricidad. Asumen que la tierra es una esfera y no un elipsoide.
Jon Bringhurst
Anteriormente, siempre usaba una biblioteca que conocía distancias entre algunos puntos largos establecidos y luego realizaba un promedio para calcular la distancia de cualquier punto desconocido. Preguntaré a algunas personas sobre esto.
Wallbasher
Ah, el segundo enlace parece tener la fórmula correcta. ¡Gracias!
Jon Bringhurst
1
Gracias por tu respuesta @Wallbasher. Sin embargo, sería mejor si las respuestas pudieran ser independientes. Sería de gran ayuda si publicara la fórmula relevante con su respuesta también.
RK
7

Entonces conoces tus dos latitudes y longitudes, digamos

Puede calcular las coordenadas cartesianas para cada:

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));

Y luego calcule la distancia del gran círculo entre los dos usando:

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

Este enfoque simplificado permite el cálculo previo de los valores de x, y y z, que pueden almacenarse junto a una base de datos para consultas eficientes de "puntos dentro de x millas".

Por supuesto, esto supone una esfera perfecta, y la Tierra ni siquiera es un elipsoide perfecto, por lo que la precisión solo será de unos pocos metros.

Rowland Shaw
fuente
1
Iba a señalar la "esfera perfecta" también. Debe tener en cuenta que este método le dará diferentes grados de precisión dependiendo de dónde se encuentre en el mundo.
TroutSlayer
@TrotuSlayer generalmente es lo suficientemente bueno para la mayoría de las aplicaciones, y siempre hay una compensación entre velocidad y precisión. Si necesita ser más preciso, es hora de sacar la rueda nido o recurrir a suposiciones de que la Tierra es plana para su área determinada, y las distancias en 2D son suficientes.
Rowland Shaw