根据经纬度计算两点距离的方法

简介: 根据经纬度计算两点距离的方法
#include <iostream>
#include <cmath>
using namespace std;
#define pi 3.1415926535897932384626433832795
#define EARTH_RADIUS 6378.137 //地球半径 KM
double rad(double d)
{
  return d * pi / 180.0;
}
double RealDistance(double lat1, double lng1, double lat2, double lng2)//lat1第一个点纬度,lng1第一个点经度,lat2第二个点纬度,lng2第二个点经度
{
  double a;
  double b;
  double radLat1 = rad(lat1);
  double radLat2 = rad(lat2);
  a = radLat1 - radLat2;
  b = rad(lng1) - rad(lng2);
  double s = 2 * asin(sqrt(pow(sin(a / 2), 2) + cos(radLat1)*cos(radLat2)*pow(sin(b / 2), 2)));
  s = s * EARTH_RADIUS;
  s = s * 1000;
  return s;
}
int main()
{
  cout << RealDistance(20.194970489552652, 110.564224161560745, 20.195110378886003, 110.564232333140893) << std::endl;
  getchar();
  return 0;
}

注意:以上方式是针对角度进行的计算,如果是弧度,则如下:

RealDistance(lat1, lng1, lat2, lng2) * 180 / pi;

海洋单位节转化成米/秒:

1节等于每小时 1海里,也就是每小时行驶1.852千米(公里) ,20节即20海里/小时,37.04公里/小时,(速度单位),也就是10.28米/秒, 20节运行100ms,可以移动10.28*0.1=1.028米!!!,运行三秒钟,可以移动30.84米

对应可运行程序如下链接:

https://download.csdn.net/download/qq_23350817/15599651


相关文章
|
编解码 索引 Python
python--根据任意非网格经纬度坐标,找到均匀网格点上最接近的经纬度坐标
需求:根据非规则经纬度坐标,查找均匀网格点上最接近的经纬度坐标,并提取该点上的变量。
python--根据任意非网格经纬度坐标,找到均匀网格点上最接近的经纬度坐标
|
4月前
|
Python
计算两个位置经纬度距离
计算两个位置经纬度距离
50 0
|
9月前
|
数据挖掘 Python
|
9月前
|
算法
1298:计算字符串距离
1298:计算字符串距离
|
9月前
|
定位技术 API 容器
百度地图API开发:map.getDistance计算两点之间的距离(直线距离)
百度地图API开发:map.getDistance计算两点之间的距离(直线距离)
644 0
如何判断投影坐标是 3 度带还是 6 度带?如何计算中央子午线经度?
如何判断投影坐标是 3 度带还是 6 度带?如何计算中央子午线经度?
|
机器学习/深度学习
(模拟)(矩阵坐标表示)1219. 移动距离
(模拟)(矩阵坐标表示)1219. 移动距离
66 0
|
定位技术 API Python
Python 优雅地利用两点经纬度计算地理空间距离
Calculate the distance (in various units) between two points on Earth using their latitude and longitude.
1116 0
Python 优雅地利用两点经纬度计算地理空间距离
|
Java
java 经纬度处理、计算两地的距离、获取当前一定距离以内的经纬度值
java 经纬度处理、计算两地的距离、获取当前一定距离以内的经纬度值
326 0