Estoy usando la biblioteca R maptools para analizar el archivo de forma en una lista de polígonos. La función readShapeSpatial
shp <- readShapeSpatial("<path to my shapefile>")
me da un objeto SpatailPolygonDataFrame . En mi ejemplo, mi SpatialPolygonsDataFrame tiene las siguientes columnas:
> names(shp)
[1] "AREA" "PERIMETER" "COMAREA_" "COMAREA_ID" "AREA_NUMBE"
[6] "COMMUNITY" "AREA_NUM_1" "SHAPE_AREA" "SHAPE_LEN
Sé que puedo eliminar ciertos polígonos por su row.id
, por ejemplo
shp.dropI <- shp[-i, ]
shp.subset <- shp[i %in% c(1,2,3),]
Ahora quiero eliminar ciertos polígonos con una condición, por ejemplo AREA > 10
. ¿Cómo implemento esto con elegancia? El único método que tengo ahora es iterar a través de todas las filas y encontrar el correspondiente row.id
.
Respuestas:
Primero, recomendaría usar readOGR, de la biblioteca rgdal, para leer su archivo de forma. Retendrá la información de proyección (proj4string) y ahorrará numerosos dolores de cabeza, cuando coincida con cadenas, utilizando otras funciones.
Dos formas rápidas de lograr lo que busca son usar un índice o un subconjunto. Esto retendrá los polígonos con un área <10 (descartando esos> 10).
fuente