GIS y R Parte 2: manejo básico de ESRI Shapefile (SHP) en R
En este conjunto de entradas vamos a cubrir lo básico al momento de leer y manipular archivos del tipo ESRI shapefile en R. R tiene algunas librerías muy útiles para trabajar con datos espaciales. En esta entrada utilizaremos la librería denominada rgdal. La documentación de la librería la puedes encontrar en el siguiente link.
En esta Parte II se aprenderá a manejar (filtrar, seleccionar, ordenar, crear variables) en los archivos SHP mediante los paquetes base.
R, al ser un lenguaje de programación orientado a objetos, todo archivo cargado en su ambiento global de trabajo debe guardarse como un objeto. El tipo de objetos más comúnmente usados en R son valores, vectores, matrices, funciones y lista. El cargar un archivo .shp, este se asigna a un tipo de objeto denominado "SpatialPolygonDataFrame", el cual es un tipo especial de lista. para identificar el tipo de objeto con el que estamos trabajando usamos la función class.
# para identificar qué tipo de objeto son aman y dis
> class(aman)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"
> class(dis)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"
EndFragment
La lista en R es un objeto de objetos que permite combinar diferentes tipos de objetos como elementos de la lista. Por ejemplo, aman es una lista formada por los siguientes objetos:
data: atributos o campos del shp original.
polygons: geometrías del shp.
plotOrder: orden de presentación gráfica de los objetos espaciales.
bbox: extensión geográfica (bounding box) del archivo shp.
proj4string: toda la información relacionada con la proyección del archivo shp.
![](https://static.wixstatic.com/media/f790c6_e419383b112a4c65bf6c9d74d76be5a8~mv2.png/v1/fill/w_743,h_353,al_c,q_85,enc_auto/f790c6_e419383b112a4c65bf6c9d74d76be5a8~mv2.png)
Dicho esto, si se quisiera saber la proyección del objeto aman ejecuto:
# para identificar qué tipo de objeto son aman y dis
> aman@proj4string
CRS arguments:
+proj=utm +zone=17 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
Manejo de SHP - Filtro
Si se quisiera filtrar los objetos geográficos pertenecientes a la ciudad de Cuenca, Ecuador (cuyo código de ciudad es 010150), ejecutamos:
> cuenca <- aman[aman@data$CIUDAD=="010150", ]
> class(cuenca)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"
> cuenca@proj4string
CRS arguments:
+proj=utm +zone=17 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
> plot(cuenca)
![](https://static.wixstatic.com/media/f790c6_c82e43bbce5e4a7c88d3a3a86cf9688a~mv2.png/v1/fill/w_564,h_564,al_c,q_85,enc_auto/f790c6_c82e43bbce5e4a7c88d3a3a86cf9688a~mv2.png)
Manejo de SHP - Selección de campos
Si se requiere crear un nuevo objeto a parte de dis que contenga únicamente los campos DPS_SECDIS, FUENTE y Shape_Area ejecutamos:
> dis_2 <- dis[, c("DPA_SECDIS","FUENTE","Shape_Area")]
> class(dis_2)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"
> names(dis_2@data)
[1] "DPA_SECDIS" "FUENTE" "Shape_Area"
Manejo de SHP - Creación de campos
Si se necesita crear en el objeto aman un campo con el código de provincia para cada uno de sus objetos espaciales, nos apoyamos en el código de ciudad (CIUDAD) que lo contiene y ejecutamos:
> aman$PROV <- substr(aman$CIUDAD,1,2)
> unique(aman@data$PROV)
[1] "02" "20" "90" "09" "12" "24" "23" "08" "13" "01" "07" "11" "03" "14" [15] "19" "06" "16" "18" "05" "17" "22" "21" "15" "10" "04"
Manejo de SHP - Filtro
Si se quisiera filtrar los objetos geográficos pertenecientes a la ciudad de Cuenca, Ecuador (cuyo código de ciudad es 010150), ejecutamos:
> aman@proj4string
CRS arguments:
+proj=utm +zone=17 +south +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
Con esto terminamos esta entrada.