Объединение отдельных пространственных полигонов в список в R - PullRequest
0 голосов
/ 07 февраля 2020

Это пример списка с двумя отдельными (не смежными или перекрывающимися) SpatialPolygons, и я хотел бы объединить их в один шейп-файл. По какой-то причине, что бы я ни пытался, я получаю ошибку:

library(sp)

coords = matrix(c(78.46801, 19.53407,
                  78.46801, 19.74557,
                  78.83157, 19.74557,
                  78.83157, 19.53407,
                  78.46801, 19.53407), 
                ncol = 2, byrow = TRUE)


P1 = Polygon(coords)
Ps1 = SpatialPolygons(list(Polygons(list(P1), ID = "a")), proj4string=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"))


coords2 = matrix(c(77.46801, 17.53407,
                  77.46801, 17.74557,
                  77.83157, 17.74557,
                  77.83157, 17.53407,
                  77.46801, 17.53407), 
                ncol = 2, byrow = TRUE)


P2 = Polygon(coords2)
Ps2 = SpatialPolygons(list(Polygons(list(P2), ID = "a")), proj4string=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"))

P_list <- list(Ps1,Ps2)

joined = SpatialPolygons(lapply(P_list, function(x){x@polygons[[1]]}))
Error in validObject(res) : 
  invalid class “SpatialPolygons” object: non-unique Polygons ID slot values
...