python求两点在地球表面距离
时间: 2024-05-14 08:08:41 浏览: 9
可以使用haversine公式来计算两点在地球表面的距离。这个公式需要用到两点的经纬度信息。以下是Python代码示例:
```python
from math import radians, sin, cos, sqrt, atan2
def distance(lat1, lon1, lat2, lon2):
R = 6371 # 地球平均半径,单位为公里
lat1, lon1, lat2, lon2 = map(radians, [lat1, lon1, lat2, lon2])
dlat = lat2 - lat1
dlon = lon2 - lon1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * atan2(sqrt(a), sqrt(1-a))
distance = R * c
return distance
```
其中,`lat1`和`lon1`是第一个点的纬度和经度,`lat2`和`lon2`是第二个点的纬度和经度。函数返回值为两点之间的距离,单位为公里。
相关问题
知道两点的经纬度怎么求距离
计算两点之间的距离需要使用地球表面的曲率。以下是计算两点之间距离的基本公式:
```
distance = 2 * r * arcsin(sqrt(sin^2((lat2 - lat1)/2) + cos(lat1) * cos(lat2) * sin^2((lon2 - lon1)/2)))
```
其中,`r` 是地球的半径,`lat1` 和 `lon1` 是第一个点的纬度和经度,`lat2` 和 `lon2` 是第二个点的纬度和经度。`arcsin` 和 `sin` 是三角函数,可以使用数学库中的函数来计算。
以下是一个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))
distance = r * c
return distance
```
例如,要计算纽约市和旧金山之间的距离:
```
distance(40.7128, -74.0060, 37.7749, -122.4194)
```
这将返回距离,单位为公里。
知道两点的经纬度怎么计算两点的距离python实现
下面是使用 Python 实现 Haversine 公式计算地球表面两点之间距离的示例代码:
```python
import math
def haversine(lat1, lon1, lat2, lon2):
R = 6371 # 地球半径,单位为公里
dLat = math.radians(lat2 - lat1)
dLon = math.radians(lon2 - lon1)
lat1 = math.radians(lat1)
lat2 = math.radians(lat2)
a = math.sin(dLat / 2) * math.sin(dLat / 2) + \
math.sin(dLon / 2) * math.sin(dLon / 2) * math.cos(lat1) * math.cos(lat2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
distance = R * c
return distance
```
其中,`lat1` 和 `lon1` 是第一个点的纬度和经度,`lat2` 和 `lon2` 是第二个点的纬度和经度。函数返回的是两点之间的距离,单位为公里。