Method: Navaid#initialize
- Defined in:
- lib/navaid.rb
#initialize(arg = nil) ⇒ Navaid
Returns a new instance of Navaid.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/navaid.rb', line 19 def initialize(arg=nil) @vors = Array.new @runways = Array.new @lonSort = Array.new @latSort = Array.new @rwlatSort = Array.new @rwlonSort = Array.new @navaidFile = NAVAID_FILE vorCount = 0 rwCount = 0 checkForNavaidFile(arg) begin Zlib::GzipReader.open(@navaidFile) {|gz| gz.each_line do |l| vordata=[] if l[0,2] == "2 " or l[0,2] == "3 " then vordata = l.split(" ") # is it a NDB? if l[0,2] == "2 " then freq = vordata[4].to_i type = "NDB" else # freq is in MHz * 100 freq = vordata[4].to_i / 100.0 type = vordata[-1] end @vors << Vor.new( vordata[1], vordata[2], freq, vordata[7], vordata[8..-2].join(" "), type, nil) @latSort << [vordata[1].to_f, vorCount] @lonSort << [vordata[2].to_f, vorCount] vorCount += 1 end # check for runways if l[0,2] == "4 " then rwdata = l.split(" ") # freq is in MHz * 100 @runways << Runway.new( rwdata[1], rwdata[2], rwdata[4].to_i / 100.0, rwdata[3].to_i, rwdata[6].to_f, rwdata[8], rwdata[9], nil) @rwlatSort << [rwdata[1].to_f, rwCount] @rwlonSort << [rwdata[2].to_f, rwCount] rwCount += 1 end end } @runways.sort! do |a,b| a.airportName <=> b.airportName end Zlib::GzipReader.open(@navaidFile) {|gz| mmdata = nil range = nil gz.each_line do |l| # check for MiddleMarker used for placement of cone peak if l[0,2] == "8 " then mmdata = l.split(" ") range = @runways.bsearch_range {|rw| rw.airportName <=> mmdata[8]} rwMod = @runways[range].find do |rw| rw.runwayName == mmdata[9] end # exchange lat and lon with position of corresponding MiddleMarker if !rwMod.nil? then rwMod.lat = mmdata[1] rwMod.lon = mmdata[2] end end end } @latSort.sort! do |a,b| a[0] <=> b[0] end @lonSort.sort! do |a,b| a[0] <=> b[0] end @rwlatSort.sort! do |a,b| a[0] <=> b[0] end @rwlonSort.sort! do |a,b| a[0] <=> b[0] end rescue Errno::ENOENT puts "Warning. Could not find data file for VORs." end # ap @vors end |