使用 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 上之前几周。感谢您找到这个。
在以前版本的 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 上之前几周。感谢您找到这个。