为每个多边形特征生成与每个多边形特征区域成比例的随机点
Generating random points per polygon feature proportional to each polygon feature area
我想知道使用 sp::spsample
为每个多边形要素生成 随机点 的最简单方法是什么,以便每个要素中的点数与相应的 多边形面积。我知道如何做一个多边形,但我不确定我应该如何做每个特征。
示例数据
p <- shapefile(system.file("external/lux.shp", package="raster"))
一种方法如下:
library(raster)
library(sf)
set.seed(123)
# shape file from raster package
p <- shapefile(system.file("external/lux.shp", package="raster"))
plot(p)
# Using an old fashion for-loop
rpnt <- list()
for(i in 1:length(p)){
pp <- p[p$ID_2==i,]
rpnt[[i]] <- sp::spsample(pp, n=pp$AREA/20, "random") #modify it to what you want
plot(rpnt[[i]], pch=i, col=(i), add=T)
}
out <- do.call(bind, rpnt)
我想知道使用 sp::spsample
为每个多边形要素生成 随机点 的最简单方法是什么,以便每个要素中的点数与相应的 多边形面积。我知道如何做一个多边形,但我不确定我应该如何做每个特征。
示例数据
p <- shapefile(system.file("external/lux.shp", package="raster"))
一种方法如下:
library(raster)
library(sf)
set.seed(123)
# shape file from raster package
p <- shapefile(system.file("external/lux.shp", package="raster"))
plot(p)
# Using an old fashion for-loop
rpnt <- list()
for(i in 1:length(p)){
pp <- p[p$ID_2==i,]
rpnt[[i]] <- sp::spsample(pp, n=pp$AREA/20, "random") #modify it to what you want
plot(rpnt[[i]], pch=i, col=(i), add=T)
}
out <- do.call(bind, rpnt)