我从GPS接收纬度和经度,格式如下:
纬度:北纬78°55'44.29458“
我需要将此数据转换为:
纬度:78.928888889
我在这里找到了这个代码:link
import re
def dms2dd(degrees, minutes, seconds, direction):
dd = float(degrees) + float(minutes)/60 + float(seconds)/(60*60);
if direction == 'E' or direction == 'N':
dd *= -1
return dd;
def dd2dms(deg):
d = int(deg)
md = abs(deg - d) * 60
m = int(md)
sd = (md - m) * 60
return [d, m, sd]
def parse_dms(dms):
parts = re.split('[^\d\w]+', dms)
lat = dms2dd(parts[0], parts[1], parts[2], parts[3])
return (lat)
dd = parse_dms("78°55'44.33324"N )
print(dd)
它为这种格式工作
dd = parse_dms("78°55'44.33324'N" )
但它对我的数据不起作用。有人能帮我解决这个问题吗?
问题是秒44.29458在
.
处被分割。您可以直接定义拆分字符(而不是在不要拆分的位置):
或者保持正则表达式的原样并合并第2部分和第3部分:
更新:
方法调用
dd = parse_dms("78°55'44.33324"N )
是语法错误。添加结束的"
并转义另一个。或者对字符串定义使用三重引号:上面的函数(dms2dd)不正确。
实际(有错误):
如果方向='E'或方向='N': dd*=-1
修正条件:
如果方向='W'或方向='S': dd*=-1
这是我的一行(好吧,好吧——也许是两行):)
输出
51.60255
相关问题 更多 >
编程相关推荐