【Python学习】指定两点地理位置经纬度的距离计算

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

指定两点地理位置经纬度的距离计算

1#coding=utf-823frommathimport*45#input Lat_A 纬度A6#input Lng_A 经度A7#input Lat_B 纬度B8#input Lng_B 经度B9#output distance 距离(km)10defcalcDistance(Lat_A, Lng_A, Lat_B, Lng_B):11ra = 6378.140#赤道半径 (km)12rb = 6356.755#极半径 (km)13flatten = (ra - rb) / ra#地球扁率14rad_lat_A =radians(Lat_A)15rad_lng_A =radians(Lng_A)16rad_lat_B =radians(Lat_B)17rad_lng_B =radians(Lng_B)18pA = atan(rb / ra *tan(rad_lat_A))19pB = atan(rb / ra *tan(rad_lat_B))20xx = acos(sin(pA) * sin(pB) + cos(pA) * cos(pB) * cos(rad_lng_A -rad_lng_B))21c1 = (sin(xx) - xx) * (sin(pA) + sin(pB)) ** 2 / cos(xx / 2) ** 222c2 = (sin(xx) + xx) * (sin(pA) - sin(pB)) ** 2 / sin(xx / 2) ** 223dr = flatten / 8 * (c1 -c2)24distance = ra * (xx +dr)25returndistance2627Lat_A=32.060255; Lng_A=118.796877#南京28Lat_B=39.904211; Lng_B=116.407395#北京29distance=calcDistance(Lat_A,Lng_A,Lat_B,Lng_B)30PRint('(Lat_A, Lng_A)=({0:10.3f},{1:10.3f})'.format(Lat_A,Lng_A))31print('(Lat_B, Lng_B)=({0:10.3f},{1:10.3f})'.format(Lat_B,Lng_B))32print('Distance={0:10.3f} km'.format(distance))

执行结果:

(Lat_A, Lng_A)=( 32.060, 118.797)

(Lat_B, Lng_B)=( 39.904, 116.407)

Distance= 896.533 km

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航