15 votos

¿Cómo convierto la distancia entre dos puntos lat/long en pies/metros?

He estado leyendo en la red y todo lo que encuentro es realmente confuso. Solo necesito una fórmula que me lleve al 95% de la solución. Tengo una herramienta que muestra la distancia entre dos puntos de latitud/longitud.

Punto 1: 32.773178, -79.920094
Punto 2: 32.781666666666666, -79.916666666666671
Distancia: 0.0091526545913161624

Me gustaría una fórmula bastante sencilla para convertir la distancia a pies y metros.

¡Gracias!

0 votos

¿Podría proporcionar un enlace a la aplicación o especificar de alguna manera de qué aplicación se trata?

0 votos

La respuesta de joriki tiene una expresión de theta no calificada en la última fórmula: math.stackexchange.com/suggested-edits/3639

11voto

JiminyCricket Puntos 143

La herramienta parece estar calculando simplemente la distancia euclidiana entre los dos puntos (la raíz cuadrada de la suma de las diferencias al cuadrado entre las coordenadas). Esto no tiene sentido para latitudes y longitudes, que no son coordenadas en un sistema de coordenadas cartesianas. No solo este número no es una distancia significativa, sino que ya no contiene la información necesaria para reconstruir una distancia a partir de él, por lo que no podrás calcular nada significativo a partir de él; necesitas volver a las latitudes y longitudes mismas.

Para calcular distancias entre puntos dados por latitudes y longitudes con precisión, necesitas saber qué geoide se usó como referencia al especificarlos. Pero dado que solo deseas obtener el 95% de la respuesta, puedes asumir con seguridad que la Tierra es una esfera.

Hay dos posibles significados para "la distancia entre dos puntos" en una esfera. Puedes tomar la distancia euclidiana entre los dos puntos (los puntos reales, no sus coordenadas de latitud/longitud como hace tu herramienta), o puedes tomar la distancia a lo largo de la curva más corta en la superficie de la Tierra. Nuevamente, si solo deseas llegar al 95% de la respuesta y las distancias son tan pequeñas como en tu ejemplo, la diferencia es despreciable, por lo que puedes tomar la distancia euclidiana, que es más fácil de calcular.

Para obtener la distancia euclidiana, primero puedes calcular las coordenadas cartesianas de los puntos a partir de sus latitudes y longitudes. Denotando la latitud por $\theta$, la longitud por $\phi$ y el radio de la Tierra por $R$ (con $R\approx 6371 \mathrm{km}$), estos vienen dados por

$$\vec{r}=\left(\begin{array}{c}x\\y\\z\end{array}\right) = \left(\begin{array}{c} R\cos\theta\cos\phi \\ R\cos\theta\sin\phi \\ R\sin\theta \end{array}\right)\;. $$

Luego obtienes la distancia entre ellos usando

$$d(\vec{r_1},\vec{r_2})=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2+(z_2-z_1)^2}\;.$$

Dado que pareces tener distancias pequeñas y no estás interesado en la precisión, puedes simplificar esto expandiendo las funciones trigonométricas alrededor de uno de los puntos, o, para una mayor precisión, alrededor del punto medio $\theta=(\theta_1+\theta_2)/2$, $\phi=(\phi_1+\phi_2)/2$:

$$\vec{r_2}-\vec{r_1}\approx R\left(\begin{array}{c} \sin\theta\cos\phi(\theta_2-\theta_1)-\cos\theta\sin\phi(\phi_2-\phi_1) \\ \sin\theta\sin\phi(\theta_2-\theta_1)+\cos\theta\cos\phi(\phi_2-\phi_1) \\ \cos\theta(\theta_2-\theta_1) \end{array}\right)\;, $$

$${}$$

$$\lvert\vec{r}_2-\vec{r}_1\rvert\approx R\sqrt{(\theta_2-\theta_1)^2 + \cos^2\theta(\phi_2-\phi_1)^2}\;.$$

0 votos

Tu $\theta$ se mide hacia abajo desde el polo (de $0$ a $\pi$), mientras que la latitud generalmente se mide desde $+90^{\circ}$ (Polo Norte) hasta $-90^{\circ}$ (Polo Sur) y si deseas considerar la altitud, el $R$ debe ser el radio desde el centro, no necesariamente $6371$ km.

0 votos

@Ross: Sí, gracias, acabo de darme cuenta de que cambié $\cos\theta$ y $\sin\theta$; ya está corregido. En cuanto a la altitud, un par de kilómetros de montañas solo harán una diferencia de alrededor de una milésima, bien dentro de la precisión deseada.

0 votos

Mi comentario sobre la altitud fue motivado por el hecho de que muestras tres coordenadas y tienes $\Delta z$ en tu ecuación original. Borraré mi publicación con la misma linealización ya que la tuya es más completa.

5voto

pix0r Puntos 17854

No estoy completamente seguro de lo que significa el número de distancia que devuelve tu herramienta, pero aquí tienes una forma de calcular la distancia que deseas.

A continuación se muestra la Ley Esférica de los Cosenos tal como aparece en UCSMP Funciones, Estadísticas y Trigonometría, 3ra ed., copiada aquí porque el diagrama es bueno y ayuda con la claridad.

Ley Esférica de los Cosenos (de UCSMP Funciones, Estadísticas y Trigonometría, 3ra ed.)

Si $\triangle ABC$ es un triángulo esférico con arcos $a$, $b$ y $c$ (lo que significa las medidas de los arcos, no las longitudes), entonces $\cos c=\cos a\cos b+\sin a\sin b\cos C$.

Ahora, para el problema específico en cuestión. Vamos a utilizar el diagrama a continuación, también de UCSMP Funciones, Estadísticas y Trigonometría, 3ra ed., como referencia.

globo (de UCSMP Funciones, Estadísticas y Trigonometría, 3ra ed.)

Sean $A$ y $B$ los dos puntos entre los cuales quieres encontrar la distancia (para simplicidad, asumiré que ambos están en el hemisferio norte, y dejaré como ejercicio la extensión de la solución a cualquier punto); $N$ y $S$ son los polos norte y sur, respectivamente; $C$ y $D$ son los puntos en el ecuador que están en la misma línea de longitud que $A$ y $B, respectivamente. Considera el $\triangle ABN$ esférico. $a=(90°-\text{latitud del punto }B)$; $b=(90°-\text{latitud del punto }A)$. $N=\text{diferencia positiva en longitud entre los puntos }A\text{ y }B$. Utiliza la Ley Esférica de los Cosenos (forma $\cos n=\cdots$) para determinar $n$, que es el arco más corto entre los dos puntos.

Si, por ejemplo, $n=10°$, el diámetro de la Tierra es aproximadamente 12756.2 km, por lo que la distancia es $\frac{10°}{360°}\pi\cdot 12756.2\approx 1113.2\text{ km}$.

(gráficos de la Lección 5-10 de UCSMP Funciones, Estadísticas y Trigonometría, 3ra ed., © 2010 Wright Group/McGraw Hill)

5voto

Shabaz Puntos 403

Si las distancias son pequeñas, puedes usar la versión linearizada: $\Delta x=R \cos(\theta)\Delta \phi, \Delta y=R \Delta \theta$, donde $x$ es la distancia este-oeste, $\theta$ es la latitud (medida con cero en el ecuador), $y$ es la distancia norte-sur, y $\phi$ es la longitud. Entonces, la distancia es $d=\sqrt{\Delta x^2+ \Delta y^2}$ en las unidades que utilizaste para $R$.

4voto

fenomas Puntos 9565

Dado que la pregunta está etiquetada como Mathematica, podría ser bueno proporcionar la función de Mathematica, que es (a partir de la versión 7):

GeoDistance[{32.773178, -79.920094}, 
            {32.781666666666666,-79.916666666666671}
]

==> 994.652

o, si desea especificar el elipsoide de referencia:

GeoDistance[
   GeoPosition[{32.773178, -79.920094, 0}, "ITRF00"], 
   GeoPosition[{32.781666666666666, -79.916666666666671 , 0}, "ITRF00"]
]

0 votos

Parece que recuerdo que esa función (o comoquiera que se llamara en versiones anteriores) estaba en uno de los paquetes Miscellaneous`...

0 votos

@J.M. Puede haber sido una vez, pero ahora es una función incorporada.

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