根据经纬度求球面距离
公式推导比较简单,直接上代码:
#!/usr/bin/env python
# -*- coding=utf-8 -*-
'''
经纬度求球面距离
file: R.py
ref:
http://blog.csdn.net/csfreebird/article/details/6820823
'''
import math
lat1 = 40.0028
long1 = 126.77654
lat2 = 40.010092
long2 = 126.58763
R = 6378.137*1000
def func1(lat00,long00,lat11,long11):
a = (lat00-lat11)*math.pi/180
b = (long00-long11)*math.pi/180
a1 = math.sin(a)
b1 = math.sin(b)
if(a==b and a==math.pi):
y = 2*math.pi*R
else:
y = 2*R*math.asin(pow((a1*a1+b1*b1),0.5)*0.5)
return y
def func2(lat00,long00,lat11,long11):
a00 = lat00*math.pi/180
a11 = lat11*math.pi/180
a = a00-a11
b = (long00-long11)*math.pi/180
y = 2 * R * math.asin(math.sqrt(pow(math.sin(a*0.5),2) + math.cos(a00)*math.cos(a11)*pow(math.sin(b*0.5),2)));
return y;
y = func1(lat1,long1,lat2,long2)
print y
y = func2(lat1,long1,lat2,long2)
print y</pre>