6 votos

Calcular la distancia entre dos puntos a partir de la longitud, latitud y altura

Actualmente estoy intentando calcular la distancia real entre dos puntos 3D (en una representación elipsoidal WS84 de nuestra tierra), pero mis conocimientos en Sistema de Información Geográfica son bastante nulos (excepto el hecho de que sé sobre el uso de la distancia geodésica en lugar del clásico sqrt).

Lo que utilizo ya puede calcular la distancia geodésica entre dos pares de longitud / latitud, sin embargo no proporciona la distancia 3D.

Así que pensé en utilizar la fórmula clásica de la distancia sqrt utilizando el resultado de la distancia geodésica y la altura, ¿es este enfoque correcto?

Puedo utilizar la fórmula matemática en bruto, o una que utilice la distancia geodésica actual con la diferencia de elevación.

Nota: Obviamente, he intentado buscar en Google, pero sólo termino en un artículo sobre la construcción de mallas 3D utilizando la distancia geodésica. Así que me pregunto también si realmente estoy usando la palabra correcta al buscar "distancia geodésica entre puntos 3D".

He comprobado esto desde un post dado por la herramienta que sugiere la pregunta a comprobar pero como parece que ignora las diferencias de elevación : http://www.movable-type.co.uk/scripts/gis-faq-5.1.html

9voto

Nicklas A. Puntos 171

Si he entendido bien, por "distancia real" te refieres a la distancia a lo largo de una línea recta real en 3D que une tus dos puntos. El término "geodésico" se refiere a una línea recta sobre la superficie curva del elipsoide.

Utilizar el teorema de Pitágoras con la longitud geodésica y la diferencia de altura no funcionaría, porque la línea geodésica es curva, no es un triángulo cuadrado con segmentos rectos.

Para calcular una distancia recta 3D a partir de lat/lon/ht, primero tendrá que convertir sus puntos a coordenadas cartesianas 3D (ver fórmulas más abajo). Para los sistemas de referencia modernos como WGS84/ITRF2014, el marco de referencia se llama ECEF (Earth-Centered, Earth-Fixed). Entonces podrá calcular la distancia con el método de la raíz cuadrada en 3D y obtener la respuesta correcta. Sin embargo, ten en cuenta que una línea recta en 3D, en distancias largas, puede pasar a través de la Tierra, por lo que este cálculo es principalmente útil para problemas de tipo "línea de vista" en 3D para distancias generalmente cortas.

Además, asegúrate de que utilizas las alturas elipsoidales, no las altitudes sobre el nivel del mar o del geoide, ya que esto podría alterar ligeramente las distancias. Si necesitas convertir de geoide (nivel medio del mar) a elipsoidal, esta herramienta puede ser útil.

Escribamos la lat, lon, ht de un punto como phi, lambda, h. Puedes encontrar las coordenadas X, Y, Z del punto así :

X = (N(phi)+h) * cos(phi) * cos(lambda)

Y = (N(phi)+h) * cos(phi) * sin(lambda)

Z = ((b^2/a^2) * N(phi) + h) * sin(phi)

Dónde :

N(phi) = a / sqrt(1-e^2*sin^2 phi)

a = eje semimayor (6.378.137 m)

b = eje semicircular (6.356.752,314245 m)

e^2 = 1 - (b^2 / a^2)

Entonces con el pitagórico en 3D, encontramos la distancia d:

d = sqrt{(X_2-X_1)^2 + (Y_2-Y_1)^2 + (Z_2-Z_1)^2}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X