# visualizacion-geospacial-avanzada-con-pygmt
Visualización Geospacial Avanzada con PyGMT
Volver a la portada del cursoInstalación y Configuración
Sección 1 · Introducción a PyGMT
Instalación y configuración de PyGMT
PyGMT es la interfaz de Python para GMT (Generic Mapping Tools), el programa de mapas que usan geofísicos, oceanógrafos y sismólogos desde hace más de tres décadas. GMT está escrito en C y es muy rápido; PyGMT lo envuelve para que lo controles con funciones de Python y con tus datos de NumPy, pandas y xarray. Antes del primer mapa hay que entender una idea clave: instalar PyGMT no basta, también necesitas GMT.
Dos piezas: GMT y PyGMT
PyGMT no dibuja nada por sí mismo. Cada vez que llamas a fig.coast() o fig.grdimage(), PyGMT traduce la llamada y la envía a la biblioteca de GMT (libgmt en Linux y macOS, gmt_w64.dll en Windows). Si Python no encuentra esa biblioteca, el error aparece desde el primer import pygmt. Además, GMT usa Ghostscript para convertir sus figuras a PNG o PDF.
Instalación recomendada: conda-forge
La vía oficial y la más sencilla es conda (o mamba, que es más rápido). El paquete pygmt de conda-forge instala GMT, Ghostscript y todas las dependencias en un solo paso, en cualquier sistema operativo:
# En la terminal (no en Python):
# mamba create --name pygmt --channel conda-forge pygmt jupyterlab
# mamba activate pygmt
# jupyter lab
Un entorno aparte evita que las versiones de GDAL, PROJ o NetCDF que trae GMT choquen con las de otros proyectos.
Alternativa: pip y GMT por separado
Si ya trabajas con venv y pip, puedes instalar PyGMT con pip install pygmt, pero GMT se instala aparte (versión 6.5 o superior para PyGMT 0.19). En Linux suele bastar el gestor de paquetes del sistema; en macOS, Homebrew; en Windows, el instalador o el zip oficial de GMT. En Windows hay dos detalles más:
- Define la variable de entorno
GMT_LIBRARY_PATHcon la carpetabinde GMT, donde estágmt_w64.dll. - Agrega esa misma carpeta al
PATH: ahí vivegswin64c.exe, el Ghostscript que GMT necesita para guardar imágenes. Sin él,savefigfalla con Cannot execute Ghostscript.
Verificar la instalación
La función show_versions() es tu diagnóstico. Muestra la versión de PyGMT, la de GMT, la ruta de la biblioteca encontrada y si Ghostscript está disponible. Si algo falla más adelante, esta salida es lo primero que conviene revisar:
import pygmt
pygmt.show_versions()
Tu primer mapa
Todo dibujo empieza con un objeto Figure. Sobre él llamas métodos que agregan capas, como en una pila de acetatos. Tres parámetros aparecen en casi todas las llamadas: region (los límites oeste, este, sur y norte), projection (cómo se aplana la Tierra y el ancho del mapa) y frame (el marco con sus marcas):
import pygmt
fig = pygmt.Figure()
fig.coast(
region=[-118, -86, 14, 33], # oeste, este, sur, norte
projection="M15c", # Mercator de 15 cm de ancho
land="gray",
water="lightblue",
borders="1/0.5p", # fronteras nacionales
frame=True,
)
fig.savefig("mexico.png") # en un notebook también sirve fig.show()
Las líneas de costa y fronteras vienen de la base GSHHG, incluida con GMT. No necesitas descargar ningún archivo para este mapa.
Datos remotos con caché
GMT ofrece grillas globales listas para usar: relieve terrestre, edad del fondo oceánico, gravedad y más. PyGMT las carga con funciones como load_earth_relief. La primera vez se descargan del servidor de GMT y quedan guardadas en ~/.gmt/server; las siguientes veces se leen del disco:
import pygmt
grid = pygmt.datasets.load_earth_relief(
resolution="10m", region=[-118, -86, 14, 33]
)
print(grid.shape) # (filas, columnas)
print(float(grid.min()), float(grid.max())) # metros
La resolución manda en el tamaño: 01d (un grado) pesa muy poco, 10m unos megabytes y 15s llega a gigabytes para el mundo entero. Pide siempre la región que vas a usar, no el planeta.
Configuración global con pygmt.config
GMT tiene cientos de parámetros de estilo: tipo de marco, fuentes, formato de las coordenadas. pygmt.config los cambia; usado con with, el cambio solo dura dentro del bloque:
import pygmt
fig = pygmt.Figure()
with pygmt.config(MAP_FRAME_TYPE="plain", FONT_ANNOT_PRIMARY="9p",
FORMAT_GEO_MAP="ddd.x"):
fig.basemap(region=[-118, -86, 14, 33], projection="M12c", frame="af")
fig.coast(land="gray", shorelines="0.3p")
fig.savefig("config.png")
Trampas comunes
- Instalar solo con pip y olvidar GMT. El error Error loading GMT shared library significa que falta GMT o que Python no lo encuentra.
- Mezclar canales de conda. Usa solo
conda-forge; mezclar condefaultsproduce bibliotecas incompatibles. - Pedir grillas de alta resolución para regiones grandes. Empieza con
10mo05my sube solo si el mapa lo pide. - Confundir el orden de
region. Es[oeste, este, sur, norte], no[lat, lon].
Cierre
Si show_versions() muestra GMT y Ghostscript, y el mapa de México se guarda sin errores, tu entorno está listo. Desde aquí, cada mapa del curso es la misma receta: una Figure, una región, una proyección y capas que se apilan.