Как удалить подмножество полигонов из Large SpatialPolygonsDataFrame, используя поиск строки в R? - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть пространственный файл в R, который содержит все единицы площади для Новой Зеландии. Я скачал его в формате NZGD2000. В этом файле у меня есть нерелевантные детали географии c, такие как регионы Океани c. Мне удалось удалить их из моих данных, просто удалив те многоугольники, которые превышают определенное значение.

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 содержит метки для единиц измерения площади. Все единицы измерения площади, которые я хочу удалить sh, имеют метку, начинающуюся с "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. Как мне удалить эти полигоны?

1 Ответ

1 голос
/ 19 февраля 2020

Это должно работать. Он удалил 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
> 
...