【发布时间】:2016-03-17 21:41:50
【问题描述】:
我有两个多边形,它们的最小值和最大值、纬度和经度如下所示:
Polygon A: minimum_latitude=2.089 degree, maximum_latitude=2.93 degree, minimum_longitude=-122.95 degree, maximum_longitude=-122.85 degree
Polygon B: minimum_latitude=2.1 degree, maximum_latitude=2.83 degree, minimum_longitude=-121.95 degree, maximum_longitude=-120.85 degree
如何在 c++ 中检查多边形 A 是否与多边形 B 相交(或包含在其中)?
我的纬度和经度以度为单位。我是否需要将它们转换为弧度以检查多边形是否相交?
检查相交的一种方法是检查多边形 B 的 minimum_latitude 是否位于多边形 A 的 minimum_latitude 和 maximum_latitude 之间,反之亦然?这是正确的检查方法吗。是否需要将纬度和经度转换为弧度才能执行相交测试。
【问题讨论】:
-
我可以想到多边形,这会使您在上一段中给出的解决此问题的想法不起作用;)
-
@BitTickler 好的。那你能建议一些解决方案吗:)
-
这不是两个轴对齐矩形的交点吗?
-
@DieterLücking 是的,交叉点在两个轴对齐的矩形之间
-
我认为你可以使用扫描线算法。在空间上扫线并为沿线的每个多边形创建边列表。对于中途的普通多边形(是的,还有一些有趣的多边形,比如自相交多边形),这会产生不相交的线段或相交的线段,这反过来很容易处理。 [A1;A2; B1;B2] [A1;B1;A2;B2]
标签: c++ geospatial