如何计算两个经纬度之间的距离
时间: 2023-11-04 18:06:00 浏览: 149
计算两个经纬度之间的距离可以使用地球表面两点之间的大圆距离公式,也称为Haversine公式。下面是一个使用Python实现的例子:
```python
import math
def distance(lat1, lon1, lat2, lon2):
R = 6371 # 地球平均半径,单位为公里
dlat = math.radians(lat2 - lat1)
dlon = math.radians(lon2 - lon1)
a = math.sin(dlat / 2) * math.sin(dlat / 2) + \
math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * \
math.sin(dlon / 2) * math.sin(dlon / 2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
dist = R * c
return dist
```
其中,`lat1`和`lon1`表示第一个点的纬度和经度,`lat2`和`lon2`表示第二个点的纬度和经度,返回值为两个点之间的距离,单位为公里。
相关问题
用python语言编写一个计算两个经纬度之间距离的代码
可以使用 geopy 库来计算两个经纬度之间的距离。
下面是一个示例代码:
```python
from geopy.distance import geodesic
# 经纬度坐标点1
lat1 = 39.908722
lon1 = 116.397499
# 经纬度坐标点2
lat2 = 31.230416
lon2 = 121.473701
# 计算距离
distance = geodesic((lat1, lon1), (lat2, lon2)).km
print(f"The distance between the two points is {distance:.2f} km.")
```
输出结果为:
```
The distance between the two points is 1060.70 km.
```
其中 `geodesic` 函数的参数为两个经纬度坐标点组成的元组,返回的距离单位为千米。
以下是一份实现计算两个经纬度之间距离的Qt代码,精确到厘米
double distance(double lat1, double lon1, double lat2, double lon2) {
const double EARTH_RADIUS = 6378137.0; // 地球半径,单位为米
double radLat1 = qDegreesToRadians(lat1);
double radLat2 = qDegreesToRadians(lat2);
double a = radLat1 - radLat2;
double b = qDegreesToRadians(lon1) - qDegreesToRadians(lon2);
double s = 2 * qAsin(qSqrt(qPow(qSin(a/2),2) + qCos(radLat1)*qCos(radLat2)*qPow(qSin(b/2),2)));
s = s * EARTH_RADIUS;
return qRound(s * 100.0) / 100.0; // 精确到厘米,四舍五入取两位小数
}
阅读全文