You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

判断指定经纬度坐标是否位于矩形范围内(重复技术问询)

判断坐标是否在矩形内部的实现方案

嘿,我懂你现在的需求啦——给定一个待校验坐标,还有矩形的西北、东南两个对角顶点,要判断这个点是不是在矩形内部对吧?我给你理清楚怎么实现这个逻辑,包你能用上:

核心逻辑思路

首先我们得明确:不管输入的西北/东南顶点顺序有没有搞反(比如不小心把东南当成西北输入),我们只需要先确定矩形的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

火山引擎 最新活动