求助:在R语言中基于SpatVector线要素生成随机点的方法
问题:在MULTILINESTRING路网几何上批量生成随机点(R语言)
问题背景
- 拥有包含研究区完整路网的单一线几何SpatVector,需在该几何上生成指定数量的随机点,且需循环执行1000次,使用R语言实现。
尝试的操作及问题
1. 数据读取与转换
先读取线shapefile并转为SF对象:
Road_network <- vect("path/to/file.shp") Road_network_SF <- st_as_sf(Road_network)
该SF对象的信息如下:
Road_network_SF Simple feature collection with 1 feature and 2 fields Geometry type: MULTILINESTRING Dimension: XY Bounding box: xmin: 4500176 ymin: 2504157 xmax: 4626207 ymax: 2616041 Projected CRS: ETRS89-extended / LAEA Europe
2. st_sample生成点的异常
执行st_sample生成随机点:
Random_points <- st_sample(Road_network_SF, size = 1799)
返回结果包含大量空几何:
Geometry set for 46350 features (with 44694 geometries empty) Geometry type: MULTIPOINT Dimension: XY Bounding box: xmin: 4503139 ymin: 2504751 xmax: 4622797 ymax: 2613276 Projected CRS: ETRS89-extended / LAEA Europe First 5 geometries: MULTIPOINT EMPTY MULTIPOINT EMPTY MULTIPOINT EMPTY MULTIPOINT ((4503139 2574957)) MULTIPOINT EMPTY
3. st_line_sample执行报错
尝试st_line_sample时触发错误:
Random_points <- st_line_sample(Road_network_SF, n = 1799)
错误信息:
Error in st_line_sample(Road_network_SF, n = 1799) : inherits(x, "sfc_LINESTRING") non è TRUE
问题解决
后续更新:采用@Gregory提供的实现流程后效果符合预期,经排查问题根源在于原始路网shapefile本身存在异常,更换正常的路网文件后所有问题均得到解决。
内容的提问来源于stack exchange,提问作者Lore_Bernicchi
相关产品推荐
相关产品推荐

