3 votos

¿Cómo crear múltiples anillos entre dos buffers circulares?

Estoy trabajando con la modelización matemático-ecológica y también soy un nuevo usuario del software QGIS. Primero estoy creando 3 topes circulares con el mismo centro (shape center) que cubren una región con carreteras (shape roads), así que tengo inicialmente dos shapes y después creo 3 topes circulares. Todo el trabajo matemático que uso el software R para producir el número de anillos intermedios y las distancias con cada uno de estos anillos intermedios que estarán entre el par de buffers circulares principales.

Mis primeras preguntas son: ¿Cómo podría crear de forma automatizada el proceso de anillos o buffers entre las circulares principales? ¿Hay scripts u otra solución para esto?

Mi segundo y último: Tengo carreteras que cruzan los topes y en caso de creación de anillos (o topes intermedios) ¿cómo podría calcular la longitud de las carreteras entre los dos anillos intermedios?

UPDATE

enter image description here

El problema son los anillos realizados con un proceso no automatizado y además realizados en tabla de atributos. Por lo que deseo hacer conjuntamente el proceso de automatización con el cálculo de los caminos que cruzan el par de anillos. Usando R como has dicho es posible, pero me gustaría saber el proceso de ambos porque será mejor saber cómo será más fácil para mí. es mi primer trabajo con QGIS.

2voto

nshaw Puntos 1506

Voy a responder a su pregunta. Por favor, abra otro post para la segunda.

Puede automatizar tareas en QGIS utilizando el modelador gráfico o scripts de python. Ambos funcionan bien y puedes encontrar buena documentación al respecto. Si ya trabajas con R puede ser útil para ti realizar las partes de GIS en R también. Los paquetes rgeos y rgdal deberían tener todas las herramientas que necesitas ( readOGR(), gBuffer() ). Si sabes cómo quieres resolver esta tarea puedes obtener ayuda adicional.

Para hacerlo un poco más fácil he escrito un pequeño Buffer-Loop en R para ti:

require(rgeos)
require(rgdal)

points <- readOGR(dsn="C:/local_work/example", layer="points_wgs84_pm")
distances <- seq(1000,2000,100)
buffers <- list()
plot(points)
for(i in distances){
  buffers[as.character(i)] <- gBuffer(points, width=i)
  plot(buffers[as.character(i)][[1]],add=T)
}

Puede exportar los buffers utilizando writeOGR() si quieres, pero también puedes seguir trabajando en R.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X