通过Python代码实现
import math
def rad(d):
return d * 3.14159 / 180.0
def deg(d):
return d*180.0/3.14159
def CalculateAngle(lat1,lat2,lon1,lon2):
ilat1 = (int)(0.50 + lat1 * 360000.0)
ilat2 = (int)(0.50 + lat2 * 360000.0)
ilon1 = (int)(0.50 + lon1 * 360000.0)
ilon2 = (int)(0.50 + lon1 * 360000.0)
lat1=rad(lat1)
lat2=rad(lat2)
lon1=rad(lon1)
lon2=rad(lon2)
result=0.0
if (ilat1 == ilat2)and(ilon1 == ilon2):
return result
elif (ilon1 == ilon2):
if (ilat1 > ilat2):
result = 180.0
else:
c = math.acos(math.sin(lat2) * math.sin(lat1) + math.cos(lat2)* math.cos(lat1) * math.cos((lon2 - lon1)))
A = math.asin(math.cos(lat2) * math.sin((lon2 - lon1))/ math.sin(c))
result = math.toDegrees(A)
if ((ilat2 > ilat1) and(ilon2 > ilon1)):
result=result
elif((ilat2 < ilat1) and (ilon2 < ilon1)):
result = 180.0 - result
elif((ilat2 < ilat1) and (ilon2 > ilon1)):
result = 180.0 - result
elif ((ilat2 > ilat1) and (ilon2 < ilon1)):
result += 360.0
return result