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

     
  • 相关阅读:
    lanya
    Apple watch ,小米微信通知
    jenkins grunt 自动构建流程
    刷机步骤
    ipad忘记了锁屏密码,已经越狱了
    ar
    如何在ubuntu中安装php
    阿里云
    docker swarm 集群及可视化界面的安装及配置
    https://github.com/gaoyangxiaozhu/DockerVI
  • 原文地址:https://www.cnblogs.com/zengpeng/p/4325873.html
Copyright © 2011-2022 走看看