¿Existe una forma directa de muestrear aleatoriamente un ráster para que la salida del proceso sea un ráster?
Estoy usando un ejemplo que encontré en la r-sig-geo
lista y también probé la sampleRandom
función en el raster
paquete. Ambos enfoques producen una salida que no estoy seguro de cómo transformar en una trama. No pude encontrar un enfoque después de buscar varias combinaciones de "Ráster 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)
Cuando corro r.test
me sale el resultado:
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
Para que la siguiente línea que intenta escribir un ráster produzca el mensaje:
# write out as ascii file
writeRaster(r.test, filename="test1.ASC", datatype="ascii", overwrite=TRUE)
Error: hasValues(x) is not TRUE
Mi objetivo principal es producir algún tipo de trama después del proceso de muestreo. También estoy bien con solo cambiar los valores dentro de mi ráster (simplemente no estoy seguro de cómo hacerlo).
r[r "condition"]
. Entonces, si desea establecer todo el valor del ráster que100
debe ser1
, puede escribirr[r == 100] <- 1
. Gracias @whuber - ¡ejemplo extremadamente útil!Puedes usar la
sampleRandom
función:fuente