domingo, 1 de junio de 2025

El astuto Mercator. Mapas y grandes círculos con R

La deformación de distancias y áreas producida por los mapas construidos mediante la proyección Mercator, usada en sus mapas por los marinos durante siglos y escogida por Google Maps, constituye un clásico bastante comentado en las redes sociales. Y a menudo equivocadamente (alias la conspiración anti africana).

El otro día me encontré un mapa Mercator que me gustó especialmente porque explica de forma muy visual el efecto que tiene esta proyección sobre las distancias al alejarnos del ecuador. Las líneas rojas curvas dispuestas en sentido horizontal representan las rutas más cortas de 1.000km entre parejas de puntos de igual latitud:



Vemos que una distancia de 1.000km abarca una anchura progresivamente mayor del mapa al alejarnos del ecuador. Así la Península Ibérica con aproximadamente 1.000km de lado a lado, tiene en realidad más o menos el mismo ancho que Groenlandia, cuando en el mapa ésta se ve muchísimo más grande. Qué tiene de bueno esta proyección si deforma tanto las distancias?
  • En la era de los viajes transoceánicos a vela se usaba porque una línea recta trazada en estos mapas equivale a un rumbo fijo de la brújula (ruta loxodrómica), lo que facilitaba enormemente no perderse. No era el camino más corto (ruta ortodrómica, geodésica o gran círculo), pero sí el más fácil de seguir con los medios de orientación de la época.
  • Y hoy que tenemos GPS, por qué se usa todavía? porque es la proyección que menos deforma las proporciones del territorio lo que desplazándonos localmente es una ventaja (p.ej. usando un navegador GPS). Groenlandia, aunque no sea tan grande como parece en los mapas Mercator, sí tiene aproximadamente esa forma.

~~~

Aprovechando el momentum que me ha dado el hallazgo de este mapa, y en parte porque me he dado cuenta de que su autor dibujó a mano las curvas de 1.000km de distancia mínima resultando bastante mejorables, he hecho un ejercicio que tenía pendiente hace tiempo consistente en programar desde cero las ecuaciones de la proyección Mercator así como de los grandes círculos. El objetivo es lograr dibujar un mapa Mercator y rutas de mínima distancia partiendo de datos en formato longitud/latitud y sin usar ninguna librería GIS.

He necesitado las siguientes cuatro funciones, las dos primeras cortesía de ChatGPT (en adelante he decidido dejar con flechas de asignación todo el código R que venga de ChatGPT, usando como siempre los símbolos = en lo que sea cosecha propia):
  • longlat_to_mercatorkm(): añade a un dataframe con pares de coordenadas geográficas (long, lat), dos columas (x_km, y_km) con las correspondientes conversiones a coordenadas espaciales en km Mercator.
  • great_circle_points(): interpola una cantidad parametrizable de puntos equiespaciados entre dos puntos definidos por sus coordenadas geográficas, y siguiendo la ruta de mínima distancia (ruta ortodrómica o gran círculo).
  • great_circle_distance(): calcula la distancia real en km entre dos puntos definidos por sus coordenadas geográficas (long, lat) siguiendo el gran círculo que las conecta.
  • longspan_latdistance(): calcula el rango de longitudes para una latitud dada que cubre determinada distancia real en km a lo largo de un gran círculo. No tiene más utilidad que recrear el mapa original.

~~~

Empezamos por generar los mapas tanto en coordenadas geográficas (longitud, latitud) como Mercator (x, y), aderezándolos con unas rutas de distancia mínima (grandes círculos) entre Madrid y varias ciudades del mundo. Son las trayectorias que seguiría sobre el mapa un avión que pudiera permitirse ir estrictamente por el camino más corto a su destino. Se incluye (en azul) un vuelo NY-Tokio para tener un ejemplo de ruta que vaya por el otro lado del mapa (hacer clic para ver en alta resolución):





Ya que tenemos localizadas geográficamente todas esas ciudades calculamos la distancia real en km de cada una a Madrid ordenándolas de forma creciente:



Ahora vamos a replicar el mapa original que inspiró el post, primero en coordenadas geográficas, mapas que resultan bastante feos por el achatamiento cerca de los polos, y luego en el universo Mercator (hacer clic para ver en alta resolución):





Repositorio con el código R: GitHub.

No hay comentarios:

Publicar un comentario

Por claridad del blog, por favor trata de utilizar una sintaxis lo más correcta posible y no abusar del uso de emoticonos, mayúsculas y similares.