如何计算两个经纬度之间的距离
时间: 2023-11-04 14:06:00 浏览: 138
计算两个经纬度之间的距离可以使用地球表面两点之间的大圆距离公式,也称为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语言编写一个计算两个经纬度之间距离的代码
### 回答1:
可以使用以下代码:
from math import radians, cos, sin, asin, sqrt
def haversine(lon1, lat1, lon2, lat2):
# 将十进制度数转化为弧度
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine公式
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
r = 6371 # 地球平均半径,单位为公里
return c * r
### 回答2:
下面是一个用Python编写的计算两个经纬度之间距离的代码:
```python
import math
def distance_between_coordinates(lat1, lon1, lat2, lon2):
# 将经纬度转换为弧度
lat1_rad = math.radians(lat1)
lon1_rad = math.radians(lon1)
lat2_rad = math.radians(lat2)
lon2_rad = math.radians(lon2)
# 使用Haversine公式计算距离
dlon = lon2_rad - lon1_rad
dlat = lat2_rad - lat1_rad
a = math.sin(dlat/2) ** 2 + math.cos(lat1_rad) * math.cos(lat2_rad) * math.sin(dlon/2) ** 2
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
distance = 6371 * c
return distance
# 例子:
lat1 = 40.7128
lon1 = -74.0060
lat2 = 34.0522
lon2 = -118.2437
result = distance_between_coordinates(lat1, lon1, lat2, lon2)
print("两个坐标之间的距离:", result, "公里")
```
上述代码使用了Haversine公式计算两个坐标之间的地表距离。其中`lat1`和`lon1`表示第一个坐标点的纬度和经度,`lat2`和`lon2`表示第二个坐标点的纬度和经度。最后输出的是距离的值,单位为公里。
注意,上述代码只适用于球面上的距离计算,不适用于计算地球上的距离。如果需要更精确的计算,可以考虑使用更复杂的算法。
### 回答3:
您好!以下是用Python语言编写的一个计算两个经纬度之间距离的代码:
```python
import math
def calculate_distance(lat1, lon1, lat2, lon2):
# 地球平均半径,单位为千米
earth_radius = 6371.0
# 将经纬度从度数转换为弧度
lat1 = math.radians(lat1)
lon1 = math.radians(lon1)
lat2 = math.radians(lat2)
lon2 = math.radians(lon2)
# 计算经度和纬度的差值
dlon = lon2 - lon1
dlat = lat2 - lat1
# 使用Haversine公式计算两点间的距离
a = math.sin(dlat / 2)**2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon / 2) ** 2
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
# 计算两点间的直线距离
distance = earth_radius * c
return distance
# 示例使用
lat1 = 39.908823
lon1 = 116.397470
lat2 = 40.908823
lon2 = 116.497470
distance = calculate_distance(lat1, lon1, lat2, lon2)
print("两个经纬度之间的距离为:", distance, "千米")
```
以上代码使用了Haversine公式来计算两个经纬度之间的距离。根据给定的经纬度,通过计算经度和纬度的差值,然后利用Haversine公式和地球半径,最终得到两个经纬度之间的直线距离(单位:千米)。在示例使用中,我们计算了(39.908823,116.397470)和(40.908823,116.497470)这两个点之间的距离,并将结果打印输出。请根据实际需求修改代码中的经纬度值,以获得您需要的计算结果。
以下是一份实现计算两个经纬度之间距离的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; // 精确到厘米,四舍五入取两位小数
}
阅读全文