当前位置: 首页 > 编程笔记 >

java实现计算地理坐标之间的距离

谭京
2023-03-14
本文向大家介绍java实现计算地理坐标之间的距离,包括了java实现计算地理坐标之间的距离的使用技巧和注意事项,需要的朋友参考一下

java实现计算两经纬度点之间的距离,直接上代码,具体解释请参考注释


package com.jttx.poi.utils;

import com.jttx.poi.entity.Point;

/**

 * Created by louis on 2014/9/2.

 */

public class GeoUtils {

    /**

     * 计算两经纬度点之间的距离(单位:米)

     * @param lng1  经度

     * @param lat1  纬度

     * @param lng2

     * @param lat2

     * @return

     */

    public static double getDistance(double lng1,double lat1,double lng2,double lat2){

        double radLat1 = Math.toRadians(lat1);

        double radLat2 = Math.toRadians(lat2);

        double a = radLat1 - radLat2;

        double b = Math.toRadians(lng1) - Math.toRadians(lng2);

        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1)

                * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));

        s = s * 6378137.0;// 取WGS84标准参考椭球中的地球长半径(单位:m)

        s = Math.round(s * 10000) / 10000;

        return s;

    }

    /**

     * 计算TP值

     * @param curPoint      当前点

     * @param relatedPoint  偏移点

     * @param isGeography   是否是地理坐标 false为2d坐标

     * @return              tp值

     */

    public static double getDirAngle(Point curPoint,Point relatedPoint,boolean isGeography){

        double result = 0;

        if(isGeography){

            double y2 = Math.toRadians(relatedPoint.getLat());

            double y1 = Math.toRadians(curPoint.getLat());

            double alpha = Math.atan2(relatedPoint.getLat() - curPoint.getLat(), (relatedPoint.getLng() - curPoint.getLng()) * Math.cos((y2 - y1) / 2));//纬度方向乘以cos(y2-y1/2)

            double delta =alpha<0?(2*Math.PI+alpha):alpha;

            result = Math.toDegrees(delta);

        }else {

            double alpha = Math.atan2(relatedPoint.getLat() - curPoint.getLat(), relatedPoint.getLng() - curPoint.getLng());

            double delta=alpha<0?(2*Math.PI+alpha):alpha;

            result = Math.toDegrees(delta);

        }

        return result;

    }

    public static void main(String[] args) {

        System.out.println(getDistance(121.446014,31.215937,121.446028464238,31.2158502442799  ));

    }

}

以上就是本文的全部内容了,希望大家能够喜欢。

 类似资料:
  • 问题内容: 我有一个文本文件,如下所示 我想计算两个α碳原子之间的距离,即计算第一个和第二个原子之间的距离,然后计算第二个和第三个原子之间的距离,依此类推.....两个原子之间的距离可以表示为: 7,8和9列分别代表x,y和z坐标。我需要打印距离和对应的残基对(第4列),如下所示(距离的值不是实数) 如何使用Perl或python进行此计算? 问题答案: 如果您的数据用空格隔开,那么简单就可以完成

  • 本文向大家介绍php如何计算两坐标点之间的距离,包括了php如何计算两坐标点之间的距离的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了php计算两坐标点之间距离的实现代码,供大家参考,具体内容如下 地球上两个点之间,可近可远。 当比较近的时候,可以忽略球面因素,当做是一个平面,这样就有了两种计算方法。 小编再为大家分享一段php坐标之间距离的求解代码: 以上就是本文的全部内容,希望对

  • 本文向大家介绍php两点地理坐标距离的计算方法,包括了php两点地理坐标距离的计算方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了php计算两点地理坐标距离的具体代码,供大家参考,具体内容如下 功能:根据圆周率和地球半径系数与两点坐标的经纬度,计算两点之间的球面距离。 获取两点坐标距离: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍PHP计算百度地图两个GPS坐标之间距离的方法,包括了PHP计算百度地图两个GPS坐标之间距离的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP计算百度地图两个GPS坐标之间距离的方法。分享给大家供大家参考。 具体实现方法如下: 希望本文所述对大家的php程序设计有所帮助。

  • 问题内容: 我从互联网上的某个地方借用了以下方法(不记得在哪里)。但是它做的很简单,找到了两个gps点之间的距离。它工作得很好,除了它可能有点慢之外,因为我正在数百万个点上运行它。我想知道是否有人知道这种方法在计算上会更便宜。 准确度必须在“正确”的一般范围内,但不必是100%准确。 附言:我确实确实发现了许多其他相关问题,但是它们并没有真正关注我的速度问题。 问题答案: 如果您不介意忽略地球的微

  • 我试图使用Scala类计算两点之间的距离。但它给出了一个错误说 类型不匹配;发现:其他。需要类型(具有基础类型点):?{def x:?}请注意,隐式转换不适用,因为它们是不明确的:在[A](x:A)类型的对象Predef中确保[A]的方法any2Ensuring和在[A](x:A)“ArroAssoc[A]类型的对象Predef中的方法Ani2ArrowasSoc都是可能的其他转换函数。输入到?{