两个经纬度坐标点连接形成一个线段,另两个经纬度坐标点连接形成另一条线段,计算两个线段之间的夹角,用python实现
时间: 2024-04-11 09:33:57 浏览: 86
角度计算.rar_acresygs_brickbad_lyinghi1_priceyfo_根据两点间的经纬度计算夹角
要计算两条线段之间的夹角,你可以使用球面三角学中的余弦定理。以下是一个用Python实现的示例代码:
```python
import math
def calculate_angle(lat1, lon1, lat2, lon2, lat3, lon3, lat4, lon4):
# 将经纬度转换为弧度
lat1 = math.radians(lat1)
lon1 = math.radians(lon1)
lat2 = math.radians(lat2)
lon2 = math.radians(lon2)
lat3 = math.radians(lat3)
lon3 = math.radians(lon3)
lat4 = math.radians(lat4)
lon4 = math.radians(lon4)
# 计算两个向量的内积
dot_product = math.sin(lat1) * math.sin(lat2) * math.sin(lat3) * math.sin(lat4) + \
math.cos(lat1) * math.cos(lat2) * math.cos(lat3) * math.cos(lat4) * \
(math.cos(lon1 - lon2) * math.cos(lon3 - lon4) + \
math.sin(lon1 - lon2) * math.sin(lon3 - lon4))
# 计算夹角(弧度)
angle_rad = math.acos(dot_product)
# 将弧度转换为角度
angle_deg = math.degrees(angle_rad)
return angle_deg
# 示例坐标点
lat1 = 40.7128
lon1 = -74.0060
lat2 = 34.0522
lon2 = -118.2437
lat3 = 51.5074
lon3 = -0.1278
lat4 = 48.8566
lon4 = 2.3522
# 计算两个线段之间的夹角
angle = calculate_angle(lat1, lon1, lat2, lon2, lat3, lon3, lat4, lon4)
print("两个线段之间的夹角为: {:.2f} 度".format(angle))
```
在代码中,我们首先将经纬度转换为弧度,然后使用余弦定理计算两个向量的内积。最后,我们将内积转换为夹角(弧度),并将其转换为角度。注意,这里假设地球是一个完美的球体,实际情况可能会有一些误差。
阅读全文