0

NOAA の気象情報から緯度と経度を抽出しようとしています。問題は、緯度と経度が基数の方向を使用して、緯度または経度のオフセットがどちらの方向にあるかを示すことです。数値の符号 (つまり、正または負) によってオフセットの方向を示す「純粋な」10 進数ではありません。

座標の取得:

    >>> 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 はないようです。

4

2 に答える 2

2

「SOUTH」という単語が見つかった場合は、その緯度「60.6」に -1 を掛けます。
「WEST」という単語が見つかった場合は、その経度 25.4 に -1 を掛けます。

これですべてです!

10 進表現である (-60.6, -25.4) が得られます。

于 2013-08-12T18:13:13.970 に答える
0

Full solution used:

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 に答える