如何检查多边形是否在OL3中包含另一个多边形?

时间:2015-04-30 12:24:31

标签: algorithm geospatial openlayers-3

是否有可能检查多边形是否包含在OL3中的另一个多边形中?

我注意到ol.extent中有几种方法,例如ol.extent.containsExtent(extent1,extent2)。但是这只检查范围而不是整个多边形。所以在某些情况下我得到“真实”,虽然多边形在另一个多边形之外,但仍然在... 我需要的是一个函数或算法,它检查多边形是否完全包含另一个多边形,就像我在任何GIS中一样。

2 个答案:

答案 0 :(得分:1)

OpenLayers 3不包含检查多边形是否在另一个多边形内的函数。但您可以使用JSTS JTS Topology Suite的JavaScript端口进行检查:

    var feature1 = new ol.Feature(new ol.geom.Polygon(...));
    var feature2 = new ol.Feature(new ol.geom.Polygon(...));

    var format = new ol.format.GeoJSON();
    var geojsonReader = new jsts.io.GeoJSONReader();

    var polygon1Jsts = geojsonReader.read(
        format.writeFeatureObject(feature1)).geometry;
    var polygon2Jsts = geojsonReader.read(
        format.writeFeatureObject(feature2)).geometry;

    console.log(polygon1Jsts.contains(polygon2Jsts));

http://jsfiddle.net/d6o81vc7/1/

另请参阅:jsts.geom.Geometry.html#contains

答案 1 :(得分:0)

我没有OL3的经验,但是:

如果你有两个多边形A& B,A的所有顶点都位于B的区域内,然后B包含A.在A的每个坐标上运行ol.extent.containsCoordinate应该可以做到。

旁注:如果B是凹的(不确定这是在这里使用的单词的正确形式),这可能不起作用......