zoukankan      html  css  js  c++  java
  • 计算经纬度之间的实际距离

    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());
        }
  • 相关阅读:
    11-Mybatis中使用PageHelper分页插件
    10-Mybatis使用注解开发
    Windows快捷键
    环境搭建
    计算机基础
    oracle语句
    oracle
    测试质量和类型
    测试基础
    项目部署和总结
  • 原文地址:https://www.cnblogs.com/mlfz/p/15628559.html
Copyright © 2011-2022 走看看