代码之家  ›  专栏  ›  技术社区  ›  Max Gelman

在python中将十进制度数转换为NMEA 0183

  •  0
  • Max Gelman  · 技术社区  · 8 年前

    import math
    
    def decdeg2nmea(dd):
        num = abs(dd)
        d = float(math.floor(num))
        m = num - d
        return '%i%f' % (int(degree), minutes * 60.00)
    

    这不对吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Christoffer Hallqvist    8 年前

    数字需要补零。对于经度,度应该用三个字符表示,即东经4度为004,纬度应该用两个字符表示。分钟应由两个字符加上小数表示。一、 e.4.5°e为00430.0

    abs 你也失去了标志,所以你也需要重新插入。我认为这种方法应该适用于经度:

    import math
    
    def decdeg2nmea(dd):
        num = abs(dd)
        d = float(math.floor(num))
        m = num - d
        sign = '-' if dd < 0 else ''
        return sign+'%03i%02.5f' % (int(d), m * 60.00)