Saya menggunakan pustaka R maptools untuk mem-parsing shapefile ke daftar poligon. Fungsi readShapeSpatial
shp <- readShapeSpatial("<path to my shapefile>")
memberi saya objek SpatailPolygonDataFrame . Dalam contoh saya, SpatialPolygonsDataFrame saya memiliki kolom berikut:
> names(shp)
[1] "AREA" "PERIMETER" "COMAREA_" "COMAREA_ID" "AREA_NUMBE"
[6] "COMMUNITY" "AREA_NUM_1" "SHAPE_AREA" "SHAPE_LEN
Saya tahu bahwa saya dapat menghapus poligon tertentu dengan mereka row.id
, misalnya
shp.dropI <- shp[-i, ]
shp.subset <- shp[i %in% c(1,2,3),]
Sekarang saya ingin menjatuhkan poligon tertentu dengan syarat, katakanlah AREA > 10
. Bagaimana saya menerapkan ini dengan elegan? Satu-satunya metode yang saya miliki sekarang adalah beralih ke semua baris dan menemukan yang sesuai row.id
.
Jawaban:
Pertama, saya akan sangat menyarankan menggunakan readOGR, dari perpustakaan rgdal, untuk membaca shapefile Anda. Ini akan mempertahankan informasi proyeksi (proj4string) dan menyimpan banyak sakit kepala, ketika pencocokan string, menggunakan fungsi lain.
Dua cara cepat untuk mencapai apa yang Anda cari menggunakan indeks atau menggunakan subset. Ini akan mempertahankan poligon dengan area <10 (menjatuhkan mereka> 10).
sumber