De aquí hasta China
Medir distancias es una tarea sencilla cuando se trata de objetos pequeños y cotidianos; como una mesa, una pared, la altura de mi hija a lo largo de los años, o la distancia que me dalta para ganar en un torneo de rayuela. Todo esto se puede resolver con un flexómetro. Sin embargo, la situación se complica al medir distancias más grandes, como un terreno de 2 hectáreas, donde el flexómetro ya no es útil y los ángulos comienzan a cobrar importancia. Es en este punto donde se necesitan técnicas de medición más eficientes.
La topografía es la ciencia que se encarga de representar planimétrica y altimétricamente un terreno y sus elementos, utilizando diversas técnicas de medición que se clasifican principalmente según la forma en que obtienen sus mediciones: directas o indirectas. Gracias a los diversos instrumentos y técnicas disponibles, la topografía nos permite realizar mediciones en grandes áreas de territorio, logrando, en situaciones ideales, obtener distancias kilométricas a partir de una observación.
La representación de la topografía, sus distancias y sus ángulos, se lleva a cabo sobre un plano cartesiano (x e y, abscisas y ordenadas, norte y este, manzana y pera). Lo importante es que se representan con base en un mismo origen (0,0). A partir de este origen, podemos representar cualquier elemento desde sus distancias relativas y ángulos (método de radiación).
Sin embargo, este sistema supone un problema para distancias muchos más grandes, en donde comienza a afectar la famosa curvatura de la tierra, ya que dada la necesidad histórica de la representación sobre planos (en papel o digital) se asumen distancias “falsas”, la cuales, en algunas situaciones y contextos, pueden conllevar a errores.
A continuación, a modo de ejemplo práctico, en geogebra se puede ver representada la curvatura de la tierra, la línea de visión de un observador, y un elemento de 1.8 m de altura, el cual, desde el punto de vista del observador, aproximadamente a los 4820 m, ya comienza a desaparecer desde su vista del horizonte, o como se creyó en algún tiempo, que los barcos caían en una especie de barranco cósmico ya que la tierra era plana y en este punto se encontraba el borde de la misma.
En topografía se realizan correcciones por curvatura y refracción atmosférica asociadas a este fenómeno.
Podemos calcular esta caída del plano tangencial, utilizando una aproximación trigonométrica sobre un círculo, la cual se utiliza para ángulos pequeños*:
h = Caída respecto a la tangente del observador
d = Distancia desde el observador
R = Radio medio de la tierra (6.378.000 m)
Si fijamos h= 1.8 m, entonces:
Por lo tanto, a una distancia de 4792 m del observador, se genera una caída de 1.8 m desde su plano tangencial a causa de la curvatura de la tierra.
Podemos ver el ejemplo práctico en el siguiente link:
Sistemas de Proyección
Tal como vimos en los ejemplos anteriores, la curvatura de la tierra existe y afecta considerablemente mientras más extensas sean las distancias a medir. Esto impacta principalmente a las distancias, dado que cuando medimos distancias extensas sobre la superficie de la tierra, se introducen deformaciones intrínsecas al llevarlos a un plano horizontal, es decir, lo que medimos en terreno es distinto a lo que llevamos al papel, esto dado que no es posible achatar una esfera sin distorcionarla de alguna manera.
Esta convención de procesos para llevar las mediciones realizadas sobre esferas/elipsoides a un plano horizontal se llaman Sistemas de Proyección, cuyo sistema más conocido y utilizado es la Proyección de Mercator, proyección cartográfica creada en 1569 por Gerardus Mercator, con el fin de elaborar mapas para usos naúticos. Es una proyección , la cual resulta de proyectar la superficie terrestre sobre una superficie cilíndrica, el cual es tangente al globo.
La proyección de Mercator es una proyección conforme (mantiene ángulos) pero no es equivalente (distorsiona áreas y distancias).
Si bien la proyección de mercator genera una distorción de las distancias al llevarlas a un plano horizontal, para ciertos usos (principalmente naúticos y cartográficos) y escalas (1:2000 y más pequeñas) es una manera bastante práctica y cómoda de representar una gran extensión de superficie, además de que nos permite manipular distancias métricas, lo cual facilita el cálculo en diversos casos prácticos.
¿Y qué sucede con las latitudes y longitudes?
Bueno, las latitudes y longitudes son medidas angulares que nos permiten ubicar prácticamente cualquier punto sobre la superficie del planeta. La latitud nos posiciona en dirección norte-sur, mientras que la longitud lo hace en dirección este-oeste; la intersección de ambas nos entrega una ubicación.
La latitud se define mediante líneas imaginarias llamadas paralelos, las cuales rodean la Tierra de forma horizontal. El paralelo de mayor extensión es el ecuador (0°), y a partir de este se miden los ángulos hacia el norte y hacia el sur, alcanzando +90° en el Polo Norte y -90° en el Polo Sur. Por ello, las latitudes negativas corresponden al hemisferio sur.
La longitud también se define mediante líneas imaginarias, llamadas meridianos, que conectan el Polo Norte con el Polo Sur. Su origen convencional es el meridiano de Greenwich (0°), y desde allí los valores se extienden hacia el este y oeste hasta ±180°, dependiendo de la convención utilizada.
Para ser específicos, muchas veces cuando hablamos de latitud y longitud de forma general, solemos imaginar un modelo esférico simplificado de la Tierra, lo cual resulta útil para entender el concepto base. En ese caso, las posiciones pueden interpretarse desde una geometría centrada en el planeta.
Sin embargo, nuestro planeta no es una esfera perfecta, sino que se aproxima mejor a un elipsoide achatado en los polos. Esto complica el cálculo de posiciones, ya que la definición estricta de latitud geodésica no se basa simplemente en una línea hacia el centro de la Tierra, sino en la dirección perpendicular (normal) al elipsoide tangente al punto de interés. Esa normal intersecta el plano ecuatorial, y desde allí se define el ángulo de latitud geodésica. Estas coordenadas corresponden a las llamadas coordenadas geográficas o geodésicas.
Distancia Haversine
La Distancia Haversine (o Fórmula de Haversine) permite calcular la distancia más corta entre dos puntos definidos por latitud y longitud, asumiendo una Tierra esférica. En otras palabras, calcula la distancia sobre el arco del círculo máximo entre ambos puntos:
Imagen de la Ley de Haversines, por Steven G. Johnson , publicada bajo la Licencia de Documentación Libre de GNU.
Esta fórmula es especialmente útil cuando queremos calcular rápidamente distancias aproximadas entre dos puntos en metros, kilómetros o millas, utilizando únicamente sus coordenadas geográficas.
a = sin²(φB — φA/2) + cos φA * cos φB * sin²(λB — λA/2)
c = 2 * atan2( √a, √(1−a) )
d = R ⋅ c
Donde:
φA = Latitud punto A
φB = Latitud punto B
λA = Longitud punto A
λB = Longitud punto B
R = Radio curvatura de la tierra
Todos los ángulos deben ser convertidos a radianes antes de aplicar la fórmula.
La unidad de medida del resultado (d) vendra dada por la unidad de medida de la variable R.
El uso de la fórmula Haversine en Python
En primer lugar, llamaremos a la libreria math e importaremos lo siguiente:
from math import radians, sin, cos, sqrt, atan2
Para luego definir una función simple, cuidando de aplicar las conversiones a radianes correspondientes, además de dar la opción al usuario de modificar el argumento de radius en caso de utilizar otro valor o en otra unidad de medida:
def haversine_formula(lat1, lng1, lat2, lng2, radius=6378):
dlat = radians(lat2 - lat1)
dlon = radians(lon2 - lon1)
a = (sin(dlat / 2) ** 2 + cos(radians(lat1)) * cos(radians(lat2)) * sin(dlon / 2) ** 2)
c = 2 * atan2(sqrt(a), sqrt(1 - a))
distance = radius * c
return distance
Con esto podemos calcular la distancia aproximada entre prácticamente cualquier par de puntos del planeta, por ejemplo, entre Santiago de Chile y Pekín (al norte de China):
dist_stgo_pkn = haversine_formula(-33.43778, -70.65028, 39.91, 116.40)
print(f"Distancia entre Santiago de Chile y Pekín: {dist_stgo_pkn:.2f} km")
# Distancia entre Santiago de Chile y Pekín: 19081.05 km
También podemos recurrir a una librería en python llamada haversine para realizar los cálculos de una manera mucho más directa:
#pip install haversine
from haversine import haversine, Unit
stgo = (-33.43778, -70.65028) # (lat, lon)
pekin = (39.91, 116.40) # (lat, lon)
haversine(stgo, pekin)
# 19060.13 <<en kilómetros
La diferencia en el resultado se debe principalmente a que la librería haversine utiliza
6371.0088 kmcomo radio promedio de la tierra.
Limitantes
Tal como comentamos antes, la Tierra no es una esfera perfecta, por lo que el cálculo de distancias no puede resumirse únicamente a un radio estándar si buscamos alta precisión.
La fórmula de Haversine suele ser suficientemente buena para muchos usos generales, con errores que normalmente pueden rondar hasta cerca del 0,5% dependiendo de la distancia y ubicación. Para aplicaciones cotidianas o análisis generales suele ser más que suficiente, pero en trabajos de alta precisión —como geodesia, topografía o navegación— esta simplificación puede generar diferencias relevantes, especialmente en distancias muy largas o cercanas a los polos.
Para un cálculo mucho más exacto, existe la opción de calcular la línea geodésica entre 2 puntos, con los mismos datos de entrada utilizando métodos iterativo complejos tales como la fórmula de Vincenty, el método de Bessel o utilizando librerías como GeographicLib (basado en Karney), que resuelven el problema inverso geodésico: obtener la distancia más corta y el azimut entre dos puntos sobre un elipsoide.
En nuestra área, esto se conoce como:
- Problema inverso: conocidos dos puntos, calcular distancia y dirección (azimut).
- Problema directo: conocido un punto, una distancia y un azimut, calcular la posición del segundo punto.
Estos problemas ya utilizan como parámetros de entrada los elispoides correspondientes según las necesidades del cálculo.
A continuación, un ejemplo utilizando la librería Geographiclib, revisando la distancia entre Santiago y Pekín:
#pip install geographiclib
from geographiclib.geodesic import Geodesic
import math
wgs84 = Geodesic.WGS84 # Definimos el elipsoide WGS84
dist_stgo_pkn_geod = wgs84.Inverse(-33.43778, -70.65028, 39.91, 116.40)
print("Distancia entre Santiago de Chile y Pekín es {:.3f} km.".format(dist_stgo_pkn_geod['s12']/1000))
# Distancia entre Santiago de Chile y Pekín es 19058.202 km.
En este ejemplo, podemos identificar una diferencia entre 2 km y 23 km dependiendo del radio de la tierra utilizado.
En Conclusión
El cálculo de distancias puede parecer algo simple, pero dependiendo de su finalidad, puede pasar rápidamente a niveles de complejidad bastante mayores.
Lo importante no siempre es utilizar el método más complejo, sino entender qué nivel de precisión necesitamos y cuáles son las limitantes del modelo que estamos utilizando. Muchas veces una aproximación esférica será suficiente; otras veces, será indispensable trabajar bajo modelos geodésicos más rigurosos.
Al final, más que memorizar fórmulas, lo realmente importante es aprender a identificar el marco de cálculo correcto según el problema que queremos resolver. Ahí está, probablemente, la diferencia entre simplemente calcular... y realmente entender lo que estamos calculando.
¡Llévalo a la práctica!
Revisa como se comportan las distancias utilizando las distintas fórmulas y librerias en localidades más cercanas a los polos, por ejemplo:
#Polo Norte
#Longyearbyen, Svalbard: 78.2232, 15.6267
#Station Nord, Groenlandia: 81.7166, -17.8333
#Polo Sur
#Base Amundsen-Scott: -90.0000, 0.0000
#Base McMurdo: -77.8419, 166.6863
( )







Top comments (0)