原标题:计算两个GPS坐标点的距离

在日常开发中,我们难免要计算两个左边之间的距离,但是地图软件api的接口普遍要求我们必须要先将坐标点传递到他们服务器,然后计算出一个距离返还给我们,使用起来太不方便了, 下面是我整理的关于计算两个GPS坐标之间距离的方法

Lat1 Lung1 表示A点经纬度,Lat2 Lung2 表示B点经纬度;

a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung2 为两点经度之差;

6378.137为地球半径,单位为千米;

计算出来的结果单位为千米。

从google maps的脚本里扒了段代码,是用来计算两点间经纬度距离

```java private const double EARTH_RADIUS = 6378.137;

private static double rad(double d){return d * Math.PI / 180.0;

}

public static double GetDistance(double lat1, double lng1, double lat2, double lng2){double radLat1 = rad(lat1); double radLat2 = rad(lat2); double a = radLat1 - radLat2; double b = rad(lng1) - rad(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 * EARTH_RADIUS; s = Math.Round(s * 10000) / 10000; return s;

}

```

在android中可采用如下代码获取距离

```java public double getDistance(double lat1, double lon1, double lat2, double lon2) {float[] results=new float[1]; Location.distanceBetween(lat1, lon1, lat2, lon2, results); return results[0];

} ```

在其他设备若没有类似android的Location的distanceBetween方法开采用如下代码获取

这个计算得出的结果是英里,如果要转换成公里,需要乘以1.609344,若是海里需要乘以0.8684

```java double distance(double lat1, double lon1, double lat2, double lon2) {double theta = lon1 - lon2; double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta)); dist = Math.acos(dist); dist = rad2deg(dist); double miles = dist * 60 * 1.1515; return miles;

}

//将角度转换为弧度 static double deg2rad(double degree) {return degree / 180 * Math.PI;

}

//将弧度转换为角度 static double rad2deg(double radian) {return radian * 180 / Math.PI;

} ```

计算方位角pab,

其中lata, lnga是A的纬度和经度; latb, lngb是B的纬度和经度。代码如下:

```java private double gps2d(double lata, double lnga, double latb, double lngb){

double d = 0;

lata=lata*Math.PI/180;

lnga=lnga*Math.PI/180;

latb=latb*Math.PI/180;

lngb=lngb*Math.PI/180;

d=Math.sin(lata)Math.sin(latb)+Math.cos(lata)Math.cos(latb)*Math.cos(lngb-lnga);

d=Math.sqrt(1-d*d);

d=Math.cos(latb)*Math.sin(lngb-lng_a)/d;

d=Math.asin(d)*180/Math.PI;

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

return d; }

```

地图应用接口中使用的经纬度单位是NTU,您需要把其它单位的经纬度值转化过来,以下为常用的转换关系:

与经纬度有关的基础知识:

NTU 相当于十万分之一度。如何计算经度方向距离比如: 点A的纬度为3995400,点B的纬度为3995300,则这两个点在沿着纬线的方向相差100米。 点A的经度为11695400,点B的经度为11695300,则这两个点在沿着经线的方向相差大约为77米, 该值的计算方法可以用近似公式: 经度方向距离 = 经度差 * cos(纬度值) = 100 * cos(39) = 77米。

如何计算两点间距离比如:点A的经度为11695400,纬度为3995400。点B的经度为11695300,纬度为3995300。 公式:两点间距离 = [ (A点经度 - B点经度)^2 + (A点纬度 - B点纬度)^2 ] ^ (1/2) = [ (11695400 - 11695300)^2 + (3995400 - 3995300)^2 ] ^(1/2) =(10000+10000) ^ (1/2) =141米返回搜狐,查看更多

责任编辑:

计算坐标点的距离计算机公式,计算两个GPS坐标点的距离相关推荐

  1. java gps 距离计算_Java教程之地图中计算两个GPS坐标点的距离

    原标题:Java教程之地图中计算两个GPS坐标点的距离 在日常开发中,我们难免要计算两个左边之间的距离,但是地图软件api的接口普遍要求我们必须要先将坐标点传递到他们服务器,然后计算出一个距离返还给我 ...

  2. gps两点距离 php,PHP应用:PHP计算百度地图两个GPS坐标之间距离的方法

    <PHP应用:PHP计算百度地图两个GPS坐标之间距离的方法>要点: 本文介绍了PHP应用:PHP计算百度地图两个GPS坐标之间距离的方法,希望对您有用.如果有疑问,可以联系我们. 本文实 ...

  3. php 地图 距离,PHP计算百度地图两个GPS坐标之间距离的方法

    这篇文章主要介绍了PHP计算百度地图两个GPS坐标之间距离的方法,是针对百度地图接口开发的典型应用,需要的朋友可以参考下 本文实例讲述了PHP计算百度地图两个GPS坐标之间距离的方法.分享给大家供大家 ...

  4. Java计算两个GPS坐标点之间的距离(可用于计算里程等)

    直接贴上工具类: public class PositionUtil {private static final double EARTH_RADIUS = 6378.137; // 6378.137 ...

  5. pythongps距离_在Python中求两个gps点之间的距离

    我有下面的方法(haversine)返回两个gps点之间的距离.下表是我的数据帧.在 当我使用在dataframe上应用函数时,我得到错误"cannot convert the series ...

  6. 全站仪坐标计算机公式,全站仪使用方法及坐标计算讲解

    大家都知道随着建筑工程和仪器设备的发展,全站仪现已替代了经纬仪广泛应用于建筑工程中. 为了更好的掌握测量放线知识,今天对全站仪的使用和坐标计算和大家相互交流学习一下. 全站仪常规注意事项 在使用本仪器 ...

  7. c#语言+计算两个位置的距离,计算两个GPS坐标的距离 方法一 - C#语言

    场景:已知两个GPS点的经纬度坐标信息.计算两点的距离. 1. 距离/纬度关系 GPS: 22.514519,113.380301 GPS: 22.511962,113.380301 距离:284.6 ...

  8. 怎么利用计算机公式计算完成比例,excel表格数据计算所占比例公式的使用教程...

    Excel中经常需要使用到公式计算所占比例,所占比例具体该如何利用函数进行计算呢?接下来是学习啦小编为大家带来的excel表格数据计算所占比例公式的使用教程,供大家参考. excel表格数据计算所占比 ...

  9. 用计算机公式计算优良,『excel怎样合并单元格』如何在EXCEL中如何用公式计算全年级各班各科平均分、优秀率、合格率的方法...

    EXCEL中算优秀率用什么函数,例子 举例: 数据表-- A B C 姓名 001 张三 92 002 李四 80 003 赵丰 85 004 王二 95 005 钱宽 75 006 郑东 55 参考 ...

最新文章

  1. android Spinner 例子
  2. 不可思议的数字:互联网每天到底能产生多少数据?
  3. Extjs grid 设置行字体颜色
  4. oracle insert select 大 批量 数据_芬兰 Vaisala维萨拉 HM70手持式温湿度表 型号:FL15/HM70+HMP75【北京中西华大吧】...
  5. 没有servlet接口_Java——Servlet
  6. Task5.NB_SVM_LDA
  7. [SQL] 不允许保存更改
  8. 丰厚资本杨守彬:创业就是从地狱到天堂,路过人间而已
  9. 深入理解栈(Stack)
  10. pycharm中的Run with Python console功能是什么意思?
  11. 【TPAMI 2022】A Survey on Vision Transformer
  12. STM32F简单应用
  13. 电脑黑屏,只有鼠标光标
  14. 开发行业职业病之~~“键盘手”“鼠标手”“腱鞘炎”
  15. EasyX的安装与使用
  16. SPSS数据分析中出现的常见问题总结
  17. 基于Java+SpringBoot+Thymeleaf+Mysql新冠疫苗预约系统设计与实现
  18. def fasterrcnn_resnet50_fpn()实例测试
  19. java计算机毕业设计高校实习实训管理系统MyBatis+系统+LW文档+源码+调试部署
  20. python中max函数用法_python3 内置函数——max()函数

热门文章

  1. 【操作系统】进程的状态与转换
  2. 【Git】Git处理新Repository无法push的问题
  3. web 服务器和 web 技术发展历史简介
  4. 继三星、华为外,苹果提交的专利显示它也要开发可折叠手机了...
  5. Go语言11-日志系统客户端相关组件
  6. dispose方法的使用
  7. 2017中国人工智能峰会即将开启,和30位AI大咖一起头脑风暴
  8. 【对讲机的那点事】Tx/Rx系统中的非线性失真
  9. 电子书包“翻转”课堂
  10. 傲游浏览器新浪微博插件v2发布