R语言terra包中多边形缓冲区为何未完全包含质心缓冲区?
terra::buffer() 生成的多边形缓冲区未包含质心同宽度缓冲区的问题
使用R语言的terra包生成多边形缓冲区时,发现terra::buffer()的表现不符合预期:针对部分多边形与缓冲宽度,多边形的缓冲区并未完全包含其质心的同宽度缓冲区。请问这是程序bug还是操作有误?
差异区域示意图:
可复现代码:
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
相关产品推荐
相关产品推荐

