判断指定经纬度坐标是否位于矩形范围内(重复技术问询)
判断坐标是否在矩形内部的实现方案
嘿,我懂你现在的需求啦——给定一个待校验坐标,还有矩形的西北、东南两个对角顶点,要判断这个点是不是在矩形内部对吧?我给你理清楚怎么实现这个逻辑,包你能用上:
核心逻辑思路
首先我们得明确:不管输入的西北/东南顶点顺序有没有搞反(比如不小心把东南当成西北输入),我们只需要先确定矩形的x轴范围和y轴范围,再判断待校验点的坐标是否落在这两个范围内就行。
具体判断步骤
- 第一步:计算矩形的x轴边界
取两个顶点x坐标的最小值作为左边界,最大值作为右边界 - 第二步:计算矩形的y轴边界
取两个顶点y坐标的最小值作为下边界,最大值作为上边界 - 第三步:校验待判断点
如果待校验点的x坐标在「左边界 ≤ x ≤ 右边界」范围内,同时y坐标在「下边界 ≤ y ≤ 上边界」范围内,那么这个点就在矩形内部(如果不需要包含边界,把等于号去掉即可)
代码示例(Python)
下面是一段通用的实现代码,不管顶点顺序是否正确都能正常工作:
def is_point_inside_rect(px, py, nw_x, nw_y, se_x, se_y): # 计算矩形的x、y轴边界范围 x_left = min(nw_x, se_x) x_right = max(nw_x, se_x) y_bottom = min(nw_y, se_y) y_top = max(nw_y, se_y) # 判断点是否在矩形内部(包含边界) return x_left <= px <= x_right and y_bottom <= py <= y_top # 测试用例 print(is_point_inside_rect(20, 40, 10, 50, 30, 30)) # 输出 True(点在矩形内) print(is_point_inside_rect(5, 40, 10, 50, 30, 30)) # 输出 False(x超出左边界)
特殊情况说明
如果是地理坐标系(涉及经度、纬度),要注意跨180度经线的矩形(比如西北顶点是(170, 50),东南顶点是(-170, 30)),这时候简单的区间判断会失效,需要额外处理:判断点的经度是否落在「170 ≤ 经度 ≤ 180」或者「-180 ≤ 经度 ≤ -170」这两个区间之一即可。
内容的提问来源于stack exchange,提问作者SuRa




