基数方向纬度和经度为十进制

时间:2013-08-12 13:57:27

标签: python coordinates latitude-longitude geospatial

我试图从some of NOAA's weather bulletins中提取纬度和经度。问题是纬度和长度使用基数方向来指示纬度或长偏移的方向 - 不是“纯”小数,它表示数字符号的偏移方向(即正数或负数)。

检索坐标:

    >>> import urllib2, re
    >>> url = 'http://weather.noaa.gov/pub/data/raw/we/weca43.pheb.tib.cax.txt'
    >>> request = urllib2.urlopen(url)
    >>> re.search('COORDINATES\s+-\s+(.*)', request.read()).groups()[0]
    '60.6 SOUTH   25.4 WEST'

我可以解析它们,但由于有很多方法可以实现这一点,我想知道在尝试解决方案时应该记住什么。

此外,Google了解此类坐标,但似乎没有解析它的API。

2 个答案:

答案 0 :(得分:2)

如果你发现单词“SOUTH”将纬度“60.6”乘以-1 如果你发现“WEST”这个词乘以经度25.4乘以-1。

这就是全部!

你得到(-60.6,-25.4)这是十进制表示。

答案 1 :(得分:0)

使用完整解决方案:

import urllib2, re
url = 'http://weather.noaa.gov/pub/data/raw/we/weca43.pheb.tib.cax.txt'
request = urllib2.urlopen(url)
coordinates = re.search('COORDINATES\s+-\s+(.*)', request.read()).groups()[0]

p = re.compile(r'\s{2,}')
matches = p.split(coordinates)
matches = [match.split(' ') for match in matches]
for coordinate in matches:
    m = -1 if coordinate[1].upper() in ('SOUTH', 'WEST') else 1
    coordinate[0] = float(coordinate[0]) * m
coordinates = (matches[1][0], matches[0][0])