Eu tenho uma lista de buffers espaciais (30000 buffers) que criei com a função lapply
:
buff.pts <- lapply(1:nrow(pts.prj), FUN=function(l){
buff <- gBuffer(pts.prj[l,], width=1000) ## 1km
return(buff)
}))
> head(buff.pts)
[[1]]
class : SpatialPolygons
features : 1
extent : 307941.8, 311941.8, 4994518, 4998518 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs +towgs84=0,0,0
[[2]]
class : SpatialPolygons
features : 1
extent : 307226, 311226, 4991153, 4995153 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs +towgs84=0,0,0
Nesta lista, como posso mesclar todos os buffers espaciais para obter um shapefile com os 30000 buffers (ou recursos)? (Esse shapefile será usado na função aggregate
para agregar polígonos espaciais por atributos.)
Eu testei esse código, mas recebo esta mensagem de erro:
test <- as.data.frame(do.call("rbind", buff.pts))
Error in as.data.frame(do.call("rbind", buff.pts)) :
error in evaluating the argument 'x' in selecting a method for function 'as.data.frame': Error in validObject(res) :
invalid class “SpatialPolygons” object: non-unique Polygons ID slot values
lapply
em vez de usargBuffer
combyid = TRUE
?Respostas:
Dada uma lista de
SpatialPolygons
objetos, veja como construir um quadro de dados de polígonos espaciais com um recurso por originalSpatialPolygons
recurso .Dados da amostra:
spl
é uma lista de 12SpatialPolygons
objetos - verifique se o seu objeto apresenta os mesmos resultados e teste em uma pequena amostra antes de executar em 30.000:Você deseja criar um único
Spatial Polygons
objeto com todos os recursos para criar um quadro de dados de polígonos espaciais:Isso pega o primeiro
polygons
slot do objeto (e deve haver apenas um, já que cada elemento da lista é atualmente um único recurso) e, em seguida, cria uma lista de objetos Polígonos, que é o que você alimentaSpatialPolygons
para criar um recurso múltiploSpatialPolygons
. Plote isso e você deverá ver todos os seus recursos. Em seguida, se você quiser salvar comoshapefile
, precisará adicionar alguns dados. Na ausência de qualquer outra coisa, crio uma coluna simples de 1 a 12 ID:o
FALSE
bandeira apenas para R tentando reorganizar os dados espaciais e não espaciais para corresponder. Você pode querer colocar os tamanhos de buffer no quadro de dados ou algo assim.Tarefa concluída.
fonte
Para mesclar uma lista de objetos espaciais, você pode:
fonte
Você pode usar o argumento makeUniqueIDs em rbind se seus polígonos não tiverem IDs exclusivos.
fonte