1 介绍
- Geopy使用测地线距离或大圆距离来计算两点之间的地理距离,其中默认使用测地线距离(geopy.distance.distance)
- 大圆距离(great_circle)使用地球的球形模型,,半径为6371.0087714150598 公里(适用于 WGS-84)
- 其误差可达到大约 0.5%
- 该半径值存储在
distance.EARTH_RADIUS
中,因此可以自定义(但单位应始终为公里)
- 测地线距离是地球椭球模型表面上的最短距离
- 有多种流行的地球椭球模型,默认情况下使用的是全球最准确的 WGS-84 椭球模型
- geopy 还在
distance.ELLIPSOIDS
字典中包括了其他几种模型
- 大圆距离(great_circle)使用地球的球形模型,,半径为6371.0087714150598 公里(适用于 WGS-84)
2 举例
2.1 测地线距离
from geopy import distance
loc1 = (31.255561, 121.480033)
loc2 = (31.345561, 121.530033)
distance.distance(loc1,loc2)
#Distance(11.055949693856725)
#两个坐标点的测地线距离
distance.distance(loc1,loc2).km
#11.055949693856725
distance.distance(loc1,loc2).m
#11055.949693856724
distance.distance(loc1,loc2).miles
#6.8698486425877405
#换算成不同的单位
测地线距离使用distance.distance 和 distance.geodesic是没差的
可以切换椭圆模型
distance.geodesic(loc1, loc2,
ellipsoid='GRS-80')
#Distance(11.05594969368841)
也可以自定义椭圆模型的各个参数
distance.geodesic(loc1, loc2,
ellipsoid=(6377., 6356., 1 / 297.))
#Distance(11.053833498906037)
2.2 大圆距离
distance.great_circle(loc1,loc2)
#Distance(11.077858517227645)
3 返回的距离也可以做运算
from geopy import distance
from geopy.distance import Distance
loc1 = (31.255561, 121.480033)
loc2 = (31.345561, 121.530033)
distance.geodesic(loc1,loc2)
#Distance(11.055949693856725)
distance.geodesic(loc1,loc2)*2
#Distance(22.11189938771345)
distance.geodesic(loc1,loc2)+Distance(meters=1)
#Distance(11.056949693856724)
4 知道起点、距离和朝向,计算终点
from geopy import distance
distance.distance(kilometers=1).destination((31.255561,121.480033),bearing=90)
距离类这里大写D小写d没有区别
destination的第一个参数表示起始点,第二个参数表示朝向(北0、东90、南180、西270)