J'ai un fichier spatial en R, qui contient toutes les area units< /a> pour la Nouvelle-Zélande. Je l'ai téléchargé au format NZGD2000. Dans ce fichier, j'ai des détails géographiques non pertinents, tels que les régions océaniques. J'ai réussi à les supprimer de mes données en supprimant simplement les polygones dont la valeur est supérieure à une certaine valeur.

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,]

J'ai le problème que les unités de zone incluent les bras de mer et les eaux intérieures. Je ne peux pas les supprimer de la même manière que j'ai supprimé les unités côtières, car les valeurs des unités de surface ne sont pas contiguës. Le @data$$AU2013_V_1 contient les étiquettes des unités de surface. Toutes les unités de surface que je souhaite supprimer ont l'étiquette commençant par "Inlet" ou "Inland Water".

Je ne peux pas comprendre comment supprimer ces polygones des données. J'ai d'abord essayé sans le nom de la trame de données devant @data :

NZAreas <- NZAreas[!grepl("Inlet", @data$AU2013_V_1),]
Error: unexpected '@' in "NZAreas <- NZAreas[!grepl("Inlet", @"

Puis j'ai essayé:

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

Ce deuxième code s'exécute mais ne supprime pas les polygones ; il ne semble rien faire au Large SpatialPolygonDataFrame. J'ai vérifié le dataframe que j'ai construit à partir de NZAreas et il y a des rangées Inlet et Inland Water. Comment supprimer ces polygones ?

0
Michelle 19 févr. 2020 à 02:38

1 réponse

Meilleure réponse

Cela devrait fonctionner. Il a supprimé 49 zones contenant « Inlet » dans l'étiquette et 15 zones ayant « Inland Water » dans l'étiquette.

> 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
> 
1
Shubham Pujan 19 févr. 2020 à 08:37