Saltar al contenido

# visualizacion-geospacial-avanzada-con-pygmt

Visualización Geospacial Avanzada con PyGMT

Volver a la portada del curso
Lectura (Markdown)

Proyecciones Geográficas

Sección 2 · Mapas Básicos y Proyecciones

Proyecciones geográficas en PyGMT

La Tierra es (casi) una esfera y la pantalla es plana. Toda proyección es una regla para pasar de latitud y longitud a coordenadas en el papel, y ninguna lo logra sin distorsionar algo: áreas, ángulos, distancias o formas. Elegir la proyección no es un detalle estético; decide qué puede leer correctamente quien mira tu mapa.

Qué se conserva y qué se sacrifica

Las proyecciones se agrupan por la propiedad que preservan:

  • Conformes: conservan los ángulos y la forma local. Mercator es el ejemplo clásico y por eso se usa en navegación; a cambio, infla las áreas cerca de los polos (Groenlandia parece del tamaño de África).
  • Equivalentes: conservan las áreas. Mollweide o Lambert azimutal equivalente sirven para comparar superficies o densidades, como sismos por kilómetro cuadrado.
  • Equidistantes: conservan las distancias desde un punto o a lo largo de ciertas líneas, como la azimutal equidistante.
  • De compromiso: no conservan nada exactamente, pero reparten el error. Robinson y Winkel Tripel son las favoritas para mapas del mundo.

La sintaxis de projection

En PyGMT la proyección es una cadena corta: una letra que identifica la proyección, sus parámetros separados por / y, al final, el tamaño. Si la letra va en mayúscula, el número final es el ancho del mapa; en minúscula, es una escala (centímetros por grado). Algunos ejemplos:

  • "M15c": Mercator de 15 cm de ancho.
  • "L-102/23/17/29/15c": cónica conforme de Lambert con centro en 102° O y 23° N, y paralelos estándar en 17° y 29°.
  • "G-100/20/10c": ortográfica (la Tierra vista desde el espacio) centrada en 100° O, 20° N.
  • "W12c", "N12c", "R12c": Mollweide, Robinson y Winkel Tripel para el mundo.
  • "X10c/6c": cartesiana, para gráficas que no son mapas, como un perfil topográfico.

La región: region

region acepta una lista [oeste, este, sur, norte], la cadena "g" o "d" para el mundo entero (longitudes 0 a 360 o -180 a 180), o un código de país ISO. region="MX+r1" toma el rectángulo que contiene a México y le agrega un margen de un grado.

Comparar proyecciones lado a lado

La mejor forma de entender la distorsión es dibujar el mismo mundo con varias proyecciones. fig.subplot crea una cuadrícula de paneles; el signo ? en la proyección le dice a PyGMT que use el tamaño del panel:

import pygmt

fig = pygmt.Figure()
proyecciones = ["Q?", "W?", "N?", "G-100/20/?"]   # cilíndrica, Mollweide, Robinson, ortográfica
with fig.subplot(nrows=2, ncols=2, figsize=("16c", "10c"),
                 autolabel=True, margins="0.4c"):
    for proj in proyecciones:
        fig.coast(region="g", projection=proj, land="gray",
                  water="lightblue", frame="g30", panel=True)
fig.savefig("proyecciones.png")

En la cilíndrica equidistante (Q) los paralelos quedan igual de separados y las regiones polares se estiran a lo ancho; en Mollweide (W) las áreas son correctas, pero las formas se aplastan en los bordes; la ortográfica (G) muestra un hemisferio como lo vería un satélite.

Proyecciones para un país: Mercator frente a Lambert

Para una región de latitudes medias, extendida de este a oeste, como México o Estados Unidos, la cónica de Lambert distorsiona mucho menos que Mercator. Se eligen dos paralelos estándar dentro de la región; sobre ellos la escala es exacta:

import pygmt

fig = pygmt.Figure()
fig.coast(region="MX+r1", projection="M12c", land="gray",
          water="lightblue", frame=["af", "+tMercator"])
fig.shift_origin(xshift="14c")
fig.coast(region="MX+r1", projection="L-102/23/17/29/12c", land="gray",
          water="lightblue", frame=["af", "+tLambert"])
fig.savefig("mercator_vs_lambert.png")

shift_origin mueve el origen de la siguiente capa, así dos mapas comparten la misma imagen.

El marco: frame

El marco controla las anotaciones (a), las marcas menores (f) y la retícula (g). frame="afg" deja que GMT elija los intervalos; frame="a5f1g5" los fija en grados. Las letras WSne indican qué lados se anotan: mayúscula con números, minúscula solo con la línea. El título se agrega con "+t" pegado a los lados, en la misma cadena, como en frame=["WSne+tSismos 2017", "af"]; si los separas en dos elementos ("WSne" y "+tSismos 2017"), GMT rechaza la opción.

Trampas comunes

  • Usar Mercator para comparar áreas. Si el mapa muestra densidades o tamaños, usa una proyección equivalente.
  • Confundir mayúscula y minúscula. "M15c" es un mapa de 15 cm; "m15c" es 15 cm por grado, un mapa enorme.
  • Olvidar el centro en proyecciones azimutales. En G, S o A el centro define qué se ve; un centro lejano a tus datos los deja en el borde, muy deformados.
  • Usar Mercator cerca de los polos. Mercator no puede llegar a 90°; para regiones polares usa estereográfica polar (S).

Cierre

Antes de dibujar, pregúntate qué debe leer correctamente quien mira el mapa. Si son rumbos, una conforme; si son áreas, una equivalente; si es el mundo completo, una de compromiso. En PyGMT el cambio es una sola cadena.

Recursos