使用 spsurvey 在多边形内绘制 GRTS 点

Drawing GRTS points within polygons with spsurvey

在以前版本的 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
     )

此returns一条错误信息:

During the check of the input to grtspts, one or more errors were identified. Enter the following command to view all input error messages: stopprnt() To view a subset of the errors (e.g., errors 1 and 5) enter stopprnt(m=c(1,5))

运行 stopprnt() 给出以下消息:

Input Error Message n_base : Each stratum must have a sample size no larger than the number of rows in 'sframe' representing that stratum

这是一条非常明确的信息——我们不能从每个多边形中绘制超过一个点,因为 sf 对象的每个状态只有一行。

那么:使用新的和改进的 spsurvey 包,如何从一个多边形中绘制多个点?任何提示或指导将不胜感激。

这是一个错误。我已经更新了开发版本,可以通过 运行

安装(在安装 remotes 包之后)
remotes::install_github("USEPA/spsurvey", ref = "develop")

可能在 spsurvey 中的更改反映在 CRAN 上之前几周。感谢您找到这个。