在之前版本的spsurvey软件包中,可以使用相当复杂的“design”规范在shapefile中的多边形内绘制随机点。(请参见这里的示例)。
更新后的spsurvey软件包(5.0.1)似乎非常用户友好,但我无法弄清如何在多边形内执行多个点的GRTS绘制。以下是一个示例:
假设我想在蒙大拿州和怀俄明州内使用GRTS绘制10个随机点。grts()调用需要一个sf对象,因此我们可以首先获取一个sf对象。
更新后的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)
接下来,如果我们想按州划分,并且每个州需要十个点,我们需要:
# 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 : 每个分层必须有一个样本大小不大于表示该分层的'sframe'中行数的点数
这是一条非常清晰的信息 - 我们不能从每个多边形中绘制多个点,因为sf对象每个州只有一行。
那么:使用新的和改进的spsurvey
软件包,如何从多边形内绘制多个点?任何提示或方向都将不胜感激。
Error in st_poly_sample(x, size = size, ..., type = type, by_polygon = by_polygon) : hexagonal sampling on geographic coordinates not supported; consider projecting first
. - Jacob_Oramsf::st_transform()
工具,一切都很顺利。感谢您的帮助! - Jacob_Oram