Dear Mao,

This is an alternative approach, using only package raster and working with a 
lonlat grid. In a lonlat grid, cells represent different areas. Therefore, I 
randomly draw cells with probabilities relative to their area. I simply use the 
function sample() from base to do the sampling.

library(raster)

#Create a raster and set its values to 1
r <- raster(ncol=36, nrow=18)
r[] <- rep(1,times=ncell(r))

#Draw 10 cell numbers with a probability relative to their area
probs <- values(area(r))
probs <- probs/sum(probs)
randomCells <- sample(1:ncell(r), 10, prob=probs)

#Set the selected cells to NA and plot the result
r[randomCells] <- NA
plot(r)

#Get the coordinates of the cell centres of the selected cells
xyFromCell(r, randomCells)

Jacob.

--- On Tue, 3/8/10, caspar hallmann <caspar.hallm...@gmail.com> wrote:

From: caspar hallmann <caspar.hallm...@gmail.com>
Subject: Re: [R-sig-Geo] how to do randomly sampling in raster layer
To: "Mao Jianfeng" <jianfeng....@gmail.com>
Cc: r-sig-geo@stat.math.ethz.ch
Date: Tuesday, 3 August, 2010, 11:15

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....@gmail.com> wrote:
> Dear r-sig-geoers,
>
> I want to randomly sample n points from regions of a raster layers,
> the cells denoted as "NA" is not
> included in this sampling process. And, I want to got the longitude
> and latitude of the sampled points.
>
> I checked the manual of raster package, I found several functions is
> relative to my purpose. I tried them all, but I failed.
>
> Can it can be done by raster functionalities. Could you please refer
> me to the right direction?
>
> I expect to hearing from you. Your helps are very valuable for a
> Chinese who can not reach helps nearby.
>
> Best,
>
> Sincerely,
> Mao Jian-Feng
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo@stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo



      
        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to