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

问题描述 投票:0回答:1

我们在 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 个多边形?

mapbox-gl-js turfjs
1个回答
1
投票

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

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

这是一些示例代码:

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

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

const combinedIntersection = turf.combine(allIntersections);
© www.soinside.com 2019 - 2024. All rights reserved.