Method: When::Coordinates.to_dms

Defined in:
lib/when_exe/coordinates.rb

.to_dms(src, dir, round = 6) ⇒ String

10進->60進変換

Parameters:

  • src (Numeric)

    数値

  • dir (String)

    方向 (‘NS’ または ‘EW’)

  • round (Integer) (defaults to: 6)

    秒の小数点以下最大桁数

Returns:

  • (String)

    60進変換した数値



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/when_exe/coordinates.rb', line 76

def self.to_dms(src, dir, round=6)
  dir      = (src >= 0) ? dir[0..0] : dir[1..1]
  deg, min  =     src.abs.divmod(1)
  min, sec  =    (60*min).divmod(1)
  sec       = (60*10**round*sec).round
  fig = round + 2
  round.times do
    div, mod = sec.divmod(10)
    if mod == 0
      fig -= 1
      sec  = div
    else
      break
    end
  end
  (['N','S'].include?(dir) ? "%02d.%02d%0#{fig}d%s" : "%03d.%02d%0#{fig}d%s") % [deg, min, sec, dir]
end