使用地图坐标确定点是不是在矩形中

Posted

技术标签:

【中文标题】使用地图坐标确定点是不是在矩形中【英文标题】:Determine if point is in a rectangle using map coordiates使用地图坐标确定点是否在矩形中 【发布时间】:2012-05-18 17:25:28 【问题描述】:

我的大脑今天不工作了。我需要测试一个点(纬度,经度)是否位于地图上的一个矩形内。矩形由它的北、东、南和西边界定义。打嗝是所有点或值都在地图坐标系中。为了处理日期线环绕,我假设如果我们从左到右,经度总是“介于”之间。

bool PointInRectangle(Point pt, double North, double East, double South, double West)

    // ????

【问题讨论】:

重复,我想。见***.com/questions/10632457 @Jeppe 类似的问题,但他们的要求有点不同(可视化地图,不需要 100% 准确)。我希望有一个小代码片段。 【参考方案1】:

假设东和北是正数:

bool PointInRectangle(Point pt, double North, double East, double South, double West)

    // you may want to check that the point is a valid coordinate
    if (West < East)
    
        return pt.X < East && pt.X > West && pt.Y < North && pt.Y > South;
    

    // it crosses the date line
    return (pt.X < East || pt.X > West) && pt.Y < North && pt.Y > South;        

【讨论】:

啊 - 那个简单的 OR 就是我所缺少的。 除非我误解了这个问题,否则我认为您的日期线条件不起作用。假设 West 是 170,East 是 -170,那么唯一有效的经度是 170 到 180 和 -180 到 -170。但是,经度 165 通过pt.X &gt; East 条件。我是不是误会了? 谢谢 - 我知道这是一些简单的答案!我花了 30 分钟处理 180、360 和模逻辑,并且知道必须有更好的方法。

以上是关于使用地图坐标确定点是不是在矩形中的主要内容,如果未能解决你的问题,请参考以下文章

获取叠加在地图上的矩形的角的坐标

如何从excel中检索坐标并根据地图绘制点? - MATLAB

如何将地理坐标添加到地图?

怎样从地理坐标找到在百度地图上的位置

Android 谷歌地图获得扩展的边界坐标

SuperMap地图系列:坐标系的那些事