通过python原生库 将'(E113°58′12.00″,N22°35′56.40″)' 转换为10进制
时间: 2023-10-29 16:30:51 浏览: 107
可以使用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 = '(E113°58′12.00″,N22°35′56.40″)'
decimal_coord = dms_to_decimal(dms_coord)
print(decimal_coord)
```
运行上述代码,输出结果为:
```
(113.97000000000001, 22.598999999999997)
```
其中,返回的结果是一个元组,包含转换后的经度和纬度值。由于计算精度问题,经度和纬度的小数部分可能存在一些舍入误差。
阅读全文