如何在R的terra包中按属性值对重叠多边形求和?
用terra实现多边形重叠区域属性值求和
我有一个包含大量多边形的terra SpatVector对象,需要对多边形做求和处理,让新多边形集中的重叠区域属性值等于所有重叠多边形对应属性值的总和。之前试过用aggregate()函数,但没得到预期结果;虽然可以通过栅格化多边形再求和实现,但希望找到更简便的矢量运算方案。
可复现示例代码
library(terra) #> terra 1.8.15 v <- vect(system.file("ex/lux.shp", package="terra")) # 创建两个与v重叠的圆形多边形 circles <- vect(rbind(c(6.05, 49.6), c(6.1, 49.8)), crs = "epsg:4326") |> buffer(10e3) circles$ID_1 <- 4:5 # 合并为单个矢量对象 v2 <- rbind(v, circles) plot(v2, "ID_1", alpha = 0.8)

尝试aggregate()的问题
# 尝试按ID_1求和,但未得到预期结果 # 底部圆形区域的属性值应为3+4=7,但聚合后仅保留了ID_1=3的值 v2_agg <- aggregate(v2, by = "ID_1", fun = "sum") plot(v2_agg, "ID_1", alpha = 0.8)

Created on 2025-02-11 with reprex v2.1.1
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

