You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用geopy.distance实现指定距离范围的用户坐标筛选?

实现基于经纬度的距离范围筛选函数

解决方案

利用geopy库的distance模块计算两点间的球面距离,遍历坐标列表即可筛选出符合距离范围的点。

步骤1:安装geopy

如果未安装geopy,先执行安装命令:

pip install geopy

步骤2:完整代码实现

from geopy import distance

coor = [
    (35.441339, -88.092403),
    (35.453793, -88.061769),
    (35.559426, -88.014642),
    (35.654535, -88.060918),
    (35.812953, -88.120935)
]

def findClosest(coor, userCoor, ranges):
    # 将用户坐标转为元组,适配geopy参数格式
    user_point = tuple(userCoor)
    matched_coords = []
    
    for point in coor:
        # 计算两点间球面距离(默认采用WGS-84坐标系,适配GPS坐标)
        dist = distance.distance(user_point, point)
        # 按米单位判断是否在范围内,若用千米则替换为dist.km <= ranges
        if dist.meters <= ranges:
            matched_coords.append(point)
    
    # 输出结果
    if matched_coords:
        print(f"找到{len(matched_coords)}个在{ranges}米范围内的用户坐标:")
        for coord in matched_coords:
            print(coord)
    else:
        print(f"没有用户坐标在{ranges}米范围内")
    return matched_coords

# 测试调用
userCoor = [35.829042, -88.039396]
ranges = 500  # 单位:米
findClosest(coor, userCoor, ranges)

代码说明

  • 坐标格式适配:geopy.distance要求经纬度以元组形式传入,因此先将userCoor列表转为元组。
  • 距离单位处理:distance.distance()返回的Distance对象支持.meters和.km属性,可直接匹配需求的单位进行判断。
  • 筛选逻辑:遍历所有坐标点,逐一计算与目标用户的距离,收集符合范围的点后输出结果。

测试输出

运行代码后,示例参数对应的输出为:

找到1个在500米范围内的用户坐标:
(35.812953, -88.120935)

内容的提问来源于stack exchange,提问作者moshiulRabbi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 16:01:10