带有Boost Geometry的地理坐标没有交集区域

时间:2018-11-27 08:33:07

标签: geometry gis computational-geometry boost-geometry

我需要检查两个点(GPS坐标)check=$(which bash) if [[ -z "${check}" ]]; then #do stuff here fi q是否在同一侧或相反侧或与线(大圆弧段){{1} }。我知道m(p,t)不共线性。我没有发现在boost.geometry库中使用任何直接函数。因此,我尝试以不同的方式进行计算。

我构造了两个三角形q(p, t)。然后,我将这两个相交并检查相交多边形的面积。以下是我的代码。

(p, q, t)

Live at cpp.sh

如果绘制这两个三角形,我们可以清楚地看到它们在3个顶点上相交,从而在相交区域产生了另一个三角形。

enter image description here

上面的代码正确返回相交点的数量,但不返回任何相交多边形。

(p, m, t)

我尝试使用typedef boost::geometry::model::point< double, 2, boost::geometry::cs::spherical_equatorial<boost::geometry::degree> > geo_point; typedef boost::geometry::model::polygon<geo_point> geo_polygon; geo_point p(110.48316, 29.05043); geo_point q(110.48416, 29.05104); geo_point t(110.48416, 29.05228); geo_point m(110.48408, 29.05079); geo_polygon ut, es; boost::geometry::append(ut.outer(), p); boost::geometry::append(ut.outer(), q); boost::geometry::append(ut.outer(), t); boost::geometry::append(ut.outer(), p); boost::geometry::append(es.outer(), p); boost::geometry::append(es.outer(), m); boost::geometry::append(es.outer(), t); boost::geometry::append(es.outer(), p); std::list<geo_point> intersection_points; boost::geometry::intersection(ut, es, intersection_points); std::cout << intersection_points.size() << std::endl; std::vector<geo_polygon> intersection_polygons; boost::geometry::intersection(ut, es, intersection_polygons); std::cout << intersection_polygons.size() << std::endl; 而不是3 0 坐标系。但是得到了相同的结果。我想念什么吗?或这是geographic

中的问题

1 个答案:

答案 0 :(得分:0)

要确保根据需要关闭多边形并确定其方向,请应用correct。插入

boost::geometry::correct(ut);
boost::geometry::correct(es);

gives结果 1个多边形供您测试