zoukankan      html  css  js  c++  java
  • 怎么计算两个经纬度之间的距离.

    1.
    用经纬度大致计算距离
    
    地球赤道上环绕地球一周走一圈共 40075.04公里
    而一圈分成360°
    而每1°(度)有60'
    每一度一秒在赤道上的长度计算如下:
    40075.04km/360°=111.31955km
    111.31955km/60'=1.8553258km=1855.3m
    而每一分又有60秒
    每一秒就代表 1855.3m/60=30.92m
    任意两点距离计算公式为
    d=111.12cos{1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB-λA)]}
    其中:A点经度,纬度分别为λA和ΦA
          B点的经度、纬度分别为λB和ΦB,d为距离
    
    地球上所有地方的纬度一分的距离都是约等于1.86公里,也就是一度等于1.86*60=111公里。
    不同纬度处的经度线上的一分的实际长度是不同的,219国道基本在东经29-38度之间,29度处的一分经线长约1.63公里,38度处的一分经线长约1.47公里。
     
     
    2.

        /// <summary>     /// 获取两个经纬度之间的距离     /// </summary>     /// <param name="LonA">经度A</param>     /// <param name="LatA">纬度A</param>     /// <param name="LonB">经度B</param>     /// <param name="LatB">经度B</param>     /// <returns>距离(千米)</returns>     public static double getDistance(double LonA, double LatA, double LonB, double LatB)     {         // 东西经,南北纬处理,只在国内可以不处理(假设都是北半球,南半球只有澳洲具有应用意义)         double MLonA = LonA;         double MLatA = LatA;         double MLonB = LonB;         double MLatB = LatB;         // 地球半径(千米)         double R = 6371.004;         double C = Math.Sin(rad(LatA)) * Math.Sin(rad(LatB)) + Math.Cos(rad(LatA)) * Math.Cos(rad(LatB)) * Math.Cos(rad(MLonA - MLonB));         return (R * Math.Acos(C));     }

        private static double rad(double d)     {         return d * Math.PI / 180.0;     }

     
  • 相关阅读:
    SQL CREATE DATABASE 语句
    SQL SELECT INTO 语句
    SQL UNION 和 UNION ALL 操作符
    复盘实战营一期毕业典礼----HHR计划----以太入门课--第一课
    抑郁研究所融资历程分享--以太一堂--直播课
    投资人分享答疑----HHR计划----以太直播课第三课
    重新理解《务实创业》---HHR计划--以太一堂第三课
    HHR计划---作业复盘-直播第三课
    电影推荐算法---HHR计划
    一堂优秀学员吕智钊分享----HHR计划----直播课第二课
  • 原文地址:https://www.cnblogs.com/zengpeng/p/4325873.html
Copyright © 2011-2022 走看看