You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言terra包中多边形缓冲区为何未完全包含质心缓冲区?

terra::buffer() 生成的多边形缓冲区未包含质心同宽度缓冲区的问题

使用R语言的terra包生成多边形缓冲区时,发现terra::buffer()的表现不符合预期:针对部分多边形与缓冲宽度,多边形的缓冲区并未完全包含其质心的同宽度缓冲区。请问这是程序bug还是操作有误?

差异区域示意图:
Buffer Differences

可复现代码:

library(terra)

# 定义直角三角形顶点(直角位于(-93.746, 46.99))
vertices <- rbind(
  c(-93.746, 46.99),     # 顶点1(直角)
  c(-93.736, 46.99),    # 顶点2
  c(-93.746, 46.9886),     # 顶点3
  c(-93.746, 46.99)      # 返回顶点1闭合多边形
)

# 创建三角形多边形 - 坐标系为EPSG:4269(经纬度)
triangle_polygon <- vect(vertices, type = "polygons", crs = "EPSG:4269")

# 绘制直角三角形
plot(triangle_polygon)

# 获取质心
centroid <- terra::centroids(triangle_polygon)

# 对质心做5000米缓冲
centroid_buffer <- terra::buffer(centroid, 5000)

# 对多边形做5000米缓冲
buffer <- terra::buffer(triangle_polygon, 5000)

# 计算质心缓冲区减去多边形缓冲区的差异区域
diff <- terra::erase(centroid_buffer, buffer)

# 绘制差异区域(该区域属于质心缓冲区,但不在多边形缓冲区中)
plot(diff)

已在terra的GitHub仓库提交相关issue。

内容的提问来源于stack exchange,提问作者RobertoAS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:07:16