地理坐标系中某个点的 boost::geometry::内 失败---原因
boost::geometry::within for a point in a geographic coordinate system fails --- why?
Code:我正在使用boost_1_61_0。 我正在将库的几何部分用于 GIS 应用程序。 这个想法是在定义的区域(在本例中为矩形)内查找点。 这有时有效,但并非总是如此。 下面是一个示例,其中点应该在矩形内,但不是...
我有以下测试用例:
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/multi/geometries/multi_polygon.hpp>
#include <boost/geometry/geometries/register/point.hpp>
#include <iostream>
#include <boost/geometry/io/wkt/wkt.hpp>
class wxPoint
{
public :
double getx() const
{
return m_x;
}
double gety() const
{
return m_y;
}
void setx( double in)
{
m_x = in;
}
void sety(double in)
{
m_y = in;
}
private:
double m_x;
double m_y;
};
BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET(
wxPoint,
double,
boost::geometry::cs::geographic<boost::geometry::degree>,
wxPoint::getx,
wxPoint::gety,
wxPoint::setx,
wxPoint::sety )
int main()
{
boost::geometry::model::polygon< wxPoint > poly;
boost::geometry::read_wkt( "POLYGON((0 89, 180 89, 180 0, 0 0, 0 89 ))", poly );
wxPoint point;
point.setx( 150 );
point.sety( 88 );
bool within = boost::geometry::within( point, poly );
return 0;
}
我希望within
是true
但它是false
. 为什么false
?
在进一步调查中,请参阅我对另一个答案的评论,这似乎是增强几何体如何构建您赋予它的多边形的差异。
当我们给出一个点为 0 0 到 180 0 时,在这种情况下,提升土地实际上将世界包裹在西方,而不是我和我相信你所期待的东方。
为了防止这种情况发生,我建议插入一个额外的点来分解经度分量大于或等于 180 度的任何单个顶点。 这会强制增强以按预期方向而不是最短距离绘制。
如果不按顺时针顺序排列点,则boost::geometry::within
可能未定义。
改为尝试boost::geometry::read_wkt( "POLYGON((0 89, 0 0, 180 0, 180 89, 0 89 ))", poly );
相关文章:
- 如果没有malloc,链表实现将失败
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 视图中的参数推导失败:take_while
- 链接到自行创建的dll失败
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- gcc和c++17的过载解析失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 从父数组测试用例构造二叉树失败
- LibGit2 SSH身份验证失败
- 如何让LLDB在成功时退出,在失败时等待
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- 生成MRPT库时cmake配置失败
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- 地理坐标系中某个点的 boost::geometry::内 失败---原因