2,Geopy

2.1 Geopy 库介绍

这里介绍一个Python 包 Geopy ,借助它也可以实现经纬度地理位置转换,

这款包之经纬度转换原理其实还是借助了第三方 API 平台,因为市面上提供经纬度转换 第三方平台很多,为了方便, Geopy 把这些接口都分别封装在一个类中,借助 Geopy 模块来调用,支持的第三放平台如下

Geopy作为一个专注于地理处理包之外, 除了能实现上面地理编码逆地理编码功能之外,还有一个其它令我经验的功能, 提供两个经纬度坐标,计算他们在地球上的最短距离

下面将介绍一下 Geopy 的具体用法,

2. 2 地理编码

使用 地理编码功能时,需要借助 Geopy 的 geocoders 模块,Geopy 把所有第三方API封装到 geocoders 中

这里选用 OpenStreetMap 平台上提供的 Nominatim 地理编码器,因为可以免费供我们使用,不需要申请 API ,但缺点是限流,限额,不能大规模频繁访问,否则会返回 403,429错误代码

from geopy.geocoders import Nominatim
geolocator=Nominatim()
location= geolocator.geocode("北京市海淀区西二旗北路")
print(location.address)
print(location.latitude,location.longitude)

结果如下

西二旗北路, 东北旺村, 海淀区, 北京市, 102208, 中国
40.056793 116.305811

2.3 逆地理编码

from geopy.geocoders import Nominatim
geolocator=Nominatim()
location= geolocator.reverse("40.056793 116.305811")
print(location.address)

结果如下

1#, 西二旗北路, 东北旺村, 海淀区, 北京市, 102208, 中国

结果看起来还不错,简单方便;但提醒一下,因为前面说过 Nominatim 模块是限额度的,不要频繁访问,否则会出现以下错误

2.4 根据经纬度计算距离

Geopy 最让我惊喜的是这个用法,提供两个经纬度坐标计算他们之间的距离,因为地球具体来说是椭圆,所以不能按照常规方法来计算 ,目前现有比较流行的几个模型有以下几个

              model             major (km)   minor (km)     flattening
ELLIPSOIDS = {'WGS-84':        (6378.137,    6356.7523142,  1 / 298.257223563),'GRS-80':        (6378.137,    6356.7523141,  1 / 298.257222101),'Airy (1830)':   (6377.563396, 6356.256909,   1 / 299.3249646),'Intl 1924':     (6378.388,    6356.911946,   1 / 297.0),'Clarke (1880)': (6378.249145, 6356.51486955, 1 / 293.465),'GRS-67':        (6378.1600,   6356.774719,   1 / 298.25),}

根据官方介绍,官网选择的是 WGS-84 模型,根据统计最终计算到的距离误差最高在0.5%左右;使用方法如下

from geopy import distance
newport_ri = (41.49008, -71.312796)
cleveland_oh = (41.499498, -81.695391)
print(distance.distance(newport_ri, cleveland_oh).miles)#最后以英里单位输出#output
538.39044536wellington = (-41.32, 174.81)
salamanca = (40.96, -5.50)
print(distance.distance(wellington, salamanca).km)# 以 km 作为单位输出
19959.6792674

Python 库 Geopy 的用法,经纬度坐标转换、经纬度距离计算相关推荐

  1. uniapp 实时定位(高德、后台运行、支持息屏、坐标转换、距离计算) Ba-LocationAMap

    简介(下载地址) Ba-LocationAMap 是一款uniapp定位插件(高德).支持实时定位.后台运行.息屏运行等:支持逆地理地址信息:支持坐标转换:支持坐标转换:支持距离计算:支持电池优化白名 ...

  2. 经纬度之间的距离计算

    来自谷歌地图的计算公式: 通过JAVA的Math类各种方法调用.实现上述公式 private static double EARTH_RADIUS = 6378.137;// 单位千米/*** 角度弧 ...

  3. python库numpy基本用法

    NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 1. 数组创建 import numpy ...

  4. python库pickle的用法

    import pickle 有的时候,一个结果可能花了很久才得到,但是我们不希望每次都在程序开头重新处理一遍,这个时候我们选择将这些结果保存下来, pickle就是这样一个库. pickle:序列化和 ...

  5. mysql 下 计算 两点 经纬度 之间的距离 计算结果排序

    根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...

  6. 两经纬度之间的距离计算

    以下是计算两经纬度之间距离的代码,分为:头文件.源代码和测试代码三部分. 具体如下: 1 // LatLonDistanceDlg.h : 头文件 2 // 3 4 #pragma once 5 6 ...

  7. mysql 单精度和双经度_mysql 下 计算 两点 经纬度 之间的距离 计算结果排序

    根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...

  8. Python库 turtlede的使用(绘制小黄人、樱花树、小猪佩奇、皮卡丘)

    最近在学习Python库turtle的用法,顺便也整理了几个用turtle库画的图形,具体如下. 一  turtle的基本操作 1. 引用 turtle库 2. 常用的基础函数 (1)绘制状态的函数 ...

  9. python中eval的用法?

    python中eval函数用法如下: 1.计算字符串中有效的表达式,并返回结果. 2.将字符串转成相应的对象(如list.tuple.dict和string之间的转换). 3.将利用反引号转换的字符串 ...

  10. java计算两个经纬度之间的距离

    前一阵项目中,有一个需求:是查找附近的人,其实就是查询某个距离内有多少用户.实现方式还是比较简单的,之前使用GeodeticCalculator计算经纬度误差在高德上与腾讯有点偏差,首先用户在APP上 ...

最新文章

  1. arm-linux-gcc libstdc .so.6,mini2440编译内核:usr/lib/libstdc++.so.6 not found
  2. 最适合说故事的插画素材,应用到UI设计中,感情线有了!
  3. 云服务器 ECS > 块存储 > 块存储介绍 > 块存储概述 请输入关键词
  4. 探究 Spring 的定时任务配置
  5. SpringMVC项目搭建及遇到的问题
  6. css样式,层叠顺序属性z-index
  7. 数据库mysql视频马士兵,马士兵mysql视频的个人笔记
  8. OpenCV之图像伪彩色增强
  9. 计算某一点绕另一点旋转一定角度后的坐标
  10. CoverageMaster winAMS
  11. Discuz!X3.4全新安装详细图文教程
  12. Python获取文件的行数和某一行的内容
  13. Java处理除数为零的情况
  14. Dijkstra算法以及与其他最短路径算法简要对比
  15. linux如何批量处理图片名,Linux下批量修改图片名称的方法详解
  16. linux下运行htk,Linux下安装编译并且测试HTK语音识别库
  17. Linux进阶 apache服务器;虚拟主机
  18. 10个优秀设计网站盘点
  19. AD的pcb中高度规则设置
  20. ES启动报错:Caused by: java.lang.IllegalArgumentException: can‘t add node {es2}

热门文章

  1. Google Earth影像数据破解之旅
  2. python十人抽奖小程序_利用python编写年会抽奖小程序
  3. linux复制文件到另一个文件夹
  4. 19.丑数(UVa136)
  5. 12个从小到超级成功的博客案例研究
  6. 这4个工具可以帮你图片放大后不模糊保持清晰!
  7. 雪球: 关于股票的经典书籍有哪些推荐
  8. 看到Apache协议 BSD协议,你知道啥意思吗
  9. 计算机软件安装流程,计算机软件系统快速安装流程简介
  10. 接口测试工具Hoppscotch