class NearestTimeZone::City
Attributes
id[RW]
latitude[RW]
longitude[RW]
time_zone_id[RW]
Public Class Methods
all()
click to toggle source
# File lib/nearest_time_zone/city.rb, line 26 def self.all @all ||= load_all end
find(id)
click to toggle source
# File lib/nearest_time_zone/city.rb, line 30 def self.find(id) all[id.to_i] end
kdtree()
click to toggle source
# File lib/nearest_time_zone/city.rb, line 10 def self.kdtree @kdtree ||= build_kdtree end
nearest(latitude, longitude)
click to toggle source
# File lib/nearest_time_zone/city.rb, line 34 def self.nearest(latitude, longitude) all[kdtree.nearest(latitude, longitude)] end
new(id, latitude, longitude, time_zone_id)
click to toggle source
# File lib/nearest_time_zone/city.rb, line 6 def initialize(id, latitude, longitude, time_zone_id) self.id, self.latitude, self.longitude, self.time_zone_id = id, latitude, longitude, time_zone_id end
Private Class Methods
build_kdtree()
click to toggle source
# File lib/nearest_time_zone/city.rb, line 57 def self.build_kdtree begin File.open(File.expand_path("../../../data/kdtree.dump", __FILE__)) { |f| Kdtree.new(f) } rescue Kdtree.new all.collect { |id, city| [city.latitude, city.longitude, city.id] } end end
load_all()
click to toggle source
# File lib/nearest_time_zone/city.rb, line 44 def self.load_all begin Marshal.load(File.read(File.expand_path("../../../data/cities.dump", __FILE__))) rescue cities = CSV.open(File.expand_path("../../../data/cities.txt", __FILE__)) Hash[ cities.collect do |city| [city[0].to_i, NearestTimeZone::City.new(*(0..3).collect { |n| city[n] })] end ] end end
Public Instance Methods
id=(value)
click to toggle source
# File lib/nearest_time_zone/city.rb, line 14 def id=(value) @id = value.to_i end
latitude=(value)
click to toggle source
# File lib/nearest_time_zone/city.rb, line 18 def latitude=(value) @latitude = value.to_f end
longitude=(value)
click to toggle source
# File lib/nearest_time_zone/city.rb, line 22 def longitude=(value) @longitude = value.to_f end
time_zone()
click to toggle source
# File lib/nearest_time_zone/city.rb, line 38 def time_zone TimeZone.find(time_zone_id) end