En la ciencia de datos, existe un área que trabaja con datos geoespaciales y especialmente en la generación de visualizaciones de mapas. Estos gráficos nos permiten comprender las métricas en distintas regiones geográficas.
“Recolectando y analizando datos hace lo invisible visible”
Melinda Gates
En R, es posible generar mapas utilizando los paquetes: ggplot2, leaflet,. Antes de adentrarnos en este paquete, es interesante conocer el funcionamiento del sistema de gráficos en R. Este sistema está conformado por:
Figura 1: Sistema de gráficos en R
El paquete ggplot2 permite elaborar gráficos a partir de un proceso de acumulación de capas. Tiene cierto grado de complejidad, pero permite obtener resultados muy profesionales.
Las soluciones más comunes para generar mapas involucran software GIS como QGIS o ArcMap. Y entonces, ¿qué ventajas nos ofrece R frente al software GIS para generar nuestros mapas? Algunas de ellas son:
Es útil representar nuestros datos ambientales (en este proyecto: número de aves) de una forma simple y rápida. A continuación, se presenta el paso a paso de un proyecto de estudio que consta en la creación de un mapa de Santiago de Chile, en el cual se visualizan los puntos de mayor concentración de aves. Cabe resaltar que esta visualización se complementa con una capa de puntos sobre el mapa y su respectiva leyenda.
Se recomienda descargar las librerías en RStudio.
library(tidyverse) # Limpieza de datos
library(ggmap) # Mapas
library(sf) # Dataframe a espacial
library(ggspatial) # Mapas
library(osmdata) # Mapa
library(vembedr)
knitr::opts_chunk$set(echo = TRUE)
Un bounding box (bbox) es un área definida por dos longitudes y dos latitudes, en el cuál el estandar es:
stgo_bbox <- getbb("Santiago")
map <- get_stamenmap(
bbox = c(
left = stgo_bbox[1, 1],
bottom = stgo_bbox[2, 1],
right = stgo_bbox[1, 2],
top = stgo_bbox[2, 2]
),
zoom = 12,
maptype = "terrain"
)
En este proceso se ubicarán las variables latitud y longitud (para la geolocalización de puntos), así como el número de aves.
lugares_stgo <- tribble(
~ "lng", ~ "lat", ~ "numero_aves",
-70.51861,
-33.38371,
21,
-70.71982,
-33.51318,
33,
-70.65768,
-33.42345,
12,
-70.55768,
-33.56177,
15,
-70.67279,
-33.50156,
52
)
Estos datos ahora son transformados a un objeto sf. Revisar siempre el CRS en esta etapa del proyecto.
lugares_stgo_sf <-
st_as_sf(lugares_stgo, coords = c("lng", "lat"), crs = 4326)
mapa_urbano <- ggmap(map) +
geom_sf(
data = lugares_stgo_sf,
aes(color = numero_aves),
size = 3,
inherit.aes = FALSE
) +
labs(x = "", y = "", color = "número\nde aves") +
annotation_scale(location = "br",
bar_cols = c("grey20", "white")) +
ggtitle("Santiago de Chile") +
annotation_north_arrow(
location = "tl",
which_north = "true",
style = north_arrow_nautical(fill = c("grey40", "white"),
line_col = "grey20")
)
## Coordinate system already present. Adding new coordinate system, which will replace the existing one.
mapa_urbano
A partir de este proyecto, se recomienda realizar proyectos similares de geolocalización en mapas, utilizando el lenguaje de programación Python.
| Lenguaje R | Lenguaje Python |
|---|---|
| De propósito general | Lenguaje open source |
| Fácil de escribir y mantener | tiene curva de aprendizaje |
| Flexibilidad y fácil lectura | Usado para visualizaciones de datos |
| Dirigido principalmente a Machine Learning | Dirigido principalmente hacia Ciencia de Datos |
En Python, existen dos bibliotecas geoespaciales muy populares:
Geopandas: extiende Pandas para permitir operaciones espaciales en tipos geométricos.
Geoplot: una biblioteca de gráficos geoespaciales de alto nivel.
La segunda biblioteca es especialmente útil, ya que se basa en otras bibliotecas geoespaciales y permite simplificar la codificación. Entre otras bibliotecas, también se incluyen: cartopy, que a su vez aprovecha Cython, NumPy, GEOS, Shapely, pyshp, PROJ, Six y quizás algunos otros como mapclassify, según las funciones que se necesite usar.
En la siguiente lista se encuentran los términos más utilizados en el trabajo con datos geoespaciales: