首页 / Turf.js / 使用示例
合并多边形
两个相邻片区合并成一个整体。并集面积比两者之和略小, 差值恰好是重叠部分,用这个恒等式可以判断合并是否可信。
源码与运行效果
说明
两个面颜色不同、虚线为原始轮廓,绿色实心面是合并结果。
合并后原先重叠的区域只保留一份,因此并集面积等于
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);
| 数值 | 含义 |
|---|---|
| 并集面积 | 合并后的实际面积 |
| 两面之和 | 不考虑重叠时的简单相加 |
| 重叠面积 | 两者之差,即被去掉的重复部分 |
合并结果的顶点数少于两个面顶点之和,是因为重叠处的内部边被移除了。 如果顶点数反而增加,通常是输入面存在自相交或边线几乎重合。
属性不会随几何一起合并,示例里只关心面积,所以没有处理属性。 真实业务里合并行政区,需要自己决定保留哪个名称、哪个编码。