【问题标题】:How do I remove a subset of polygons from a Large SpatialPolygonsDataFrame using a string search, in R?如何在 R 中使用字符串搜索从大型 SpatialPolygonsDataFrame 中删除多边形子集?
【发布时间】:2020-06-03 01:40:11
【问题描述】:

我在 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 包含区域单位的标签。我希望删除的所有区域单位都有以“入口”或“内陆水域”开头的标签。

我不知道如何从数据中删除这些多边形。 首先,我尝试在 @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 行。如何删除这些多边形?

【问题讨论】:

  • 我想知道您是否可以使用来自其他数据源(如 GADM)的多边形。然后,您就不必经历您正在执行的过程。
  • 如果没有可重现的示例,真的很难帮助您。你能设计一个小数据集来证明你的问题吗?
  • 链接包含我正在使用的数据。
  • @jazzurro 我查看了 GADM 网站,它不包含我需要用于其他映射的多边形。

标签: r string subset polygon spatial


【解决方案1】:

这应该可行。删除了标签中包含“入口”的49个区域和标签中包含“内陆水域”的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
> 

【讨论】:

    猜你喜欢
    • 2018-08-01
    • 2011-11-04
    • 2015-04-17
    • 2021-03-24
    • 1970-01-01
    • 2012-11-06
    • 2015-12-26
    • 1970-01-01
    • 2013-06-16
    相关资源
    最近更新 更多