применить к unionSpatialPolygons в списке - PullRequest
0 голосов
/ 19 октября 2018

У меня есть большой список объектов SpatialPolygonsDataFrame, которые я создал, используя lapply и gdal_polygonizeR (код здесь: https://johnbaumgartner.wordpress.com/2012/07/26/getting-rasters-into-shape-from-r/) в списке объектов RasterLayer. Теперь я хочу объединить границы частей многоугольника, которыекоснитесь в каждом SpatialPolygonsDataFrame, используя unionSpatialPolygons (maptools). Я проверил это, вызвав отдельный объект SpatialPolygonsDataFrame, и это, кажется, работает. Но, когда я пытаюсь сделать это для списка всех SpatialPolygonsDataFrame, используя lapply,Я получаю сообщение об ошибке. См. Код ниже (очень жаль, что мой пример не воспроизводится) и, пожалуйста, укажите решение, используя lapply или альтернативу. Спасибо

#convert RasterLayers to SpatialPolygonsDataFrame objects
polyl <- lapply(rastl, gdal_polygonizeR)

#test union of polygon parts within individual SpatialPolygonsDataFrame
tmp = unionSpatialPolygons(polyl[[10]], polyl[[10]]$DN) 

polyl[[10]]  #n = 360 features
tmp          #n = 8 features

#run union on all SpatialPolygonsDataFrame in list
polyl_union <- lapply(polyl, unionSpatialPolygons, SpP = 
polyl, IDs = polyl$DN)  

#Error in FUN(X[[i]], ...) : not a SpatialPolygons object

1 Ответ

0 голосов
/ 19 октября 2018

Я не знаю, что вызывает ошибку.Альтернативный путь, который вы могли бы попробовать, это

library(raster)
x <- bind(poly)
y <- aggregate(x, "DN")

С примерами данных:

set.seed(0)
r <- raster(ncol=5, nrow=5, xmn=0, xmx=1, ymn=0, ymx=1)
values(r) = sample(5, ncell(r), replace=TRUE)
rr <- list()
rr[[1]] <- crop(r, extent(0,0.5,0,0.5))
rr[[2]] <- crop(r, extent(0.5,1,0.5,1))
rr[[3]] <- crop(r, extent(0,0.5,0.5,1))
rr[[4]] <- crop(r, extent(0.5,1,0,0.5))
x <- list(r1, r2, r3, r4)  
y <- lapply(x, rasterToPolygons)


b <- bind(y) 
a <- aggregate(b, 'layer')

plot(r)
plot(a, add=TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...