Los mapas son una herramienta poderosa para la visualización de datos geográficos y la comunicación de información espacial. En R, los mapas pueden ser creados y manipulados utilizando una variedad de paquetes, especialmente aquellos diseñados para trabajar con archivos ‘shapefile’. Los archivos shapefile son un formato popular de datos espaciales desarrollado por Esri, que se utilizan comúnmente en el software de Sistemas de Información Geográfica (SIG).
Un shapefile almacena datos geográficos no topo-lógicos en forma de puntos, líneas y polígonos, junto con información atributiva sobre cada una de las formas. Estos archivos se utilizan para representar, por ejemplo, los límites de una ciudad, cursos de ríos, distribuciones de poblaciones, y más.
¿Como hacer mapas con R?
En R, paquetes como sp, rgdal, y sf (simple features) facilitan la lectura, escritura y manipulación de shapefiles. El paquete sf en particular se ha vuelto el estándar para trabajar con datos geográficos en R, ya que proporciona una integración más sencilla y directa con el sistema de objetos de R, y permite una sintaxis más limpia y operaciones más rápidas.
¿Como conseguir archivos shapefile?
Podemos conseguir dichos archivos en plataformas como:
ArcGIS Hub: es una plataforma de colaboración e intercambio de datos de Esri que permite a las organizaciones, al público y a diferentes partes interesadas conectarse en torno a proyectos comunitarios y objetivos cívicos. Su objetivo principal es brindar un punto de encuentro donde se pueda compartir información geográfica, interactuar con el público y colaborar en la resolución de problemas que afectan a comunidades locales, regionales o globales. https://hub.arcgis.com/
Portales de Datos Nacionales: Como el USGS (United States Geological Survey) en Estados Unidos o el IGN (Instituto Geográfico Nacional) en España.
Portales Estatales o Regionales: Muchos estados y regiones tienen sus propios portales de datos GIS.
Portales Municipales: Las ciudades a menudo publican sus datos GIS para uso público.
Natural Earth: Ofrece datos geoespaciales gratuitos de alta calidad, adecuados para hacer mapas a diferentes escalas.
OpenStreetMap: Aunque no es un shapefile en sí, se pueden descargar los datos de OSM y convertirlos a shapefiles usando herramientas como QGIS.
Los archivos utilizados en este ejemplo provienen de lo publicado por este usuario en el portal ArcGIS Hub:
Una vez es descargado el archivo shapefile. Debe ser descomprimido de tal manera que quede en nuestra carpeta de trabajo la información necesaria para el archivo shp:
Construir el mapa
Una vez tenemos los archivos shapefile, necesitamos tener organizada la información que buscamos mostrar. En este ejemplo se busca mostrar la información de cada cantón por una variable categórica llamada tipo.
Leemos el archivo shp con la función read_sf del paquete sf, es importante que los archivos estén en la carpeta de trabajo pues se hace referencia a ellos directamente.
mapa <-read_sf("Cantones_de_Costa_Rica.shp")
Utilizamos el paquete ggplot2 y la función geom_sf para mostrar una versión básica del mapa. Coloreamos el relleno de los cantones de acuerdo a su tipo.
ggplot(mapa, aes(fill = datos$Tipo)) +geom_sf()
Se observa que una pequeña isla desplaza el mapa muy arriba a la derecha. Podemos recortar las coordenadas utilizando la función coord_sf para presentar la información del mapa que necesitemos.
Una vez tenemos la información del mapa, podemos editar lo básico de un mapa en ggplot2, como es el tema de fondo, la escala de color, etiquetas y configuramos el tema de cada objeto del gráfico.
Una vez tenemos el mapa configurado, solamente necesitamos añadir la escala con la función annotation_scale para tener un proporción del tamaño. Entre los argumentos de la escala está la localización esta puede tener las primeras letras de cada posición, en este caso lo queremos abajo a la izquiera, en ingles bottom left (bl), el siguiente argumento es el tamaño de la escala, entre mayor sea mayor será la escala.
La rosa de los vientos nos sirve para señalar el norte del mapa con la función annotation_north_arrow, podemos configurar su posición y su tamaño entre otros argumentos.