如何使用 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 个交集对象。
如何处理超过 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);
我们在 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 个交集对象。
如何处理超过 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);