stud

study spacejunk
Log | Files | Refs | LICENSE

deg.py (624B) - Raw


      1 from collections import namedtuple
      2 
      3 
      4 from decimal import Decimal as Dec
      5 
      6 
      7 class Deg(namedtuple('Deg', ['deg', 'mm', 'ss'])):
      8     def __str__(self):
      9         return "%03d-%02d-%.1f" % (self.deg, self.mm, self.ss)
     10 
     11 
     12 def guess(inp):
     13     if isinstance(inp, str) and '-' in inp:
     14         deg, mm, ss = inp.split('-')
     15         ddeg, dmm, dss = Dec(deg), Dec(mm), Dec(ss)
     16         return ddeg + dmm/60 + dss/3600
     17     else:
     18         return Dec(inp)
     19 
     20 
     21 def hms(deg):
     22     assert isinstance(deg, Dec)
     23     pdeg, pmm = divmod(deg, 1)
     24     pmm = pmm * Dec(60)
     25     pmm, pss = divmod(pmm, 1)
     26     pss = pss * Dec(60)
     27     return Deg(pdeg, pmm, pss)