我一直试图弄清楚如何在点周围创建方形缓冲区,但我最接近的是使用terra::buffer和quadsegs = 1生成一个菱形缓冲区。下面是可复制的代码。任何建议都非常感谢!
附言:上传剧情的时候出了点问题,不过我相信是堆栈溢出的问题
library(terra)
library(geosphere)
创建数据
lon <- seq(from = 10, by = 3/3600, length.out = 4)
lat <- rep(0, 4)
lon.lat <- cbind(lon, lat)
crs.lon.lat <- "epsg:4326"
grid <- terra::vect(lon.lat, crs = crs.lon.lat)
grid$id <- 1:length(grid)
以米为单位设置缓冲区大小并创建缓冲区
res.7as <- geosphere::distGeo(c(0, 0), c(1, 0))*7/3600
grid.buf <- terra::buffer(grid,
width = res.7as,
quadsegs = 1)
图
plot(grid.buf)
plot(grid, add = T)
3条答案
按热度按时间wkyowqbh1#
可以使用
terra::spin
旋转矢量几何。示例数据
旋转中心是矢量化的,所以你可以
hpcdzsge2#
例如,像这样,从您的数据开始:
从
SpatVect
类转换为sfc
类以应用{sf}
方法:根据需要旋转:
如果需要,重新转换为
SpatVect
以与{terra}
一起使用:旋转函数取自https://r-spatial.github.io/sf/articles/sf3.html#affine-transformations
vyu0f0g13#
下面是一个完全基于
sf
的替代解决方案-st_buffer(..., endCapStyle = "SQUARE")
为我们完成了这项工作。