通过python原生库 将 : (E116°15′36.00″,N40°4′48.00″)转换为10进制
时间: 2024-03-21 07:44:03 浏览: 10
可以使用Python中的re模块和math库来实现将经纬度坐标从度分秒表示法转换为十进制表示法。具体实现如下:
```python
import re
import math
# 定义正则表达式模式,用于匹配经度和纬度的度分秒表示法
pattern = re.compile(r'^\((E|W)(\d+)°(\d+)′([\d.]+)″,(N|S)(\d+)°(\d+)′([\d.]+)″\)$')
# 定义转换函数
def dms_to_decimal(dms_str):
match = pattern.match(dms_str)
if match:
# 获取匹配结果中的各个分组
lon_dir, lon_deg, lon_min, lon_sec, lat_dir, lat_deg, lat_min, lat_sec = match.groups()
# 将度分秒转换为十进制表示法
lon_decimal = float(lon_deg) + float(lon_min) / 60 + float(lon_sec) / 3600
if lon_dir == 'W':
lon_decimal = -lon_decimal
lat_decimal = float(lat_deg) + float(lat_min) / 60 + float(lat_sec) / 3600
if lat_dir == 'S':
lat_decimal = -lat_decimal
return (lon_decimal, lat_decimal)
else:
return None
# 调用转换函数,将给定的经纬度坐标从度分秒表示法转换为十进制表示法
dms_coord = '(E116°15′36.00″,N40°4′48.00″)'
decimal_coord = dms_to_decimal(dms_coord)
print(decimal_coord)
```
运行上述代码,输出结果为:
```
(116.26, 40.08)
```
其中,返回的结果是一个元组,包含转换后的经度和纬度值。由于计算精度问题,经度和纬度的小数部分可能存在一些舍入误差。