2. Introducción

Mapping Toolbox es una extensión especializada de MATLAB que proporciona algoritmos y funciones para transformar datos geográficos y crear visualizaciones de mapas. Esta herramienta permite visualizar datos en un contexto geográfico, crear mapas a partir de más de 60 proyecciones y transformar datos de diversas fuentes en un sistema de coordenadas geográficas coherente.

Mapping Toolbox admite un flujo de trabajo completo para la gestión de datos geográficos, desde la importación hasta la visualización y el análisis. Esto incluye la capacidad de importar datos raster y vectoriales desde una amplia gama de formatos, procesarlos mediante técnicas como recorte, interpolación y transformación de coordenadas, y combinarlos con capas de mapas base de diversas fuentes. Esto facilita la integración de análisis geoespaciales con otras capacidades de MATLAB, como el procesamiento de señales, la estadística o el aprendizaje automático.

Estas herramientas tienen aplicaciones en el análisis territorial, la planificación urbana, la gestión de recursos naturales, la evaluación de riesgos ambientales y muchas otras áreas que requieren el manejo de información geoespacial.

2.1. Capacidades principales

  • Importación y exportación de datos GIS raster y vectoriales

  • Visualización de mapas en 2D y 3D

  • Combinación de conjuntos de datos raster y vectoriales en una sola visualización

  • Creación de mapas temáticos y visualizaciones de contornos

  • Análisis de terreno y elevación

  • Cálculo de gradiente, pendiente, aspecto, línea de visibilidad y cuenca visual

  • Exportación de datos en formatos estándar como shapefile, GeoTIFF y KML

2.2. Fragmentos de código

A continuación se presentan algunos fragmentos de código basados en la documentación Mapping Toolbox para ejemplificar algunas de las capacidades de la herramienta (para obtener más información, consultar la documentación de MATLAB).

2.2.1. Importación y visualización

Para trabajar con mapas en MATLAB, primero necesitamos importar datos geoespaciales. Mapping Toolbox proporciona varias funciones para leer diferentes tipos de datos geográficos.

Por ejemplo, para importar datos vectoriales como puntos, líneas y polígonos, podemos utilizar la función readgeotable. Para crear los ejes del mapa la función newmap y para mostrar los datos, la función geoplot (ver la sección de Funciones).

En el siguiente script, importamos tres archivos shapefile que contienen áreas (países), líneas (ríos) y ciudades (puntos).

% Importar datos vectoriales
land = readgeotable("landareas.shp");
rivers = readgeotable("worldrivers.shp");
cities = readgeotable("worldcities.shp");

% Crear ejes de mapa con proyección Equal Earth (por defecto)
figure
newmap

% Mostrar las áreas terrestres, ríos y ciudades
geoplot(land)
hold on
geoplot(rivers)
geoplot(cities)

2.2.2. Especificar la proyección

Mapping Toolbox permite crear mapas con diferentes proyecciones geográficas. La proyección por defecto es la proyección Equal Earth, que es una proyección de área equidistante. Sin embargo, existen muchas otras proyecciones disponibles, como la proyección Mercator, la proyección Robinson y la proyección Lambert Conformal Conic, entre otras.

Para crear un mapa con una proyección específica, se puede utilizar la función projcrs. Los códigos de las proyecciones se pueden consultar en https://epsg.io/. Por ejemplo, para crear un mapa con la proyección Lambert Azimuthal Equal Area Europa (https://epsg.io/3035), podemos utilizar el siguiente código:

% Crea ejes de mapa en coordenadas proyectadas Lambert Azimuthal Equal Area (Europa)
figure
p = projcrs(3035);
newmap(p)

% Mostrar datos con diferentes colores
geoplot(land, FaceColor=[0.5 0.5 0.5]) % Áreas terrestres en gris
hold on
geoplot(rivers, Color='c') % Ríos en cyan
geoplot(cities, MarkerEdgeColor=[1 0 0]) % Ciudades en rojo

% Añadir etiqueta
text(39, -43, "Océano Atlántico")

2.2.3. Exportar mapas

% Aqui va el código para generar el mapa (por ejemplo el script anterior)
% Una vez creado el mapa, podemos exportarlo a diferentes formatos, por ejemplo:

% Exportar el mapa como imagen PNG a 300 dpi
print('mapa_export_1', '-dpng','-r300');

% Alternativamente se puede exportar con la función exportgraphics:
exportgraphics(gcf, 'mapa_export_2.png', 'Resolution', 300);

% Exportar el mapa como archivo PDF
exportgraphics(gcf, 'mapa_export_3.pdf', 'ContentType', 'vector')

Mapping Toolbox también permite exportar datos geoespaciales en formatos estándar como shapefile, GeoTIFF y KML, facilitando el intercambio de datos con Sistemas de Información Geográfica (GIS) y otras aplicaciones geoespaciales. Se revisarán algunos de estos ejemplos más adelante en el curso.

2.2.4. Mapas basados en axesm

El enfoque tradicional de Mapping Toolbox``utiliza la función ``worldmap para configurar mapas basados en axesm (axesm-based map):

% Crea un mapa mundial con proyección Robinson
figure
worldmap world

% Mostrar líneas de costa
load coastlines
plotm(coastlat, coastlon)

Para crear un mapa de una región específica:

% importa los shapefiles
land = readgeotable("landareas.shp");
rivers = readgeotable("worldrivers.shp");
cities = readgeotable("worldcities.shp");

% Crea un mapa de Europa
figure
worldmap europe

% Consultar la proyección utilizada
ax = gca;
getm(ax, "MapProjection")

% Mostrar datos
geoshow(land, "FaceColor", [0.88 0.95 0.81])
geoshow(rivers, "Color", "b")
geoshow(cities, "Marker", ".", "MarkerEdgeColor", [0.6350 0.0780 0.1840])

% Añadir etiquetas
textm(35, 14, "Mar Mediterráneo")

2.2.5. Visualización del terreno en 3D

Mapping Toolbox también permite la visualización y el análisis de datos 3D. Por ejemplo, para visualizar un terreno digital en 3D, podemos utilizar la función geoglobe. Esta función crea una figura 3D interactiva que permite rotar, acercar y alejar el mapa. Tambien podemos ubicar la posición de la camara (campos), su ángulo de inclinación (campitch) y de rumbo (camheading).

% Muestra un globo geográfico en una figura
uif = uifigure;
g = geoglobe(uif);

% Ubica la posición de la cámara
campos(g, 24.03, -110.37, 1000)
campitch(g,-10);
camheading(g,20)

También podemos realizar análisis del terreno (como cálculo de pendiente, orientación, líneas de visibilidad, etc.) a partir de datos de elevación y batimetría.

2.2.6. Mapa de elevación

Para visualizar datos de elevación podemos utilizar un avariante de la función geoshow (también se puede usar meshm o surfm). En el siguiente ejemplo, el archivo n39_w106_3arc_v2.dt1 contiene datos de elevación correspondientes a un área de South Boulder Peak, Colorado (en formato DT1). El formato .DT1 se utiliza principalmente para almacenar datos de elevación.

% Cargar datos de elevación (tipo de datos 'double')
% Observa que se recuperan dos variables [A, R] ¿a que corresponde cada una?
[A, R] = readgeoraster("n39_w106_3arc_v2.dt1",OutputType="double");

% Obtiene los límites de la región
latlim = R.LatitudeLimits;
lonlim = R.LongitudeLimits;

% Crea un mapa de elevación
worldmap(latlim,lonlim)
geoshow(A,R,DisplayType="surface")
demcmap(A)