0

我试图从NOAA 的一些天气公告中提取纬度和经度。问题是 lat 和 longs 使用基数方向来指示 lat 或 long 偏移的方向——而不是“纯”十进制,它通过数字的符号(即正或负)指示偏移的方向。

检索坐标:

    >>> 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'

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

此外,谷歌理解这样的坐标,但似乎没有 API 来解析它。

4

2 回答 2

2

如果你找到“SOUTH”这个词,将纬度“60.6”乘以-1。
如果你找到“WEST”这个词,将经度 25.4 乘以 -1。

这是所有的了!

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

于 2013-08-12T18:13:13.970 回答
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])
于 2013-08-14T13:59:36.223 回答