Apakah ada cara mudah untuk secara acak mengambil sampel raster sehingga output dari proses tersebut adalah raster?
Saya menggunakan contoh yang saya temukan di r-sig-geo
daftar dan saya juga mencoba sampleRandom
fungsi dalam raster
paket. Kedua pendekatan ini menghasilkan output yang saya tidak yakin bagaimana mengubahnya menjadi raster. Saya tidak dapat menemukan pendekatan setelah mencari beberapa kombinasi "raster SpatialPointsDataFrame".
library(raster)
# read in raster
rasterSource <- 'landsat.TIF'
r <- raster(rasterSource)
# convert to spatial points data frame
r.spgrd<-as(r,"SpatialPointsDataFrame")
# elminate NA values
r.spgrd = r.spgrd[!is.na(r.spgrd[[1]]),]
# sample points
selectedPoints = sample(1:length(r.spgrd[[1]]), 1000)
r.sampled = r.spgrd[selectedPoints,]
# try to make spgrd into a raster
r.test <- raster(r.sampled)
Ketika saya menjalankan r.test
saya mendapatkan output:
class : RasterLayer
dimensions : 10, 10, 100 (nrow, ncol, ncell)
resolution : 28617, 14766 (x, y)
extent : 1838505, 2124675, 2328685, 2476345 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
values : none
Sehingga baris berikut yang mencoba menulis raster menghasilkan pesan:
# write out as ascii file
writeRaster(r.test, filename="test1.ASC", datatype="ascii", overwrite=TRUE)
Error: hasValues(x) is not TRUE
Tujuan utama saya adalah menghasilkan beberapa jenis raster setelah proses pengambilan sampel. Saya juga baik-baik saja dengan hanya mengubah nilai-nilai dalam raster saya (saya hanya tidak yakin bagaimana cara melakukannya).
r[r "condition"]
. Jadi, jika Anda ingin mengatur semua nilai raster yang100
akan1
Anda dapat menulisr[r == 100] <- 1
. Terima kasih @whuber - contoh yang sangat berguna!Anda dapat menggunakan
sampleRandom
fungsi ini:sumber