根据两点经纬坐标计算两点间的距离[JAVA]

本文详细阐述了如何通过理解空间几何模型及应用数学公式,将地球上的两个点转换为十进制度坐标,并计算这两点之间的实际距离。通过步骤解析,包括坐标转换、经纬度差值计算和距离公式应用,读者可以掌握从理论到实践的完整过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决此问题的关键是要理解空间几何模型,在理解空间几何模型的基础上再利用数学公式求取两点之间的值。其解决步骤如下:
1、设两点分别为P1、P2,如果其值是用度分秒形式表示,则需将其转换成十进制度的形式,如P1点纬度为23度30分,则其纬度值转换成十进制度的形式为23.5度。如果值为十进制度的形式,则直接进入第二步。
2、分别将两点的经度、纬度值转换成弧度制形式,如P1纬度为23.5度,转换成弧度制则为:23.5*PI / 180。分别用 P1latInRad、P1LongInRad、P2latInRad、P2LongInRad表示。
3、分别求取两点间的纬度差(dlat)与经度差(dlon);
4、求取两点间的正弦与余弦值,公式如下:
A=sin2(dlat/2) + cos(P1LatInRad)*cos(P2LatInRad)*Sin2(dlon/2)       (1)
5、求取两点的正切值,公式如下:
C=2*Math.Atan2(Math.Sqrt(A), Math.Sqrt(1-A))                     (2)
6、返回两点间的距离:公式如下:
D=EarthRadiusKm * C                                          (3)

 

 public class distCnvter {

     private  final  static  double PI = 3.14159265358979323;  //  圆周率
     private  final  static  double R = 6371229;  //  地球的半径

     public  static  double getDistance( double longt1,  double lat1,  double longt2, double lat2) {
         double x, y, distance;
        x = (longt2 - longt1) * PI * R
                * Math.cos(((lat1 + lat2) / 2) * PI / 180) / 180;
        y = (lat2 - lat1) * PI * R / 180;
        distance = Math.hypot(x, y);
         return distance;
    }
}

 

 

 

 

 

转载于:https://www.cnblogs.com/firetruck/archive/2011/12/09/2281548.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值