经纬志
首页 / Turf.js / API 文档

difference

先看结论

从第一个面里减掉第二个面,得到剩余部分。

最后验证 2026-11-03 · Turf.js 7.x · 更新 2026-10-27 · 引用本文
turf.difference(featureCollection, options) → Feature | null

参数

参数类型说明
featureCollectionFeatureCollection恰好两个面要素,第一个为被减面
第二个要素Feature减去面
optionsobject预留参数,可省略

返回值

面要素,可能是带洞的 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)。