地理坐标与 Boost Geometry 没有交叉区域
No Intersection Area for geographic coordinates with Boost Geometry
我需要检查两个点(GPS 坐标)q
、m
是否在同一侧或相反侧或与一条线(大圆线段)共线(p,t)
。我知道 q
与 (p, t)
不共线性。我没有在 boost.geometry 库中找到任何可直接使用的函数。所以我尝试用不同的方式计算它。
我构造了两个三角形(p, q, t)
和(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 个顶点,在相交区域产生另一个三角形。
上面的代码正确地 return 了相交点的数量,但它没有 return 任何相交多边形。
3
0
我试过使用 geographic
而不是 spherical_equatorial
坐标系。但是得到了相同的结果。我错过了什么吗?或者这是 Boost.Geometry
中的问题
我需要检查两个点(GPS 坐标)q
、m
是否在同一侧或相反侧或与一条线(大圆线段)共线(p,t)
。我知道 q
与 (p, t)
不共线性。我没有在 boost.geometry 库中找到任何可直接使用的函数。所以我尝试用不同的方式计算它。
我构造了两个三角形(p, q, t)
和(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 个顶点,在相交区域产生另一个三角形。
上面的代码正确地 return 了相交点的数量,但它没有 return 任何相交多边形。
3
0
我试过使用 geographic
而不是 spherical_equatorial
坐标系。但是得到了相同的结果。我错过了什么吗?或者这是 Boost.Geometry