Rotando objetos espaciales en R con el método elide de maptools

En el artículo anterior se señaló un procedimiento para rotar objetos espaciales empleando la librería DescTools. Como no es una librería orientada a la manipulación de datos espaciales es necesario extraer las coordenadas del objeto, rotarlas y luego recomponer el objeto rotado. Esto es relativamente simple cuando el objeto tiene un solo feature pero es algo más laborioso cuando se tienen múltiples features.

Por los inconvenientes anteriores, es preferible usar una librería con prestaciones espaciales para rotaciones y traslaciones, como maptools, que incluye el método elide para tales fines. El objetivo es rotar 30 grados en sentido antihorario una rejilla (‘grid_aleat.shp’) de 10×10 (100 features).

Para ello, primero establecemos el directorio de trabajo y cargamos el shapefile con los métodos de la librería raster:

setwd('c:/Users/Usuario/pyqgis_data/')
library(raster)
grid <- shapefile('grid_aleat.shp')

Después de cargar la librería, la rotación de los 100 features se realiza en una línea simple de código. No obstante, al objeto rotado es preciso asignarle una proyección.

library(maptools)
grid30 <- elide(grid, rotate=-30, center=apply(bbox(grid), 1, mean))
projection(grid30) <- projection(grid)

La visualización simultánea de los dos objetos (original y rotado) se logra mediante los dos comandos siguientes:

plot(grid30, axes = T, col = 'blue')
plot(grid, add = T, col = alpha('dark green', 0.3))

R10

Esta entrada fue publicada en Lenguaje R. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s