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

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

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)

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

相关文章
|
18天前
|
Python
python幂运算——计算x的y次方
python幂运算——计算x的y次方
24 0
|
2月前
|
算法 索引 Python
使用Python实现PageRank计算
使用Python实现PageRank计算
|
7天前
|
安全 数据安全/隐私保护 Python
Python的整型在计算中具有以下优势
Python整型提供任意精度整数计算,无溢出风险;支持多种算术运算,操作简便;作为不可变类型保证数据安全;能进行高级数学运算,并有NumPy等库加持,适合数值分析和科学计算。
16 0
|
7天前
|
Python
Python的整型在计算中的精度可以通过使用二进制或十进制表示来体现
Python整型支持十、二、八、十六进制表示,其中十进制默认,二进制(0b前缀)、八进制(0o前缀)、十六进制(0x前缀)。计算时以二进制精度处理,确保结果准确。例如:123的二进制是0b1111011,八进制是0o173,十六进制是0x7b。
11 0
|
18天前
|
Python
Python计算股票投资组合的风险价值(VaR)
Python计算股票投资组合的风险价值(VaR)
|
20天前
|
数据可视化 Python
【视频】风险价值VaR原理与Python蒙特卡罗Monte Carlo模拟计算投资组合实例
【视频】风险价值VaR原理与Python蒙特卡罗Monte Carlo模拟计算投资组合实例
|
25天前
|
Python Serverless API
Python风险价值计算投资组合VaR、期望损失ES
Python风险价值计算投资组合VaR、期望损失ES
Python风险价值计算投资组合VaR、期望损失ES
|
25天前
|
数据可视化 Python
PYTHON贝叶斯推断计算:用BETA先验分布推断概率和可视化案例
PYTHON贝叶斯推断计算:用BETA先验分布推断概率和可视化案例
|
26天前
|
数据可视化 Python
Python蒙特卡罗(Monte Carlo)模拟计算投资组合的风险价值(VaR)
Python蒙特卡罗(Monte Carlo)模拟计算投资组合的风险价值(VaR)
|
26天前
|
数据可视化 Serverless API
Python风险价值计算投资组合VaR(Value at Risk )、期望损失ES(Expected Shortfall)
Python风险价值计算投资组合VaR(Value at Risk )、期望损失ES(Expected Shortfall)