python根据经纬度计算距离
时间: 2023-08-31 22:09:51 浏览: 164
可以使用haversine公式来计算两个地点的距离。haversine公式是根据地球上两点的经纬度计算它们之间距离的一种公式。
以下是一个用Python实现haversine公式的例子:
```python
import math
def distance(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) ** 2 + math.cos(lat1) * math.cos(lat2) *
math.sin(dLon / 2) ** 2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
distance = R * c
return distance
```
函数的参数是两个地点的纬度和经度。它返回的距离单位是公里。
相关问题
python 两经纬度计算距离
可以使用Python中的geopy库来计算两个经纬度之间的距离。下面是一个示例代码:
```python
from geopy.distance import geodesic
# 定义两个经纬度
coord1 = (31.2304, 121.4737) # 上海经纬度
coord2 = (39.9042, 116.4074) # 北京经纬度
# 计算两个经纬度之间的距离
distance = geodesic(coord1, coord2).km
print("两个经纬度之间的距离是:", distance, "千米")
```
输出结果为:
```
两个经纬度之间的距离是: 1068.9273170769022 千米
```
在上面的代码中,我们首先导入了geopy库中的geodesic函数。然后,我们定义了两个经纬度坐标,分别是上海和北京的经纬度。最后,我们使用geodesic函数计算了这两个经纬度之间的距离,并将结果以千米为单位打印出来。
python 经纬度计算距离Vincenty
在Python中,可以利用geopy库来进行经纬度之间的距离计算,特别是使用Vincenty's formula for ellipsoidal distance(文森公式),它考虑了地球的曲率,提供更精确的大圆距离计算,适用于地球表面两点间的距离。这个公式主要用于处理球面坐标系下的大圆航线。
以下是使用geopy库中`distance.VincentyDistance()`函数的基本步骤:
```python
from geopy.distance import VincentyDistance
# 定义两个经纬度点
point1 = (lat1, lon1)
point2 = (lat2, lon2)
# 创建VincentyDistance实例
vdist = VincentyDistance()
# 计算距离
distance, azimuth = vdist(point1, point2)
distance_km = distance.kilometers # 距离以公里为单位
print(f"两地距离: {distance_km} km")
```
其中,`(lat1, lon1)` 和 `(lat2, lon2)` 分别代表两个经纬度坐标,返回的是直线距离和方位角。如果你需要实际路线或驾车导航的距离,可能还需要结合其他服务如Google Maps API等。
阅读全文