根据两点经纬度计算地球表面两点间的距离

本文提供了将十进制经纬度转换为度、分、秒的方法,并介绍了如何反向转换。此外还详细说明了使用JavaScript来计算地球上任意两点之间的距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在基于地理信息的应用很火,无论是从google map上获取的地理位置信息,还是通过iphone或Android这类拥有GPS模块的移动终端获取的地理位置信息,都是十进制的经纬度信息。在我们做实际应用时可能需要计算在地球表面某两点间的距离,这里以JavaScript为示例语言,提供计算方法,这也是google map所采用的计算方法。

1. 十进制经纬度转度、分、秒

  1. functiondec2deg(dec){
  2. vardec=Math.abs(dec)+"";
  3. dec=dec.split(".");
  4. vardeg=dec[0];
  5. dec[1]="0."+dec[1];
  6. varmin_sec=dec[1]*3600;
  7. varmin=Math.floor(min_sec/60);
  8. varsec=(min_sec-(min*60));
  9. return[deg,min,sec];
  10. }
function dec2deg(dec){
  var dec = Math.abs(dec) + "";
  dec = dec.split(".");

  var deg = dec[0];

  dec[1] = "0."+ dec[1];
  var min_sec = dec[1] * 3600;
  var min = Math.floor( min_sec / 60 );
  var sec =  ( min_sec - ( min * 60 ) ) ;

  return [deg, min, sec];
}

2. 度、分、秒转十进制经纬度

  1. functiondeg2dec(deg,min,sec){
  2. vardeg=Math.abs(deg);
  3. varmin=Math.abs(min);
  4. varsec=Math.abs(sec);
  5. returndeg*1+(sec*1+min*60)/3600;
  6. }
function deg2dec(deg, min, sec){
  var deg = Math.abs(deg);
  var min = Math.abs(min);
  var sec = Math.abs(sec);
  return deg * 1 +  ( sec  * 1 + min * 60 )/3600 ;
}

3. 计算两点间距离

  1. //弧度转换
  2. functionrad(d){
  3. returnd*Math.PI/180.0;
  4. }
  5. //计算距离,结果的单位为千米(km)
  6. functioncalDistance(lat1,lng1,lat2,lng2){
  7. if((Math.abs(lat1)>90)||(Math.abs(lat2)>90))
  8. returnfalse;
  9. if((Math.abs(lng1)>180)||(Math.abs(lng2)>180))
  10. returnfalse;
  11. varradLat1=rad(lat1);
  12. varradLat2=rad(lat2);
  13. vara=radLat1-radLat2;
  14. varb=rad(lng1)-rad(lng2);
  15. vars=2*Math.asin(
  16. Math.sqrt(
  17. Math.pow(Math.sin(a/2),2)+Math.cos(radLat1)*Math.cos(radLat2)*
  18. Math.pow(Math.sin(b/2),2)
  19. )
  20. );
  21. s=s*6378.137;//地球半径6378.137
  22. s=Math.round(s*10000)/10000;
  23. returns;
  24. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值