使用 R 沿 .shp 多边形的外边界生成随机位置

问题描述 投票:0回答:2

我能够使用包

sp
在多边形内生成随机点,但是我对沿着多边形轮廓生成点感兴趣。

例如,如果我有一个湖泊的 shapefile,我可以使用

spsample(lake,n=10,type="random")
在该湖内生成 10 个随机位置。我想做类似的事情,但我不想生成湖内的位置,而是希望这些点只是沿着海岸线。有没有一种简单的方法可以做到这一点,我只是想念?

r gis polygon shapefile r-sp
2个回答
3
投票

如果你愿意使用

sf
包,你可以使用
st_sample
功能。技巧是首先将多边形转换为线,然后对点进行采样。

library(sf)
#> Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
library(ggplot2)
set.seed(415)

# read polygon shapefile
nc_p <- st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)[1, 1]

# Convert to line
nc_l <- st_cast(nc_p, 'MULTILINESTRING')

# sample points along line
nc_s <- st_sample(nc_l, 10)
#> although coordinates are longitude/latitude, st_sample assumes that they are planar

ggplot() +
  theme_void() +
  geom_sf(data = nc_p, fill  = 'grey') +
  geom_sf(data = nc_l, color = 'red') +
  geom_sf(data = nc_s, color = 'blue')

reprex 包于 2021-08-30 创建(v2.0.0)


0
投票

这也相当于ArcGIS中的“沿线生成点” - 然而这个R答案很难通过谷歌搜索找到 - 请是否可以改写或添加到问题

© www.soinside.com 2019 - 2024. All rights reserved.