验证北卡Ashe县多边形内生成均匀分布点的代码是否正确
方法正确性说明
你的核心思路是正确的,st_sample是sf包中生成空间对象内均匀分布样本点的标准工具,完全适配你的需求:
- 提取Ashe县的POLYGON对象是必要前提,确保采样范围精准锁定目标区域。
- 直接调用
st_sample(ashe_polygon, size = 1000)就能生成1000个严格在Ashe县多边形内部的均匀点,默认逻辑已经包含边界点,无需额外处理边界对象。
如果需要同时生成多边形内外的点,你可以按以下方式调整:
- 先基于Ashe县的边界框扩边,创建一个包含目标区域及周边的更大多边形范围
- 在这个大范围内采样,再通过空间关系判断区分内外点
示例代码:
library(sf) data(nc) # 提取Ashe县多边形 ashe_county <- nc[nc$NAME == "Ashe", ] # 生成县内1000个均匀点 inner_points <- st_sample(ashe_county, size = 1000) # 生成包含内外的样本点 # 扩大边界框(根据WGS84单位调整扩边幅度) expanded_bbox <- st_bbox(c( xmin = st_bbox(ashe_county)[1] - 0.1, ymin = st_bbox(ashe_county)[2] - 0.1, xmax = st_bbox(ashe_county)[3] + 0.1, ymax = st_bbox(ashe_county)[4] + 0.1 ), crs = st_crs(ashe_county)) expanded_area <- st_as_sfc(expanded_bbox) # 扩大范围内采样2000个点 mixed_points <- st_sample(expanded_area, size = 2000) # 标记内外点 is_inside <- st_within(mixed_points, ashe_county, sparse = FALSE)[,1]
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

