_______ Feed on Posts or Comments

spanish & technology Franchu on 16 Nov 2007 01:44 pm

GIS: Cálculo de distancias sobre la Tierra

Este post es una traducción de un fragmento de la página http://www.faqs.org/faqs/geography/infosystems-faq/.

¿Cuál es la mejor forma de calcular la distancia entre dos puntos sobre un gran circulo (ignorando las diferencias de elevación)?

(Repuesta preparada por Robert G. Chamberlain de Caltech (JPL): rgc@solstice.jpl.nasa.gov y revisada en el grupo de discusión comp.infosystems.gis en Octubre de 1996).

Si la distancia es menor de 20 Km y las coordenadas cartesianas de los puntos son X1,Y1 y X2,Y2 entonces se puede aplicar el teorema de Pitágoras:

d = sqrt((X2 - X1)^2 + (Y2 - Y1)^2)

con un error que será de:

  • menos de 30 metros para latitudes inferiores a 70 grados.
  • menos de 20 metros para latitutes inferiores a 50 grados.
  • menos de 9 metros para latitudes inferiores a 30 grados.

Estos errores tienen en cuenta los efectos de convergencia de los meridianos y la curvatura de los paralelos y la distancia en tierra plana d vendrá expresada en las mismas unidades que las coordenadas.

Si las coordenadas no están ya en un sistema de referencia cartesiano, el coste computacional de pasar de coordenadas esféricas a cartesianas y utilizar posteriormente el modelo de tierra plana puede exceder el coste computacional de usar el modelo esférico más preciso.

Si tomamos la Tierra como una esfera de radio R y las coordenadas de dos puntos en esféricas (longitud y latitud) como lat1, lon1 y lat2, lon2; tenemos la fórmula de Haversine (R.W. Sinnott, “Virtues of the Haversine”, Sky and Telescope, vol. 68, no. 2, 1984, p. 159):

dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin^2(dlat/2) + cos(lat1) * cos(lat2) * sin^2(dlon/2)
c = 2 * arcsin(min(1,sqrt(a)))
d = R * c

que proporciona resultados matemáticamente y computacionalmente exactos. El resultado intermedio c es la distancia sobre el gran círculo en radianes. La distancia sobre el gran círculo d estará en las mismas unidades que R.

La aplicación del mínimo protege de posibles errores de redondeo que podrían sabotear la computación del arco seno si los dos puntos son antipodales (en lados opuestos de la Tierra. Por ejemplo, las antípodas de España quedan por Nueva Zelanda). Bajo estas condiciones, la fórmula de Haversine tiene condiciones adversas, pero el error que puede ser de hasta 2 Km está en el contexto de una distancia de cerca de 20000 Km (cuatro ordenes de magnitud de diferencia).

El problema de determinar la distancia sobre el gran círculo en una esfera ha estado presente durante cientos de años, de la misma forma que la solución de la ley de los cosenos (que se muestra más adelante pero no está recomendada) y la fórmula de Haversine.

La aproximación pitagórica de tierra plana asume que los meridianos son paralelos y que los paralelos son indistinguibles de grandes círculos y que los grandes círculos son indistinguibles de líneas rectas. Sin embargo, cerca de los polos, los paralelos son, no solo, mucho más cortos que los grandes círculos, sino también significativamente curvos. Teniendo esto en cuenta nos lleva a usar coordenadas polares y la ley de los cosenos en el plano para calcular distancias cortas cerca de los polos:

Fórmula en coordenadas polares para el modelo de tierra plana

a = pi/2 - lat1
b = pi/2 - lat2
c = sqrt(a^2 + b^2 - 2 * a * b * cos(lon2 - lon1)
d = R * c

Esta nueva fórmula proporciona errores máximos más pequeños que la aproximación pitagórica para latitudes elevadas y grandes distancias. Los errores máximos en este caso también dependen del azimut (el gran cículo pasa por puntos más cercanos al polo). Por ejemplo se tiene el mismo error a 80 grados de latitud cuando la separación es de 33 Km, que a 82 grados de latitud cuando la distancia es de 18 Km e incluso a 84 grados de latitud cuando la distancia es de 9 Km. Sin embargo, los resultados son mejores que en la aproximacion pitagórica puesto que a 88 grados de latitud y con una distancia de 20 Km, el error pueder de hasta 20 metros.

Una forma no fiable de calcular la distancia en un modelo de Tierra esférica es el siguiente:

Ley de los Cosenos para Trigonometría esférica
No recomendada!!!

a = sin(lat1) * sin(lat2)
b = cos(lat1) * cos(lat2) * cos(lon2 - lon1)
c = arccos(a + b)
d = R * c

Aunque esta fórmula es matemáticamente exacta, es poco fiable para pequeñas distancias porque el arco coseno presenta un mal comportamiento para nuestros propositos cerca del origen. Esto se puede ver en la pequeña tabla que se muestra a continuación,

cos (5 degrees) = 0.996194698
cos (1 degree) = 0.999847695
cos (1 minute) = 0.9999999577
cos (1 second) = 0.9999999999882
cos (0.05 sec) = 0.999999999999971

Realizando las operaciones con 7 cifras significativas no es posible diferenciar cosenos de distancias más pequeñas que un minuto de arco. Se puede hacer al igual que antes min(1,(a+b)) sustituya al (a+b) como argumento de la función arco coseno, pero esto no haría más que proporcionar resultados bonitos eliminando la resolución en el origen.

Related posts:

  1. GIS: ¿Qué valor elegir para el radio de la Tierra?
  2. GIS: Cuándo la Tierra es una esfera y cuando un elipsoide
  3. Cursos online sobre soldadura SMD
  4. Sobre el MacBook Air y los retos de ingeniería

Trackback This Post | Subscribe to the comments through RSS Feed

Leave a Reply