写点什么

使用 python 计算两个位置的距离是多远

作者:技能实验室
  • 2022-10-19
    河南
  • 本文字数:1438 字

    阅读完需:约 1 分钟

python 中有许多关于经纬度转换的库,这其中有一个比较常用的库是


geopy

geopy 简单介绍

geopy 是几个流行的地理编码 web 服务的 Python 客户端实现。geopy 使 python 开发人员能够使用第三方地理编码程序和其他数据源轻松定位全球各地的地址、城市、国家和地标的坐标。


geopy 是一个开源的项目;项目地址:源代码官方文档: 文档地址


Geopy 作为一个专注于地理处理包之外, 除了能实现地理编码、逆地理编码功能之外,还可以通过提供两个经纬度坐标,计算他们在地球上的最短距离,球面距离等;

geopy 的使用

首先需要确保安装了 python,geopy 不是内置库,使用前需要进行安装;

安装 geopy

安装方式推荐有很多种,推荐使用 pip;


pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。


如何安装 pip:


  • 安装 python; 这个是必须安装的;

  • 下载 pip:

  • 官网地址:https://pypi.org/project/pip/#downloads; 下载完毕后,解压

  • 打开命令行窗口,进入到 pip 解压后的目录;执行代码

  • python3 setup.py install

    进行安装,安装完成后,将 pip 加入到系统环境变量中

  • 验证打开命令行窗口,输入 pip list 或者 pip3 list

    以上只针对于 windows 系统,其他系统也可以参考;

  • 执行安装命令:打开命令行窗口,输入执行以下代码,并回车

  • pip install geopy

  • 等待提示第三库安装成功既可;


安装完成后,导入 geopy,只需要输入


import geopy

功能案例:

  • 地理编码,根据地址查询坐标及详细信息


  import json  from geopy.geocoders import Nominatim   def location_geocode(self,address):        geolocator = Nominatim(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36")  # 放ua        # 根据地址查相关信息        location = geolocator.geocode(address)          print(json.dumps(location.raw,indent=4,ensure_ascii=False))
复制代码


以上函数需要输入一个地址参数,通过OpenStreetMap 平台上提供的 Nominatim 地理编码器获取地址详细信息;为方便查看,使用json,dumps方法格式化输出;
复制代码


  • 逆地址编码 根据坐标查地点


    import json  from geopy.geocoders import Nominatim    geolocator = Nominatim(user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36")  # 放ua        location = geolocator.reverse("31.239853 121.499740")  #纬度在前,经度在后
print(location, location.address, location.latitude, location.longitude, location.altitude, location.point, location.raw) print(json.dumps(location.raw, indent=4, ensure_ascii=False))
复制代码


  • 两个经纬度坐标计算距离


计算距离需要使用 geopy 中的 distance 对象;引入


from geopy import distance


调用方式一:


dist = distance.distance((19.90733345,116.191244079988), (11.239853,21.499740)) # 纬度在前、经度在后 print(dist.km) # 距离: km: 千米, m: 米, miles: 英里


调用方式二:


dist = distance.geodesic((39.90733345,116.391244079988), (31.239853,121.499740))print(dist.km) # 距离: km: 千米, m: 米, miles: 英里 print(dist.m)


两种方式获取到同样的结果;

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022-07-26 加入

还未添加个人简介

评论

发布
暂无评论
使用python计算两个位置的距离是多远_Python_技能实验室_InfoQ写作社区