Sígueme en Twitter

lunes, 29 de julio de 2019

Creación de un buffer cuadrado en R

En este artículo explicaré brevemente la forma de crear un buffer cuadrado mediante el paquete sf a partir de un archivo vectorial de puntos. En gran parte de actividades inmersas en el mundo del Análisis Espacial se requiere la creación de un buffer (área de influencia) para delimitar zonas de interés, y usualmente se utilizan superficies circulares. Se trata de una operación sencilla en donde a partir de una geometría de puntos (para este caso) se crea una nuevo polígono con un radio determinado por el usuario. De hecho, es usual escuchar frases como “10 km a la redonda”, lo que se traduciría a crear un buffer con un radio de 5 km a partir de las ubicaciones de interés (puntos). Sin embargo, se pueden crear áreas de influencias con otro tipo de formas geométricas tal es el caso de un cuadrado. Si pensamos en aplicaciones, lo primero que se puede venir a la mente, por ejemplo es la delimitación de parcelas, o el establecimiento de cuadrantes de seguridad en zonas (colonias, municipios) de alto riesgo, etc. Ahora bien, revisemos el procedimiento. Lo primero es tener un archivo vectorial con geometría de puntos (descargarlo aquí), y en paralelo tener instalada la librería sf, si no sabes cómo hacerlo te invito a que revises la primer entrada de este blog. Más adelante se muestran las líneas de comando que debemos de utilizar para realizar el procedimiento completo, importante recordar que los comentarios aparecen antecedidos por el símbolo # y los comandos del paquete sf por el prefijo st_, además la capa de puntos que utilicemos debe estar proyectada, en este ejemplo tiene EPSG: 32614 ( WGS84/ UTM zona 14N).

#Activación del paquete sf
library(sf)
## Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3
#Se determina la ruta de trabajo (previamente se genera una carpeta en disco C que se llame RSTudio)
setwd("C:/RStudio")
#Se lee el archivo shapefile de geometría de puntos
puntos <- st_read("puntos_utm.shp")
## Reading layer `puntos_utm' from data source `C:\RStudio\puntos_utm.shp' using driver `ESRI Shapefile'
## Simple feature collection with 4 features and 2 fields
## geometry type:  POINT
## dimension:      XY
## bbox:           xmin: 471525.6 ymin: 2142006 xmax: 472545.6 ymax: 2142449
## epsg (SRID):    32614
## proj4string:    +proj=utm +zone=14 +datum=WGS84 +units=m +no_defs
#Visualizamos shape para obtener la distribución espacial de los puntos
plot(st_geometry(puntos), axes=T)

Para realizar el área de influencia se emplea el comando st_buffer, especificándose el objeto al que se realizará la operación (puntos), la distancia en metros (dist), y el tipo de superficie (endCapStyle) donde escribiremos “SQUARE” para que genere la superficie cuadrada.

#Generar buffer cuadrado con dimensión de l=100m, se coloca en dist = l/2
buffer_cuad <- st_buffer(puntos, dist = 50, endCapStyle = "SQUARE")
#Visualizamos el buffer cuadrado 
plot(st_geometry(buffer_cuad), axes=T)

El siguiente paso consiste en la exportación a formato shapefile del nuevo objeto, el cual se guardará en el directorio de trabajo con el nombre “buffer_cuadrado.shp”.

#Guardar en formato shape
st_write(buffer_cuad, "buffer_cuadrado.shp", delete_layer = TRUE)
## Deleting layer `buffer_cuadrado' using driver `ESRI Shapefile'
## Writing layer `buffer_cuadrado' to data source `buffer_cuadrado.shp' using driver `ESRI Shapefile'
## features:       4
## fields:         2
## geometry type:  Polygon

Dirígete al directorio de trabajo y observarás que fue creado el archivo correspondiente al buffer cuadrado compuesto por 4 elementos (shp, shx, prj, dbf), para comprobar que fue ejecutado de manera exitosa abrelo en cualquier visor de información geográfica y mide la distancia del lado del cudrado que debe corresponder a 100 metros.