python经纬度加减算法
时间: 2023-07-10 20:19:40 浏览: 369
经纬度相关算法
以下是 Python 中实现经纬度加减算法的示例代码:
```python
import math
# 将度°分′秒″格式的经纬度转换为十进制度数
def dms_to_degrees(d, m, s):
return d + m/60 + s/3600
# 将十进制度数转换为度°分′秒″格式
def degrees_to_dms(degrees):
d = int(degrees)
m = int((degrees - d) * 60)
s = round((degrees - d - m/60) * 3600, 2)
return (d, m, s)
# 计算两点之间的距离(单位:米)
def distance(lat1, lon1, lat2, lon2):
R = 6371000 # 地球半径,单位:米
lat1_rad = math.radians(lat1)
lon1_rad = math.radians(lon1)
lat2_rad = math.radians(lat2)
lon2_rad = math.radians(lon2)
delta_lat = lat2_rad - lat1_rad
delta_lon = lon2_rad - lon1_rad
a = math.sin(delta_lat/2)**2 + math.cos(lat1_rad) * math.cos(lat2_rad) * math.sin(delta_lon/2)**2
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
return R * c
# 计算经度增量(单位:度)
def delta_lon(distance, lat):
R = 6371000 # 地球半径,单位:米
return math.degrees(distance / (R * math.cos(math.radians(lat))))
# 计算纬度增量(单位:度)
def delta_lat(distance):
R = 6371000 # 地球半径,单位:米
return math.degrees(distance / R)
# 经度加减运算
def add_longitude(lon, delta):
return (lon + delta) % 360
# 纬度加减运算
def add_latitude(lat, delta):
return max(-90, min(90, lat + delta))
# 示例:计算北京市和上海市之间的距离,并将上海市的经度增加0.1度
lat1, lon1 = 39.9042, 116.4074 # 北京市的纬度和经度
lat2, lon2 = 31.2304, 121.4737 # 上海市的纬度和经度
# 计算两点之间的距离
dist = distance(lat1, lon1, lat2, lon2)
print(f"两点之间的距离为{dist:.2f}米")
# 计算经度增量
delta_lon = delta_lon(dist, lat2)
# 将上海市的经度增加0.1度
new_lon = add_longitude(lon2, delta_lon + 0.1)
# 输出结果
print(f"原始经度:{lon2:.6f},增量:{delta_lon:.6f},新经度:{new_lon:.6f}")
```
需要注意的是,以上示例代码中计算距离和增量的函数使用的是地球半径为6371000米的假设。如果需要更精确的计算,可以使用更准确的地球半径值。
阅读全文