• 计算经纬度之间的实际距离


    1、数据库创建经纬度的函数

    CREATE OR REPLACE FUNCTION FUN_JW_DIST(lng1 numeric, lat1 numeric, lng2 numeric, lat2 numeric) RETURNS numeric AS $$
      SELECT ceil((
      6371 * acos(
      cos(radians(lat1)) * cos(radians(lat2)) * cos(
      radians(lng1) - radians(lng2)
      ) + sin(radians(lat1)) * sin(radians(lat2))
      )
      )*1000)::numeric as dist;
    $$ LANGUAGE SQL;

    调用

    select FUN_JW_DIST(120.451737, 36.520975, 120.455636, 36.520885) as dist;

    返回的dist即为距离

    2、Java计算

    引入Jar

                <dependency>
                    <groupId>org.gavaghan</groupId>
                    <artifactId>geodesy</artifactId>
                    <version>1.1.3</version>
                </dependency>

    进行计算

        /**
         * 计算实际距离
         *
         * @param longitudeFrom 距离1的经度
         * @param latitudeFrom  距离1的纬度
         * @param longitudeTo   距离2的经度
         * @param latitudeTo    距离2的纬度
         * @return 实际距离,单位:米(四舍五入为整数)
         */
        public static long getDistance(double longitudeFrom, double latitudeFrom, double longitudeTo, double latitudeTo) {
            GlobalCoordinates source = new GlobalCoordinates(latitudeFrom, longitudeFrom);
            GlobalCoordinates target = new GlobalCoordinates(latitudeTo, longitudeTo);
            return Math.round(new GeodeticCalculator().calculateGeodeticCurve(Ellipsoid.Sphere, source, target).getEllipsoidalDistance());
        }
  • 相关阅读:
    LeetCode Related Info
    LeetCode Climbing Stairs
    Linux命令语句秘籍
    Java基础学习 —— io
    Jquery的入门学习
    Java基础学习 —— bat处理文件
    Java基础学习 —— 线程
    Java基础学习——泛型
    java基础学习——集合
    两个div叠加触发事件发生闪烁问题
  • 原文地址:https://www.cnblogs.com/mlfz/p/15628559.html
Copyright © 2020-2023  润新知