Class: GpsTrail

Inherits:
Object
  • Object
show all
Defined in:
lib/gpstrail.rb

Instance Method Summary collapse

Instance Method Details

#create_coords_list(journey) ⇒ Object



74
75
76
77
78
79
80
81
# File 'lib/gpstrail.rb', line 74

def create_coords_list(journey)
  coords = ""
  journey.samples.each do |sample|
    point = sample.point
    coords += point.long.to_s + "," + point.lat.to_s + ",0\n"
  end  
  coords
end

#create_placemark_kml(journey) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/gpstrail.rb', line 62

def create_placemark_kml(journey)       
  look_at_lat, look_at_long = journey.find_center
  coords = create_coords_list(journey)
  
  map = { "look_at_long" => look_at_long.to_s, "look_at_lat" => look_at_lat.to_s, 
          "range" => journey.find_distance_of_longest_vector.to_s, 
          "tilt" => 45.to_s, "heading" => 0.to_s, "coordinates" => coords,
          "name" => journey.start_time.to_s}
  
  Template.load_and_substitute('line_template.kml', map)
end

#load_convertersObject



83
84
85
86
87
88
89
# File 'lib/gpstrail.rb', line 83

def load_converters
  Find.find("./converters") do |filename|
    load filename if filename =~ /rb$/
  end
     
  BaseConverter.converters
end

#process(file_to_process, converter) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/gpstrail.rb', line 37

def process(file_to_process, converter)
  start_time = Time.now
  puts "Processing #{file_to_process}\nPlease wait..."
  STDOUT.flush
  xml_doc = Document.new(File.open(file_to_process))     
  journeys = converter.convert(xml_doc)     
  
  placemarks_kml = ""
  journeys.each do |journey|
    placemarks_kml += create_placemark_kml(journey) 
  end
  
  map = {"placemarks" => placemarks_kml, "journey_type" => "Run"}
  kml = Template.load_and_substitute('folder_template.kml', map)
  
  kml_file_name = File.join(ENV['HOMEPATH'], "gpstrail.kml")
  kml_file = File.new(kml_file_name, "w")
  kml_file.puts(kml)
  kml_file.close    
  
  total_time = Time.now - start_time
  puts "Output written to #{kml_file_name}"
  puts "Processed #{journeys.size} journeys in #{total_time}s"
end