class ExifGpsInjector::Kml
Attributes
list[R]
max_distance_time[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/exif_gps_injector/kml.rb, line 7 def initialize(options = {}) @dir = options.delete(:dir) @max_distance_time = options.delete(:max_distance_time) || 2.minutes @list = {} Dir.glob("#{@dir}/*.kml").each { |kml| @list.merge!(extract_list_from_kml(File.read(kml))) } end
Public Instance Methods
locate_at(date)
click to toggle source
# File lib/exif_gps_injector/kml.rb, line 14 def locate_at(date) date = DateTime.parse(date).utc @list.select { |key, _value| key <= date && key >= date - @max_distance_time }.to_a.last.try(:last) || @list.select { |key, _value| key >= date && key <= date + @max_distance_time }.to_a.first.try(:last) end
Private Instance Methods
extract_list_from_kml(kml)
click to toggle source
# File lib/exif_gps_injector/kml.rb, line 22 def extract_list_from_kml(kml) Nokogiri::XML(kml).search('when') .map { |e| { (DateTime.parse(e.text).utc) => e.next_element.text } } .reduce({}, :merge) .sort.to_h end