Another possible solution is to use the spsurvey package, and think of each edge as a level of stratification and use the grts function to design a survey of sample points on the edges. An advantage of the grts function is that it uses a local neighborhood variance estimator, which can produce smaller confidence limits compared to simple random sample variiance. Mike
On Friday, October 14, 2016, Paolo Piras <paolo.pi...@uniroma3.it> wrote: > Dear Adrian, > > even this solution is pretty cool. > > Again, thanks to all who suggested me how to do that. > > Best > > Paolo > > > ________________________________ > Da: Adrian Baddeley <adrian.badde...@curtin.edu.au <javascript:;>> > Inviato: venerdì 14 ottobre 2016 02.14 > A: Paolo Piras; Rolf Turner > Cc: r-sig-geo; Ege Rubak > Oggetto: Re: [FORGED] [R-sig-Geo] uniformly sample points on a border of a > polygon > > > You can use the spatstat function 'edges' to extract the edges of a > polygonal window. > > > Example: > > W <- letterR #polygonal window > > E <- edges(W) > > X <- runifpointOnLines(20, E) > > plot(E) > > plot(X, add=TRUE) > > > > Prof Adrian Baddeley DSc FAA > > Department of Mathematics and Statistics > > Curtin University, Perth, Western Australia > > > ________________________________ > From: Paolo Piras <paolo.pi...@uniroma3.it <javascript:;>> > Sent: Friday, 14 October 2016 5:22 AM > To: Rolf Turner > Cc: r-sig-geo; Adrian Baddeley; Ege Rubak > Subject: Re: [FORGED] [R-sig-Geo] uniformly sample points on a border of a > polygon > > > Thanks a lot Rolf! > > This is virtually exactly what I need; > > I'm very grateful for that > > All the best > > Paolo > > > ________________________________ > Da: Rolf Turner <r.tur...@auckland.ac.nz <javascript:;>> > Inviato: giovedì 13 ottobre 2016 23.12 > A: Paolo Piras > Cc: r-sig-geo; adrian.badde...@curtin.edu.au <javascript:;>; Ege Rubak > Oggetto: Re: [FORGED] [R-sig-Geo] uniformly sample points on a border of a > polygon > > On 14/10/16 07:03, Paolo Piras wrote: > > HI folks, > > > > I write for a (hopefully) relatively simple question: > > > > I would need to uniformly sample 1000 or more points **along the > border** of a polygon (not within the area enclosed) that is identified by > ordered but not equally spaced points; which is the fastest way? > > > > In a first moment I thought to sample between any pair of consecutive > points but, given that starting points are not uniformly distributed, the > final result would be very far from a uniform distribution. > > > > here my polygon: > > > > > > mypol<-round(matrix(c(-13.8447497369687, -3.51439434200449, > 6.09494902836977, 6.83498916728338, 9.20403746769121, 15.3061452155498, > 18.4050681631565, 15.334153355932, 9.21809033073377, 6.90467983448734, > 6.17942233200763, -3.4864867866601, -13.8299219386242, -17.5237987124776, > -17.2262670680261, -17.5217563171495, -2.29667185082115, -7.72275721405543, > -9.77084968112857, -8.81725304021858, -8.32894043391822, -4.76080777897439, > -0.0600572363382094, 4.62779963258511, 8.20771806467615, 8.70484104396818, > 9.68531129857718, 7.67574865642846, 2.46081860449754, 1.31152149442131, > 0.0845735294613392, -1.11988475144136),ncol=2),digits=2) > > plot(mypol,asp=1,cex=0) > > text(mypol[,1],mypol[,2],c(1:nrow(mypol))) > > Thanks in advance for any hints > > > This can be done reasonably easily using the spatstat package, for some > value of the word "reasonably". Here's how: > > require(spatstat) > W <- owin(poly=mypol) > m <- cbind(mypol[-nrow(mypol),],mypol[-1,]) > m <- rbind(m,c(mypol[nrow(mypol),],mypol[1,])) > m <- as.data.frame(m) > names(m) <- c("x0","y0","x1","y1") > L <- with(m,psp(x0,y0,x1,y1,window=boundingbox(W))) > set.seed(42) > #X <- runifpointOnLines(1000,L) > X <- runifpointOnLines(100,L) > plot(W,main="Piras's Polygon") > plot(X,add=TRUE) > > Note that I have just generated 100 uniform points, r.t. 1000, so that > the resulting plot is a little less cluttered. > > There may be a sexier way of accomplishing your desideratum; I have > cc-ed this email to my co-authors Adrian and Ege who may come up with > better ideas. > > cheers, > > Rolf Turner > > -- > Technical Editor ANZJS > Department of Statistics > University of Auckland > Phone: +64-9-373-7599 ext. 88276 > > [[alternative HTML version deleted]] > > [[alternative HTML version deleted]] _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo