• 怎么计算两个经纬度之间的距离.


    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;     }

     
  • 相关阅读:
    进程,进程
    hmac和socketserver
    下载Eclipse、下载Java各个版本,来这里就对了
    Java循环语句怎么用?经典排序算法见真知
    CSS基本语法
    Html属性标签
    HTML标记大全参考手册
    composer 安装Laravel (win10)
    composer 安装(win)
    GIT
  • 原文地址:https://www.cnblogs.com/zengpeng/p/4325873.html
Copyright © 2020-2023  润新知