MongoDB:找到两个多边形的公共区域

时间:2015-07-28 11:31:27

标签: mongodb geospatial

事先感谢所有帮助。
我有两个重叠的复杂多边形 我需要得到重叠区域的边界 Polygon A (purple border) and Polygon B (green border)

我有这两个多边形边框的坐标,我想要找回黄色区域边框的坐标。

我试过在另一个中获取每个的geoWithing坐标,但是坐标没有排序,我无法正确绘制多边形。
使用$ geoIntersects,我只得到边框交点的坐标,这不足以绘制所需的区域。
有人必须在此之前做到这一点,所以我希望它能找到可以提供帮助的人。

//Get first zone coordinates within zone 2
var zoneOneArea = db.zone.find(
{
    "name":"Zone 1",
    "location":
    {
        $geoWithin:
        {
            $polygon: zoneTwoCoordinatesArray
        }
    }
});
//Get zone 2 coordinates within zone 1
var zoneTwoArea = db.zone.find(
{
    "name":"Zone 2",
    "location":
    {
        $geoWithin:
        {
            $polygon: zoneOneCoordinatesArray
        }
    }
});

所以,这就是我尝试过的,但是我无法将这两个结果放在一个有序的数组中,以便能够正确地绘制它。

1 个答案:

答案 0 :(得分:0)

Blakes Seven所述,

  

MongoDB不会这样做

所以我停止使用它,因为我没有简单的选择。

最后我通过使用PostGIS实现了这个功能,该功能实现了ST_Intersection,它正好返回了我需要的多边形边界。 PostGIS是几何计算的强大工具,因此可以信赖地使用它。