J'utilise la bibliothèque R maptools pour analyser le fichier de formes dans une liste de polygones. La fonction readShapeSpatial
shp <- readShapeSpatial("<path to my shapefile>")
me donne un objet SpatailPolygonDataFrame . Dans mon exemple, mon SpatialPolygonsDataFrame a les colonnes suivantes:
> names(shp)
[1] "AREA" "PERIMETER" "COMAREA_" "COMAREA_ID" "AREA_NUMBE"
[6] "COMMUNITY" "AREA_NUM_1" "SHAPE_AREA" "SHAPE_LEN
Je sais que je peux supprimer certains polygones par leur row.id
, par exemple
shp.dropI <- shp[-i, ]
shp.subset <- shp[i %in% c(1,2,3),]
Maintenant, je veux supprimer certains polygones avec une condition, disons AREA > 10
. Comment puis-je implémenter cela avec élégance? La seule méthode que j'ai maintenant consiste à parcourir toutes les lignes et à trouver le correspondant row.id
.
Réponses:
Tout d'abord, je recommande fortement d'utiliser readOGR, de la bibliothèque rgdal, pour lire votre fichier de formes. Il conservera les informations de projection (proj4string) et économisera de nombreux maux de tête, lors de la correspondance de chaînes, en utilisant d'autres fonctions.
Deux façons rapides d'accomplir ce que vous recherchez sont d'utiliser un index ou un sous-ensemble. Cela conservera les polygones d'une zone <10 (en les supprimant> 10).
la source