概述
本文主要介绍 Openlayers 中,两个(或多个)多边形的高级交互,包括: 并集,交集和差集运算.
概念理解
-
并集(Union):
并集指的是将两个几何对象的所有区域合并在一起。即,结果是包含了两个对象所有区域的集合。如果两个几何形状有重叠部分,合并时不会重复这些部分。- 几何意义:并集是两个图形合并后的结果,包含了两个图形的所有区域,重叠部分只算一次。
-
交集(Intersection):
交集指的是两个几何对象重叠部分的集合。在几何学中,两个几何形状的交集是它们的公共部分。如果两个形状没有交集,则交集为空。- 几何意义:交集是两个图形相重叠或相交的区域。
-
差集(Difference):
差集指的是从一个几何对象中去除另一个几何对象所占据的部分。也就是说,差集结果是第一个几何对象的区域,减去与第二个几何对象重叠的区域。- 几何意义: 差集是一个几何对象减去另一个几何对象的重叠部分。结果是只保留第一个几何对象的非重叠部分。
代码实践
Openlayers 实际上是不包括这些空间几何运算的接口,但是可以借助第三方库进行计算,比如turf.js
. 在进行这些几何运算之前,需要保证两个多边形是相交的,不然讨论没有意义.
-
并集
-
效果
-
代码
const { p1, p2 } = getPolygons(); const union = turf.union(turf.featureCollection([p1, p2])); if
-