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

booleanIntersects

先看结论

两个几何只要有一个公共点就返回真,包含相切、共边与端点接触。

最后验证 2026-11-03 · Turf.js 7.x · 更新 2026-10-29 · 引用本文
turf.booleanIntersects(feature1, feature2, options?) → boolean

参数

参数类型默认说明
feature1Geometry | Feature—第一个几何
feature2Geometry | Feature—第二个几何
options.ignoreSelfIntersectionsbooleanfalse忽略输入几何自身的自相交

支持点、线、面及其 Multi 变体。返回值只看交集是否为空, 不区分「穿过」还是「仅接触」。

示例

var zone = turf.buffer(turf.point([116.391, 39.907]), 2, { units: 'kilometers' });

var line = turf.lineString([
  [116.35, 39.90],
  [116.40, 39.92]
]);

console.log(turf.booleanIntersects(zone, line));   // true

var farPoint = turf.point([117.0, 40.5]);
console.log(turf.booleanIntersects(zone, farPoint)); // false

与相关判断的分工

函数判断内容相切/共边
booleanIntersects交集是否非空算相交
booleanDisjoint交集是否为空算相交,结果为 false
booleanOverlap部分重叠,互相都不包含不算重叠
booleanTouches仅边界接触,内部不相交返回真

自相交的坑

线要素自身打结时,内部算法可能在自交点处误判。数据来自用户绘制、 未经拓扑检查时,把 ignoreSelfIntersections 设为 true:

var hit = turf.booleanIntersects(sketchLine, parcel, {
  ignoreSelfIntersections: true
});

注意 booleanDisjoint 的同名选项默认是 true, 与这里相反。成对替换两个函数时,把这个默认值一起改掉。

性能

每次调用都做完整几何运算。批量判断前先用 turf.bbox 快速排除: 两个包围盒都不相交时,几何一定不相交。

不要用它判断「完全包含」。 包含关系用 booleanContains 或 booleanWithin。 booleanIntersects 对包含关系同样返回真, 拿它做筛选会把所有内部要素也放进来。

引用本文

经纬志(2026)。《booleanIntersects》。https://www.jingweizhi.com/turf/api/boolean-intersects.html(访问日期 2026-11-03)。