1
如果我在R中有一个spatialpolygons对象,如何生成一组位于该多边形边上的n个点?R中多边形边上的采样点
我本来以为我可以从多边形顶点样,但它看起来像有绵延有时在没有顶点,因为多边形边缘是直线......
如果我在R中有一个spatialpolygons对象,如何生成一组位于该多边形边上的n个点?R中多边形边上的采样点
我本来以为我可以从多边形顶点样,但它看起来像有绵延有时在没有顶点,因为多边形边缘是直线......
假设你想画点围绕周边,我会分成两个部分这样:
P(上缘部E点P)= P(点p |边E)P(边e)
与P(边e)正比于它的长度。所以先取样边缘,然后在其上取样点 。
下面是一个例子三角:
poly <- Polygon(list(x=c(1,2,3,1),y=c(1,2,1,1)))
我们将计算长度边:
require(gsl) #for fast hypot function
xy <- [email protected]
dxy <- diff(xy)
h <- hypot(dxy[,"x"], dxy[,"y"])
并绘制一个随机的一面:
e <- sample(nrow(dxy), 1, probs=h)
再画一个指向那边:
u <- runif(1)
p <- xy[e,] + u * dxy[e,]
结束语整个事情的功能,我们有:
rPointOnPerimeter <- function(n, poly) {
xy <- [email protected]
dxy <- diff(xy)
h <- hypot(dxy[,"x"], dxy[,"y"])
e <- sample(nrow(dxy), n,replace=TRUE, prob=h)
u <- runif(n)
p <- xy[e,] + u * dxy[e,]
p
}
与演示:
plot(rPointOnPerimeter(100,poly))
这是极好的。谢谢。 – Pascal
此代码示例是否具有python版本?我不懂R语言 – machen