Saya ingin membuat dua poligon.
Saya ingin membuat dua poligon.
Jawaban:
Berikut ini sebuah contoh.
library(raster)
# example data
x <- raster(system.file("external/test.grd", package="raster"))
Untuk mendapatkan luas persegi panjang
e <- extent(x)
# coerce to a SpatialPolygons object
p <- as(e, 'SpatialPolygons')
Untuk mendapatkan poligon yang mengelilingi sel yang bukan NA
# make all values the same. Either do
r <- x > -Inf
# or alternatively
# r <- reclassify(x, cbind(-Inf, Inf, 1))
# convert to polygons (you need to have package 'rgeos' installed for this to work)
pp <- rasterToPolygons(r, dissolve=TRUE)
# look at the results
plot(x)
plot(p, lwd=5, border='red', add=TRUE)
plot(pp, lwd=3, border='blue', add=TRUE)
r > -Inf
adalah dasar R
. Lakukan c(1,NA,3,NA) > -Inf
untuk melihat cara kerjanya. Saya telah menambahkan alternatif ( reclassify
). Alternatif Anda berfungsi tetapi itu tidak bagus untuk objek besar.
rasterToPolygons()
bagian itu, dan setelah itu saya akan mengevaluasi jawaban Anda. Terima kasih atas -Inf
bitnya, ini akan sangat berguna!
aggregate
karena Anda tidak akan melihat perbedaannya.
aggregate()
r, ia belum diproses (komputer dilengkapi dengan 16 GB RAM). Masalahnya adalah saya harus menjaga batas sebagai asli semampu saya, karena DEM perlu diekstraksi dari poligon yang dihasilkan. Jika saya lebih jauh mencicipi sampel raster saya, saya akan kehilangan batas itu. Ada yang bekerja?
r <- r > -Inf
bagian ini. Apa sebenarnya yang dilakukannya? Dan betapa berbedanya dari ituvalues(r)[!is.na(values(r))] <- 1
(yang menetapkan semua lokasi yang tidak NA dalam r ke 1).