首页 / Turf.js / API 文档
booleanIntersects
先看结论
两个几何只要有一个公共点就返回真,包含相切、共边与端点接触。
turf.booleanIntersects(feature1, feature2, options?) → boolean
参数
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
feature1 | Geometry | Feature | — | 第一个几何 |
feature2 | Geometry | Feature | — | 第二个几何 |
options.ignoreSelfIntersections | boolean | false | 忽略输入几何自身的自相交 |
支持点、线、面及其 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)。