如何在 R 中使用字符串搜索从 Large SpatialPolygonsDataFrame 中删除多边形的子集?

How do I remove a subset of polygons from a Large SpatialPolygonsDataFrame using a string search, in R?

我在 R 中有一个空间文件,其中包含新西兰的所有 area units。我下载的是NZGD2000格式的。在这个文件中,我有不相关的地理细节,例如海洋区域。我已经设法通过简单地删除那些高于特定值的多边形来从我的数据中删除它们。

library("dplyr")
library("rgdal")
library("rgeos")

NZAreas <- readOGR("[FILEPATH]/area-unit-2013.shp")
#remove the areas that are offshore
NZAreas@data$AU2013_V1_ <- as.numeric(as.character(NZAreas@data$AU2013_V1_))
NZAreas <- NZAreas[NZAreas@data$AU2013_V1_ < 614000,]

我的问题是区域单位包括入口和内陆水域。我无法像删除沿海单位那样删除它们,因为面积单位值不是连续的。 @data$$AU2013_V_1 包含面积单位的标签。我希望删除的所有区域单位的标签都以 "Inlet" 或 "Inland Water".

开头

我不知道如何从数据中删除这些多边形。 首先,我尝试在 @data:

前面没有数据框名称
NZAreas <- NZAreas[!grepl("Inlet", @data$AU2013_V_1),]
Error: unexpected '@' in "NZAreas <- NZAreas[!grepl("Inlet", @"

然后我尝试了:

NZAreas <- NZAreas[!grepl("Inlet", NZAreas@data$AU2013_V_1),] 

第二个代码运行但不删除多边形;它似乎对 Large SpatialPolygonDataFrame 没有任何作用。我检查了我根据 NZAreas 构建的数据框,并且有 Inlet 和 Inland Water 行。如何删除这些多边形?

这应该有效。它删除了标签中包含 "Inlet" 的 49 个区域和标签中包含 "Inland Water" 的 15 个区域。

> dim(NZAreas)
[1] 2004    5
> NZAreas=NZAreas[!grepl("Inlet", NZAreas$AU2013_V_1),]
> dim(NZAreas)
[1] 1955    5
> NZAreas=NZAreas[!grepl("Inland Water", NZAreas$AU2013_V_1),]
> dim(NZAreas)
[1] 1940    5
>