【问题标题】:get an empty SpatialPolygonsDataFrame via subset?通过子集获得一个空的 SpatialPolygonsDataFrame?
【发布时间】:2015-04-16 03:38:09
【问题描述】:

我希望通过属性对 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 对象?我想在这样的对象上执行的未来操作涉及在现有地图上过度绘制,所以我希望无论如何都要生成图像,即使是空白的。

【问题讨论】:

    标签: r spatial maptools sp


    【解决方案1】:

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

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

    虽然有警告;另外,validObject(x) 返回FALSE,所以它们是不允许的!

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

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 2015-04-17
      • 2018-03-18
      • 2021-08-13
      • 2019-08-15
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      相关资源
      最近更新 更多