SpatialPolygonsDataFrame

SpatialPolygonsDataFrame

我正在寻找通过属性子集SpatialPolygonsDataFrame的子集,但我想允许它返回一个空的SpatialPolygonsDataFrame。

如果我们将SpatialPolygonsDataFrame类型的对象像data.frames一样对待,如here所述,我们应该能够获取并使用空对象。

我很感兴趣,因为我希望将其合并到一个函数中,该函数可能会尝试通过本质上不选择任何功能的属性进行子集化。

owd <- getwd()
setwd(system.file("shapes", package = "maptools"))
library(maptools)
nc90 <- readShapeSpatial("co37_d90")
setwd(owd)

nc90@data[nc90@data$AREA>0.15,]               # returns data.frame
bigctys <- nc90[nc90@data$AREA>0.15,]         # SpatialPolygonsDataFrame
nc90@data[nc90@data$AREA>0.25,]               # returns empty data.frame
bigestctys <- nc90[nc90@data$AREA>0.25,]      # ERROR


有没有办法使这项工作?如果没有,有没有办法初始化一个空的SpatialPolygonsDataFrame对象?我想要对此类对象执行的未来操作涉及在现有地图上进行绘图,因此我希望无论如何都可以生成图像,即使是空白图像也是如此。

最佳答案

现在你不能。这有点不一致,因为对于SpatialPointsDataFrame对象,您可以:

library(sp)
demo(meuse, ask = FALSE)
x = meuse[F,]


尽管有警告;另外,validObject(x)返回FALSE,因此不允许使用它们!

这样的对象应该代表什么有点抽象,但是我可以看到与零行的data.frame对象的类比:它们可以存在很有用。

10-08 05:06