2015-07-28 97 views
1

在此先感谢所有帮助。
我有两个重叠的复杂多边形。
我需要获取重叠区域的边框。
Polygon A (purple border) and Polygon B (green border)MongoDB:找到两个多边形的公共区域

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

我试图获得$ 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 
     } 
    } 
}); 

所以,这就是我都试过了,但我不能让这两个结果的有序老式阵列能够正确绘制。

+2

MongoDB不这样做。您可以在一个聚合管道中组合两个'$ geoIntersects'来找到相交区域内的“点”,但不是相交区域本身。您需要检索数据并使用您选择的外部API工作。有一些流行的为大多数语言实施。 –

+0

好吧,我看到,我需要做这个计算服务器端,并从数据库中直接组织。你知道PostGIS是否有这样的功能?感谢你的回答 – CriPstian

回答

0

如前所述Blakes Seven

MongoDB中并没有这样做

所以我停止使用这个,因为我没有简单的替代。

最后我用了PostGIS具有这种功能实现的ST_Intersection这回正是我需要的是多边形的边界导致路口这样做。
当涉及几何计算时,PostGIS是一个强大的工具,因此可以信任地使用它。