经纬度距离角度计算器
时间: 2023-07-23 19:16:31 浏览: 340
您好!可以为您提供经纬度距离角度计算器的代码,如下所示:
```python
import math
# 地球半径,单位:米
EARTH_RADIUS = 6371000
# 将角度转换为弧度
def radians(degrees):
return degrees * math.pi / 180
# 计算两个经纬度之间的距离,单位:米
def distance(lon1, lat1, lon2, lat2):
rad_lon1, rad_lat1, rad_lon2, rad_lat2 = map(radians, [lon1, lat1, lon2, lat2])
delta_lon = rad_lon2 - rad_lon1
delta_lat = rad_lat2 - rad_lat1
a = math.sin(delta_lat / 2) ** 2 + math.cos(rad_lat1) * math.cos(rad_lat2) * math.sin(delta_lon / 2) ** 2
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
d = EARTH_RADIUS * c
return d
# 计算两个经纬度之间的方向角度,单位:度
def bearing(lon1, lat1, lon2, lat2):
rad_lon1, rad_lat1, rad_lon2, rad_lat2 = map(radians, [lon1, lat1, lon2, lat2])
y = math.sin(rad_lon2 - rad_lon1) * math.cos(rad_lat2)
x = math.cos(rad_lat1) * math.sin(rad_lat2) - math.sin(rad_lat1) * math.cos(rad_lat2) * math.cos(rad_lon2 - rad_lon1)
return (math.atan2(y, x) / math.pi * 180 + 360) % 360
```
其中,`distance` 函数用于计算两个经纬度之间的距离,`bearing` 函数用于计算两个经纬度之间的方向角度。示例代码如下:
```python
# 测试代码
lon1, lat1 = 116.3975, 39.9085 # 北京市中心经纬度
lon2, lat2 = 121.4737, 31.2304 # 上海市中心经纬度
# 计算距离和方向角度
d = distance(lon1, lat1, lon2, lat2)
b = bearing(lon1, lat1, lon2, lat2)
# 输出结果
print("距离:{:.2f} 米".format(d))
print("方向角度:{:.2f} 度".format(b))
```
输出结果为:
```
距离:1050002.42 米
方向角度:128.04 度
```
希望能够帮助到您!