根据经纬度计算两点之间的距离

怼烎@ 2023-10-10 09:13 69阅读 0赞
  1. 经纬度计算有各种计算方式,一般误差也各不相同。个人觉着结合地球半径的计算方法可能靠谱一些,但是具体的计算公式是怎么来的,就不清楚,不知道谁提出的。下面给出一个计算方法和[经纬度查询][Link 1]网站上的查询结果很接近了。
  2. 下面给出代码,并附上运行的结果:
  3. package com.xxx.javaee.common;
  4. public class DistanceCalculate {
  5. //地球半径
  6. private static final double R = 6378.137d;
  7. public static double radius(double d) {
  8. return d * Math.PI / 180.0;
  9. }
  10. public static double getDistanceByR(Point a,Point b) {
  11. double distance = 0;
  12. double lata = radius(a.latitude);
  13. double latb = radius(b.latitude);
  14. double latd = lata - latb;
  15. double lond = radius(a.longitude-b.longitude);
  16. double sina = Math.sin(latd/2.0);
  17. double sinb = Math.sin(lond/2.0);
  18. distance = 2 * R * Math.asin(Math.sqrt(sina*sina+Math.cos(lata)*Math.cos(latb)*sinb*sinb));
  19. return distance;
  20. }
  21. public static void main(String[] args) {
  22. Point a = new Point(116.4028930664d,39.9034155951d);
  23. Point b = new Point(114.3347167969d,30.5433389542d);
  24. System.out.println("distance by radius : "+getDistanceByR(a, b));
  25. }
  26. }
  27. class Point{
  28. double longitude;//经度
  29. double latitude; //纬度
  30. public Point() {}
  31. public Point(double longitude,double latitude) {
  32. this.longitude = longitude;
  33. this.latitude = latitude;
  34. }
  35. }

这里给出的示例是粗略计算北京到武汉的直线距离,经纬度都定位在北京和武汉的中心位置,他们的经纬度分别是:北京(116.4028930664d,39.9034155951d)与武汉(114.3347167969d,30.5433389542d)。

运行程序得到的结果如下:

20190924145002842.png

我这里计算的是大概1058公里,我们通过前面提到的gps查询网站的数据来对比一下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaW5pZmk_size_16_color_FFFFFF_t_70

准确输入两点的纬度和经度,点击提交得到:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaW5pZmk_size_16_color_FFFFFF_t_70 1

距离是1057公里,误差有一些,但是相对来说已经比较准了,对于一般的应用来说够用了。

发表评论

表情:
评论列表 (有 0 条评论,69人围观)

还没有评论,来说两句吧...

相关阅读

    相关 根据经纬度计算之间距离

        经纬度计算有各种计算方式,一般误差也各不相同。个人觉着结合地球半径的计算方法可能靠谱一些,但是具体的计算公式是怎么来的,就不清楚,不知道谁提出的。下面给出一个计算方法和

    相关 根据经纬度坐标计算距离

    现在如果有个业务需求,就是要做一个根据定位坐标实现计算距离并找到附近的店铺的推荐功能,已知数据库中会存储店铺的经纬度坐标。那么,这个需求已经很明确了,在要求不高的情况下,只要计

    相关 根据经纬度计算距离

    经纬度简介 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的 假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都