【问题标题】:Cardinal-direction latitude and longitude to decimal基数方向经纬度转小数
【发布时间】:2013-08-12 13:57:26
【问题描述】:

我试图从some of NOAA's weather bulletins 中提取纬度和经度。问题是 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'

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

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

【问题讨论】:

  • 我无法确定您需要什么帮助。南纬通常是负数,西经也是如此。我想您已经知道了很多,并且您告诉我们您已经可以解析从公告中提取的文本——您认为您还需要记住什么?
  • 感谢采纳,你也是我的点赞;点击向上箭头
  • 我其实不是有意接受,而是想点赞:S

标签: python coordinates latitude-longitude geospatial


【解决方案1】:

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

就是这样!

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

【讨论】:

    【解决方案2】:

    使用的完整解决方案:

    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])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多