检查多边形是否被其他多边形完全填充

Check if polygon is completely filled by other polygons

我目前正在 Openlayers 中为需要验证在另一个多边形(基本区域)内绘制多边形的客户创建地图。通过使用 JSTS 和 Openlayers 本机方法,我能够验证所有形状都绘制在多边形内,并且不与多边形内的其他形状相交。这包括标记和多边形。

另一个要求是检查基区是否完全被其他多边形填充,并具有预定义的边距。我还没有想出任何方法来做到这一点。什么是完成此任务的好方法?

编辑:

我用来检查多边形是否包含其他多边形的方法:

const geoJSONFormat = new GeoJSON();
const jstsGeoJSONReader = new jsts.io.GeoJSONReader();`

polygon1 = jstsGeoJSONReader.read(geoJSONFormat.writeFeatureObject(feature1)).geometry;

polygon2 = jstsGeoJSONReader.read(geoJSONFormat.writeFeatureObject(feature2)).geometry;


polygon1ContainsPolygon2= polygon1.contains(polygon2); `

首先,我将给定的特征传递给从 OL 导入的 geoJSONFormat.writeFeatureObject。然后使用 JSTS GeoJSON-reader.

将其分配给一个变量

contains-来自 JSTS 的方法将 return 一个布尔值,指示 polygon2 是否包含在 polygon1

由于您已经验证了多边形位于基地区域内并且它们没有重叠。要检查底面积是否完全填满,只需检查多边形面积之和等于底面积即可。

我不完全确定你所说的边距是什么意思,但你可以检查多边形面积的总和至少是基面积的 x% 以给出一些 "wiggle"房间。