R中形状的每个多边形内的特定点数

问题描述

我有一个shapefile,其中包含大约400个不同大小的多边形。我一直在尝试创建一个随机的点层,在400个多边形中的每一个中都有特定数量的点。

我尝试使用 spsample函数,但它会生成一个不尊重每个多边形的点的随机层(这是整个shapefile的一般随机点层)。

例如:

Shape file

下载:biogeo.ucdavis.edu/data/diva/adm/USA_adm.zip

它是文件“ USA_adm1”

此shapefile包含52个多边形。我希望在52个多边形的每一个中放置特定数量随机点。例如,每个州内随机分布100个点。

希望您能帮助我。

谢谢

解决方法

通过sf包在一个sf对象上使用st_sample

library(sf)
library(ggplot2)

# using data included with sf package,#  it contains 100 polygons
nc <- st_read(system.file("shape/nc.shp",package="sf"))

# st_sample needs a vector telling it how many samples for each polygon
#  here we're using 3 for each polygon
samples_per_polygon <- rep(3,nrow(nc))

samples <- st_sample(nc,samples_per_polygon)


ggplot() + geom_sf(data = nc) + geom_sf(data = samples)

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...