Geometry 地理坐标与Boost几何体没有相交区域

Geometry 地理坐标与Boost几何体没有相交区域,geometry,gis,computational-geometry,boost-geometry,Geometry,Gis,Computational Geometry,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_equat

我需要检查两点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;

我试着用地理坐标代替球面坐标系。但是得到了同样的结果。我错过什么了吗?或者这是Boost.Geometry中的一个问题。要确保多边形是闭合的,并根据需要定向,请应用。插入

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

测试结果1多边形

您希望从相交三角形中得到什么?我看不出这对解决你的问题有什么帮助。但是方位角的计算对于确定同一侧非常有用。如果相交多边形位于另一侧,则它们是一条直线,因此面积为0。否则会有一个非零区域。好的,这是合理的。我回答了。多边形是正确闭合的,因为我在末端附加了第一个点。这还不够吗?在这个上下文中,定向又意味着什么呢?从描述中可以看出:所有相对于预期定向错误的环都是反向的,我想知道我自己
boost::geometry::correct(ut);
boost::geometry::correct(es);