如何使用 Turf.js 相交 2 个以上的多边形?

How to intersect more than 2 polygons using Turf.js?

我们在 Vue.js 项目中使用 Mapbox GL JS 1.12.0。如果我有 2 个或更多多边形,我需要创建相交对象。但是,我只能用 2 个多边形来完成。代码如下所示:

import * as turf from '@turf/turf';

export function createIntersection(features) {
  // features = 3 polygons on the screen bellow
  const intersection = turf.intersect(...features);

  return intersection;
}

截图:

  1. 未选择的多边形:

  1. 选定的多边形

  1. 代码执行后

如您所见,只创建了 1 个交集对象。

如何处理超过 2 个多边形?

turf.intersect()只能相交2个多边形。

如果您想与多个多边形相交,您可以使用 turf.intersect() 将每个多边形与其他多边形相交,然后使用 turf.combine() 组合结果.

下面是一些示例代码:

const polygonA = ...;
const polygonB = ...;
const polygonC = ...;

const allIntersections = {
  type: 'FeatureCollections',
  features: [
    turf.intersect(polygonA, polygonB),
    turf.intersect(polygonA, polygonC),
    turf.intersect(polygonB, polygonC),
  ],
};

const combinedIntersection = turf.combine(allIntersections);