Method: When::Coordinates.to_deg_225
- Defined in:
- lib/when_exe/coordinates.rb
.to_deg_225(src, dir) ⇒ Numeric
60進->10進変換(1/225度単位)
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/when_exe/coordinates.rb', line 32 def self.to_deg_225(src, dir) case src when String src = src.gsub(/_+/,'').gsub(/@/, '.') return src.to_r * Spatial::DEGREE if (src =~ /E[-+]/ || src !~ MATCH[dir]) sign = ($1 == dir[1..1]) ? -1 : +1 value = src.gsub(MATCH[dir], '').strip if ((value + "00000") =~ /\A(\d+)\.(\d{2})(\d{2})(\d+)\z/) deg, min, sec, frac = $~[1..4] sec += "." + frac else deg, min, sec = value.split(/[^\d.]+/) end return sign * (deg.to_i * Spatial::DEGREE + (min||0).to_f * (Spatial::DEGREE/60.0) + (sec||0).to_f * (Spatial::DEGREE/3600.0)) when NilClass 0.0 when Numeric src * Spatial::DEGREE else raise TypeError, "Invalid Location Type" end end |