【发布时间】:2021-12-25 18:38:57
【问题描述】:
在 spsurvey 包的早期版本中,可以使用有点复杂的 design 规范在 shapefile 中的多边形内绘制随机点。 (例如,请参阅here)。
spsurvey (5.0.1) 的新更新版本看起来非常用户友好,但我不知道如何在多边形内执行多于一个点的 GRTS 绘制。下面是一个例子:
假设我想在蒙大拿州和怀俄明州使用 GRTS 绘制 10 个随机点。 grts()调用需要一个sf对象,所以我们可以先获取一个sf对象。
library(raster)
library(sf)
library(spsurvey)
## Get state outlines
US <- raster::getData(country = "United States", level = 1)
States.outline <- US[US$NAME_1 %in% c("Montana","Wyoming"),]
# convert to sf object
states.out <- st_as_sf(States.outline)
然后,如果我们想按状态分层,并且我们希望每个状态有 10 个点,我们需要:
# Define the number of points to draw from each state
strata_n <- c(Montana = 10, Wyoming = 10)
然后strata_n 对象被输入到grts() 调用中,NAME_1 变量是状态名称。
# Attempt to make grts draw
grts(sframe = states.out,
stratum_var = "NAME_1",
n_base = strata_n
)
这会返回一条错误消息:
在检查 grtspts 的输入期间,出现一个或多个错误 确定。输入以下命令查看所有输入错误 消息: stopprnt() 查看错误的子集(例如,错误 1 和 5) 输入 stopprnt(m=c(1,5))
运行stopprnt() 会给出以下消息:
输入错误消息 n_base :每个层必须有一个样本 大小不大于“框架”中的行数 阶层
这是一条非常清晰的信息——我们不能从每个多边形中绘制多个点,因为 sf 对象的每个状态只有一行。
那么:使用新的和改进的spsurvey 包,如何从多边形内绘制多个点?任何提示或方向将不胜感激。
【问题讨论】: