经纬志
首页 / Turf.js / 使用示例

合并多边形

两个相邻片区合并成一个整体。并集面积比两者之和略小, 差值恰好是重叠部分,用这个恒等式可以判断合并是否可信。

Turf.js 7.x · 更新 2026-10-27
源码与运行效果
运行效果

说明

两个面颜色不同、虚线为原始轮廓,绿色实心面是合并结果。 合并后原先重叠的区域只保留一份,因此并集面积等于 area(A) + area(B) - area(交集)。

var merged = turf.union(west, east);
var inter = turf.intersect(west, east);

var sum = turf.area(west) + turf.area(east);
var overlap = inter ? turf.area(inter) : 0;

console.log(Math.abs(sum - overlap - turf.area(merged)) < 1);
数值含义
并集面积合并后的实际面积
两面之和不考虑重叠时的简单相加
重叠面积两者之差,即被去掉的重复部分

合并结果的顶点数少于两个面顶点之和,是因为重叠处的内部边被移除了。 如果顶点数反而增加,通常是输入面存在自相交或边线几乎重合。

属性不会随几何一起合并,示例里只关心面积,所以没有处理属性。 真实业务里合并行政区,需要自己决定保留哪个名称、哪个编码。