使用spsurvey 5.0.1在多边形内抽取多个GRTS随机点的问题咨询
新版spsurvey单个多边形多GRTS点抽取方案
错误原因
grts()默认抽样逻辑是抽取抽样框内的现有要素,你传入的sf对象中蒙大拿、怀俄明州各仅对应1行多边形记录,因此默认规则下每层最多仅支持抽取1个样本,与你设置的每州10个样本量要求冲突。
修正代码
无需修改前期数据准备逻辑,仅需在grts()调用中增加seltype = "Continuous"参数,声明当前为连续空间抽样,直接在多边形范围内生成指定数量的随机点即可:
# 执行GRTS分层抽样,每州10个点 grts_result <- grts( sframe = states.out, stratum_var = "NAME_1", n_base = c(Montana = 10, Wyoming = 10), seltype = "Continuous" )
结果校验
抽样完成后,生成的点数据存储在返回结果的sites字段中,可通过以下代码确认各层样本量符合要求:
# 统计各州抽样点数 table(grts_result$sites$stratum)
拓展方案
如果有自定义抽样约束需求(如点位最小距离限制、避让特定区域),可先通过sf::st_sample()在各多边形内生成足量候选点,将候选点sf对象作为抽样框传入grts(),即可沿用默认的要素抽样逻辑完成抽样。
内容的提问来源于stack exchange,提问作者Jacob_Oram
相关产品推荐
相关产品推荐

