求球面上任意两点之间的距离
球面上任意两点之间的距离计算,我们采用Haversine公式。
其中
- R为地球半径,取6371km;
- φ1, φ2 表示两点的纬度;
- Δλ 表示两点经度的差值。
- d就是我们要求的距离
用python实现下计算球面两点之间距离的函数:
# coding:utf8
from math import sin, asin, cos, radians, fabs, sqrt
EARTH_RADIUS = 6371 # 地球平均半径,6371km
def hav(theta):
s = sin(theta / 2)
return s * s
def get_distance_hav(lat0, lng0, lat1, lng1):
# 用haversine公式计算球面两点间的距离。
# 经纬度转换成弧度
lat0 = radians(lat0)
lat1 = radians(lat1)
lng0 = radians(lng0)
lng1 = radians(lng1)
dlng = fabs(lng0 - lng1)
dlat = fab