blob 7b2f9a2b (670B) - Raw
1 from collections import namedtuple 2 3 from decimal import Decimal as Dec 4 5 class Deg(namedtuple('Deg', ['deg', 'mm', 'ss'])): 6 def __str__(self): 7 return "%03d-%02d-%.1f" % (self.deg, self.mm, self.ss) 8 9 def guess(inp): 10 if isinstance(inp, Dec): 11 return inp 12 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 deg + dmm/60 + dss/3600 17 else: 18 return Dec(instr) 19 20 def hms(deg): 21 assert isinstance(deg, Dec) 22 pdeg, pmm = divmod(deg, 1) 23 pmm = pmm * Dec(60) 24 pmm, pss = divmod(pmm, 1) 25 pss = pss * Dec(60) 26 return Deg(pdeg, pmm, pss)