Estou usando a biblioteca maptools do R para analisar o shapefile em uma lista de polígonos. A função readShapeSpatial
shp <- readShapeSpatial("<path to my shapefile>")
me fornece um objeto SpatailPolygonDataFrame . No meu exemplo, meu SpatialPolygonsDataFrame possui as seguintes colunas:
> names(shp)
[1] "AREA" "PERIMETER" "COMAREA_" "COMAREA_ID" "AREA_NUMBE"
[6] "COMMUNITY" "AREA_NUM_1" "SHAPE_AREA" "SHAPE_LEN
Eu sei que eu posso remover certos polígonos por sua row.id
, por exemplo,
shp.dropI <- shp[-i, ]
shp.subset <- shp[i %in% c(1,2,3),]
Agora eu quero descartar certos polígonos com uma condição, digamos AREA > 10
. Como faço para implementar isso de forma elegante? O único método que tenho agora é percorrer todas as linhas e encontrar o correspondente row.id
.
Respostas:
Primeiro, eu recomendo usar o readOGR, da biblioteca rgdal, para ler seu shapefile. Ele reterá as informações da projeção (proj4string) e salvará inúmeras dores de cabeça, quando a correspondência for realizada, usando outras funções.
Duas maneiras rápidas de realizar o que você procura estão usando um índice ou subconjunto. Isso reterá polígonos com uma área <10 (descartando aqueles> 10).
fonte