Python 库 Geopy 的用法,经纬度坐标转换、经纬度距离计算
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 的用法,经纬度坐标转换、经纬度距离计算相关推荐
- uniapp 实时定位(高德、后台运行、支持息屏、坐标转换、距离计算) Ba-LocationAMap
简介(下载地址) Ba-LocationAMap 是一款uniapp定位插件(高德).支持实时定位.后台运行.息屏运行等:支持逆地理地址信息:支持坐标转换:支持坐标转换:支持距离计算:支持电池优化白名 ...
- 经纬度之间的距离计算
来自谷歌地图的计算公式: 通过JAVA的Math类各种方法调用.实现上述公式 private static double EARTH_RADIUS = 6378.137;// 单位千米/*** 角度弧 ...
- python库numpy基本用法
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. 1. 数组创建 import numpy ...
- python库pickle的用法
import pickle 有的时候,一个结果可能花了很久才得到,但是我们不希望每次都在程序开头重新处理一遍,这个时候我们选择将这些结果保存下来, pickle就是这样一个库. pickle:序列化和 ...
- mysql 下 计算 两点 经纬度 之间的距离 计算结果排序
根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...
- 两经纬度之间的距离计算
以下是计算两经纬度之间距离的代码,分为:头文件.源代码和测试代码三部分. 具体如下: 1 // LatLonDistanceDlg.h : 头文件 2 // 3 4 #pragma once 5 6 ...
- mysql 单精度和双经度_mysql 下 计算 两点 经纬度 之间的距离 计算结果排序
根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...
- Python库 turtlede的使用(绘制小黄人、樱花树、小猪佩奇、皮卡丘)
最近在学习Python库turtle的用法,顺便也整理了几个用turtle库画的图形,具体如下. 一 turtle的基本操作 1. 引用 turtle库 2. 常用的基础函数 (1)绘制状态的函数 ...
- python中eval的用法?
python中eval函数用法如下: 1.计算字符串中有效的表达式,并返回结果. 2.将字符串转成相应的对象(如list.tuple.dict和string之间的转换). 3.将利用反引号转换的字符串 ...
- java计算两个经纬度之间的距离
前一阵项目中,有一个需求:是查找附近的人,其实就是查询某个距离内有多少用户.实现方式还是比较简单的,之前使用GeodeticCalculator计算经纬度误差在高德上与腾讯有点偏差,首先用户在APP上 ...
最新文章
- arm-linux-gcc libstdc .so.6,mini2440编译内核:usr/lib/libstdc++.so.6 not found
- 最适合说故事的插画素材,应用到UI设计中,感情线有了!
- 云服务器 ECS > 块存储 > 块存储介绍 > 块存储概述 请输入关键词
- 探究 Spring 的定时任务配置
- SpringMVC项目搭建及遇到的问题
- css样式,层叠顺序属性z-index
- 数据库mysql视频马士兵,马士兵mysql视频的个人笔记
- OpenCV之图像伪彩色增强
- 计算某一点绕另一点旋转一定角度后的坐标
- CoverageMaster winAMS
- Discuz!X3.4全新安装详细图文教程
- Python获取文件的行数和某一行的内容
- Java处理除数为零的情况
- Dijkstra算法以及与其他最短路径算法简要对比
- linux如何批量处理图片名,Linux下批量修改图片名称的方法详解
- linux下运行htk,Linux下安装编译并且测试HTK语音识别库
- Linux进阶 apache服务器;虚拟主机
- 10个优秀设计网站盘点
- AD的pcb中高度规则设置
- ES启动报错:Caused by: java.lang.IllegalArgumentException: can‘t add node {es2}