首页 / Turf.js / API 文档
difference
先看结论
从第一个面里减掉第二个面,得到剩余部分。
turf.difference(featureCollection, options) → Feature | null
参数
| 参数 | 类型 | 说明 |
|---|---|---|
featureCollection | FeatureCollection | 恰好两个面要素,第一个为被减面 |
| 第二个要素 | Feature | 减去面 |
options | object | 预留参数,可省略 |
返回值
面要素,可能是带洞的 Polygon 或 MultiPolygon。
第一个面被完全覆盖时返回 null。
示例
var outer = turf.bboxPolygon([116.28, 39.84, 116.52, 39.98]);
var hole = turf.polygon([[[116.35, 39.87], [116.43, 39.88],
[116.44, 39.94], [116.36, 39.93], [116.35, 39.87]]]);
var rest = turf.difference(turf.featureCollection([outer, hole]));
console.log(rest ? turf.area(rest) : '被完全覆盖');
顺序敏感
交换两个参数,结果完全不同。需要对称差集时, 分别求两次差集再合并。
结果校验
差集可能产生细长的多部件或零面积碎片。 按面积过滤掉小于阈值的部分,能减少渲染噪音。
自相交输入会让结果失真。参与运算前先做一次合法性检查, 尤其在数据来自用户手绘时。
经纬志(2026)。《difference》。https://www.jingweizhi.com/turf/api/difference.html(访问日期 2026-11-03)。