Llevando el territorio al escritorio - Visualizando mapas con R

En nuestro artículo de Medium te contamos brevemente qué son los Radios Censales, cómo están construidos y qué información tenemos disponible. En este artículo te vamos a mostrar cómo trabajar con información geográfica en R y nuestro ejemplo serán, precisamente, los radios censales.

Lo primero que vamos a tener que hacer es descargar el archivo “shapefile” del territorio con el que vamos a trabajar. La fuente oficial en la Argentina es el Instituto Nacional de Estadística y Censos de la República Argentina (INDEC) y podemos acceder a ellos a través de la siguiente página. Para este tutorial vamos a trabajar con datos de la Provincia de Córdoba, por lo tanto vamos a descargar el siguiente archivo:

https://www.indec.gov.ar/ftp/cuadros/territorio/codgeo/Codgeo_Cordoba_con_datos.zip

Una vez que lo hemos descargado, vamos a abrir el archivo utilizando el paquete sf1.

# Instalamos los paquetes si no están instalados en nuestras computadoras
# install.packages("tidyverse")
# install.packages("sf")

# Carga de los paquetes a utilizar
library(tidyverse)
library(sf)

# Abriendo el shp
radios.cordoba <- st_read("../Datos/Codgeo_Cordoba_con_datos/", layer = "Cordoba_con_datos") 
## Reading layer `Cordoba_con_datos' from data source `/Users/lauti/Google Drive/Lauti/Proyectos/03.Accesibilidad/Datos/Codgeo_Cordoba_con_datos' using driver `ESRI Shapefile'
## Simple feature collection with 4752 features and 8 fields
## geometry type:  POLYGON
## dimension:      XY
## bbox:           xmin: 3521762 ymin: 6124005 xmax: 3898182 ymax: 6736174
## epsg (SRID):    NA
## proj4string:    +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=WGS84 +units=m +no_defs

Cuando cargamos el archivo geográfico, vemos el siguiente mensaje en la consola. ¿Qué significan cada una de las lineas?:

Como vemos en el punto anterior, epsg (SRID): es NA. Por lo tanto, lo que se debe hacer es transformarlo al mismo CRS que vamos a utilizar a lo largo del trabajo EPSG: 4326 y para ello vamos a utilizar la función st_transform().

radios.cordoba <- st_transform(radios.cordoba, crs = 4326)

La primer aproximación a este dataset debería ser ver que datos tiene:

# Exploración inicial de datos
summary(radios.cordoba)
##    toponimo_i            link          varon            mujer       
##  Min.   :286803   140070101:   1   Min.   :   0.0   Min.   :   0.0  
##  1st Qu.:315083   140070102:   1   1st Qu.: 198.0   1st Qu.: 218.0  
##  Median :316310   140070103:   1   Median : 334.0   Median : 369.0  
##  Mean   :312347   140070104:   1   Mean   : 337.8   Mean   : 358.5  
##  3rd Qu.:317835   140070105:   1   3rd Qu.: 455.2   3rd Qu.: 489.0  
##  Max.   :336422   140070106:   1   Max.   :2483.0   Max.   :1622.0  
##                   (Other)  :4746                                    
##    totalpobl         hogares        viviendasp       viv_part_h   
##  Min.   :   0.0   Min.   :  0.0   Min.   :   2.0   Min.   :  0.0  
##  1st Qu.: 419.8   1st Qu.:145.0   1st Qu.: 194.0   1st Qu.:138.0  
##  Median : 703.0   Median :229.5   Median : 269.0   Median :218.0  
##  Mean   : 696.3   Mean   :217.1   Mean   : 259.3   Mean   :205.9  
##  3rd Qu.: 944.0   3rd Qu.:293.0   3rd Qu.: 339.0   3rd Qu.:277.0  
##  Max.   :3273.0   Max.   :850.0   Max.   :1172.0   Max.   :707.0  
##                                                                   
##           geometry   
##  POLYGON      :4752  
##  epsg:4326    :   0  
##  +proj=long...:   0  
##                      
##                      
##                      
## 

Aquí vemos que el archivo radios.cordoba tiene las siguientes variables:

El siguiente paso será visualizar los radios censales de la Provincia de Córdoba. Para dicha tarea hay una gran variedad de paquetes en R que responden a distintas necesidades. Nosotros vamos a utilizar el paquete ggplot2 para las visualizaciones estáticas (preferible, por ejemplo, para la elaboración de informes impresos) y el paquete leaflet para las visualizaciones dinámicas (preferible para la exploración interactiva).

Vayamos primero con ggplot2:

# Instalamos los paquetes si no están instalados en nuestras computadoras
# install.packages("ggplot2")

# Carga de los paquetes a utilizar
library(ggplot2)

ggplot() + geom_sf(data = radios.cordoba) +
  labs(title = "Radios Censales de la Provincia de Córdoba",
         subtitle = "Fuente: INDEC")

Lo primero que se puede ver a simple vista es el contorno de la Provincia de Córdoba. Lo segundo que se puede apreciar es el tamaño dispar de muchos de los radios censales, concentrándose los más pequeños alrededor de las ciudades y los más extensos en el medio del campo. La desventaja es que si como analistas queremos explorar un área con mayor detenimiento, deberíamos usar algún paquete interactivo, como leaflet.

# Instalamos los paquetes si no están instalados en nuestras computadoras
# install.packages("leaflet")

# Carga de los paquetes a utilizar
library(leaflet)

leaflet() %>%
     addTiles() %>%
     addProviderTiles("CartoDB.Positron") %>%
     # Mapeando los poligonos de Cordoba
     addPolygons(data = radios.cordoba,
                 color = "grey", weight = 1, smoothFactor = 0.5,
                 opacity = 1.0)

De esta manera tenemos el mismo mapa que antes, pero ahora podemos explorar el mapa interactivamente, hacer zoom en alguna ciudad o movernos por la provincia.


  1. Aquí un manual y un tutorial, ambos en inglés