Skip to content
Prev 8917 / 29559 Next

how to do randomly sampling in raster layer

Dear Mao,

You can use function rpoint from spatstat, after converting your
raster object into a pixel image.

consider the following:

library(raster)
library(spatstat)
library(maptools)
library(sp)

# An arbitrary raster
r <- raster(system.file("external/test.grd", package="raster"))
# plot it
image(r)

# convert to SpatialGridDataFrame
r.spgrd<-as(r,"SpatialGridDataFrame")
r.spgrd$constant<-ifelse(is.na(r.spgrd[[1]]),NA,1)
# ...this to ensure an equal weight to each non-NA cell

# convert to im
r.im<-as.im(r.spgrd["constant"])

# sample points according to constant
r.points<-rpoint(100,r.im)

# plot the random points
points(r.points)

#..to get the coordinates
as.data.frame(r.points)

Good Luck!
Caspar
On Tue, Aug 3, 2010 at 10:43 AM, Mao Jianfeng <jianfeng.mao at gmail.com> wrote: