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

标签 algorithm geospatial openlayers-3

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

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

最佳答案

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

关于algorithm - 如何在 OL3 中检查一个多边形是否包含另一个多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29967711/

相关文章:

algorithm - Construct Rectangle 算法如何工作?

mysql - 使用 MySQL 空间扩展选择范围内的项目?

mysql - 使用 POINT 列的邮政编码半径搜索

javascript - 如何通过 OpenLayers 绘制一条动画线来说明两点之间的流动?

java - TreeSet 迭代的时间复杂度是多少?

javascript - 组合和编码挑战

javascript - 处理 HTML5 位置的最佳 JQuery 插件是什么?

javascript - 无法使用 OpenLayers 3 站点中的 WFS 示例作为基础加载另一个 WFS

javascript - 断言错误: Assertion failed: length of coordinate array should match stride

algorithm - 二进制分区 n 个排序的数据点到 `O(b.log(n))` 中的 b 个桶