Existe-t-il un moyen simple d'échantillonner au hasard un raster afin que la sortie du processus soit un raster?
J'utilise un exemple que j'ai trouvé sur la r-sig-geo
liste et j'ai également essayé la sampleRandom
fonction dans le raster
package. Ces deux approches produisent une sortie que je ne sais pas comment transformer en raster. Je n'ai pas pu trouver d'approche après avoir recherché plusieurs combinaisons de "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)
Quand je cours, r.test
j'obtiens la sortie:
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
Pour que la ligne suivante qui essaie d'écrire un raster génère le message:
# write out as ascii file
writeRaster(r.test, filename="test1.ASC", datatype="ascii", overwrite=TRUE)
Error: hasValues(x) is not TRUE
Mon objectif principal est de produire un certain type de raster après le processus d'échantillonnage. Je suis également d'accord pour simplement changer les valeurs dans mon raster (je ne suis pas sûr de savoir comment faire).
r[r "condition"]
. Donc, si vous souhaitez définir toutes les valeurs du raster qui doivent100
être,1
vous pouvez écrirer[r == 100] <- 1
. Merci @whuber - exemple extrêmement utile!Vous pouvez utiliser la
sampleRandom
fonction:la source