zoukankan      html  css  js  c++  java
  • 计算经纬度两点间距离

     1         /**
     2         * 将角度转化为弧度
     3       */
     4         public static double radians(double d)
     5         {
     6             return d * Math.PI / 180.0;
     7         }
     8         /**
     9           * 根据两点经纬度坐标计算直线距离
    10           * <p>
    11           * S = 2arcsin√sin²(a/2)+cos(lat1)*cos(lat2)*sin²(b/2) ̄*6378.137
    12           * <p>
    13           * 1. lng1 lat1 表示A点经纬度,lng2 lat2 表示B点经纬度;<br>
    14           * 2. a=lat1 – lat2 为两点纬度之差  b=lng1 -lng2 为两点经度之差;<br>
    15           * 3. 6378.137为地球赤道半径,单位为千米;
    16           *
    17           * @param lng1 点1经度
    18           * @param lat1 点1纬度
    19           * @param lng2 点2经度
    20           * @param lat2 点2纬度
    21           * @return 距离,单位千米(KM)
    22           * @see <a href="https://zh.wikipedia.org/wiki/%E5%8D%8A%E6%AD%A3%E7%9F%A2%E5%85%AC%E5%BC%8F">半正矢(Haversine)公式</a>
    23           */
    24         public static double getDistanceFrom2LngLat(double lng1, double lat1, double lng2, double lat2)
    25         {
    26             //将角度转化为弧度
    27             double radLng1 = radians(lng1);
    28             double radLat1 = radians(lat1);
    29             double radLng2 = radians(lng2);
    30             double radLat2 = radians(lat2);
    31 
    32             double a = radLat1 - radLat2;
    33             double b = radLng1 - radLng2;
    34 
    35             return 2 * Math.Asin(Math.Sqrt(Math.Sin(a / 2) * Math.Sin(a / 2) + Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Sin (b / 2) * Math.Sin (b / 2))) * 6378.137;
    36         }
     1 SELECT
     2     *,
     3     6378.138 * 2 * ASIN(
     4       SQRT(
     5         POW(
     6           SIN(
     7             (
     8               '.$lat.' * PI() / 180 - lat * PI() / 180
     9             ) / 2
    10           ), 2
    11         ) + COS('.$lat.' * PI() / 180) * COS(lat * PI() / 180) * POW(
    12           SIN(
    13             (
    14               '.$lng.' * PI() / 180 - lng * PI() / 180
    15             ) / 2
    16           ), 2
    17         )
    18       )
    19     ) *1000 AS distance
    20 FROM
    21     distance
    22 ORDER BY
    23     distance ASC
  • 相关阅读:
    html5 java多图片上传
    ajax post form表单
    java获取图片文件返回地址
    教你使用servlet拦截器,放行不需要拦截的内容
    实用的request接收值的工具类
    spring3的定时执行任务
    centos7.4无法启动之找不到EFIBOOTgrubx64.efi
    redhat7.2上搭建网易、epel的yum repo
    python2和python3中的关键字的区别--keyword模块
    搭建lamp的脚本
  • 原文地址:https://www.cnblogs.com/googlegis/p/15006968.html
Copyright © 2011-2022 走看看