python 计算2个经纬度之间的直线距离
时间: 2023-11-06 13:05:59 浏览: 41
可以使用 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))
d = R * c
return d
```
其中,`lat1` 和 `lon1` 是第一个点的纬度和经度,`lat2` 和 `lon2` 是第二个点的纬度和经度。函数返回值是两个点之间的距离(单位为千米)。
相关问题
两个经纬度之间的直线距离计算
计算两个经纬度之间的直线距离,可以使用 Haversine 公式,公式如下:
d = 2 * r * arcsin(sqrt(sin²((lat₂-lat₁)/2) + cos(lat₁) * cos(lat₂) * sin²((lon₂-lon₁)/2)))
其中,d 表示两个经纬度之间的直线距离,r 表示地球半径,lat₁、lon₁ 和 lat₂、lon₂ 分别表示两个经纬度的纬度和经度。
在使用该公式计算距离时,需要将经纬度转换为弧度制。例如,如果使用度数表示经纬度,则需要将其转换为弧度制,公式如下:
radian = degree * π / 180
其中,degree 表示度数,π 表示圆周率。
下面是用 Python 实现 Haversine 公式计算两个经纬度之间的直线距离的代码示例:
```python
from math import sin, cos, sqrt, atan2, radians
# 地球半径
R = 6371.0
# 两个经纬度的度数表示
lat1 = 52.2296756
lon1 = 21.0122287
lat2 = 52.406374
lon2 = 16.9251681
# 将经纬度转换为弧度制
lat1_r = radians(lat1)
lon1_r = radians(lon1)
lat2_r = radians(lat2)
lon2_r = radians(lon2)
# 计算经纬度之间的距离
d_lon = lon2_r - lon1_r
d_lat = lat2_r - lat1_r
a = sin(d_lat / 2)**2 + cos(lat1_r) * cos(lat2_r) * sin(d_lon / 2)**2
c = 2 * atan2(sqrt(a), sqrt(1 - a))
distance = R * c
print("两个经纬度之间的距离:", distance, "km")
```
python已知经纬度求城市之间的直线距离
在Python中,可以使用haversine公式来计算两个地点之间的直线距离。Haversine公式是一种用于计算两个球面坐标之间距离的算法,可以用于计算两个经纬度坐标之间的距离。其公式如下:
d = 2r * arcsin(sqrt(sin((lat2-lat1)/2)^2 + cos(lat1) * cos(lat2) * sin((lon2-lon1)/2)^2))
其中,d是两个地点之间的距离,lat1,lon1是第一个地点的纬度和经度,lat2,lon2是第二个地点的纬度和经度,r是地球的平均半径,约为6371km。
因此,我们可以使用Python中的math库来计算两点之间的距离,并且使用的公式为Haversine公式。
下面是一个使用Python计算经纬度之间距离的例子:
```python
from math import radians, cos, sin, asin, sqrt
def calc_distance(lat1, lon1, lat2, lon2):
# 转换经纬度为弧度
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
# 举例:计算北京和上海之间的距离
lat1, lon1 = 39.9042, 116.4074 # 北京的经纬度
lat2, lon2 = 31.2304, 121.4737 # 上海的经纬度
distance = calc_distance(lat1, lon1, lat2, lon2)
print("北京和上海之间的距离为:",distance,"km")
```
以上代码会输出:北京和上海之间的距离为: 1068.9046696384106 km
即北京和上海之间的大约距离为1068.9公里。