lib/earth/locality/country/data_miner.rb in earth-0.4.6 vs lib/earth/locality/country/data_miner.rb in earth-0.4.7

- old
+ new

@@ -1,10 +1,19 @@ Country.class_eval do data_miner do schema Earth.database_options do string 'iso_3166_code' string 'name' + float 'automobile_urbanity' + float 'automobile_fuel_efficiency' + string 'automobile_fuel_efficiency_units' + float 'automobile_city_speed' + string 'automobile_city_speed_units' + float 'automobile_highway_speed' + string 'automobile_highway_speed_units' + float 'automobile_trip_distance' + string 'automobile_trip_distance_units' float 'flight_route_inefficiency_factor' end import 'the official ISO country list', :url => 'http://www.iso.org/iso/list-en1-semic-3.txt', @@ -19,7 +28,64 @@ import "country-specific flight route inefficiency factors derived from Kettunen et al. (2005)", :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEJoRVBZaGhnUmlhX240VXE3X0F3WkE&gid=0&output=csv' do key 'iso_3166_code' store 'flight_route_inefficiency_factor' end + + import "automobile trip fallbacks", + :url => 'https://spreadsheets.google.com/pub?hl=en&hl=en&key=0AoQJbWqPrREqdDdZRm1tNjY0c2dYNG00bXJ3TXRqUVE&gid=0&output=csv' do + key 'iso_3166_code' + store 'automobile_urbanity' + store 'automobile_city_speed', :units_field_name => 'automobile_city_speed_units' + store 'automobile_highway_speed', :units_field_name => 'automobile_highway_speed_units' + store 'automobile_trip_distance', :units_field_name => 'automobile_trip_distance_units' + end + + # FIXME TODO eventually need to do this for all countries + process "Derive US average automobile fuel efficiency from AutomobileTypeFuelYear" do + # AutomobileTypeFuelYear.run_data_miner! + + scope = AutomobileTypeFuelYear.where(:year => AutomobileTypeFuelYear.maximum(:year)) + fe = scope.sum(:total_travel) / scope.sum(:fuel_consumption) + units = scope.first.total_travel_units + '_per_' + scope.first.fuel_consumption_units.singularize + + connection.execute %{ + UPDATE countries + SET automobile_fuel_efficiency = #{fe}, + automobile_fuel_efficiency_units = '#{units}' + WHERE iso_3166_code = 'US' + } + end + + process "Convert automobile city speed from miles per hour to kilometres per hour" do + conversion_factor = 1.miles.to(:kilometres) + connection.execute %{ + UPDATE countries + SET automobile_city_speed = automobile_city_speed * #{conversion_factor}, + automobile_city_speed_units = 'kilometres_per_hour' + WHERE automobile_city_speed_units = 'miles_per_hour' + } + end + + process "Convert automobile highway speed from miles per hour to kilometres per hour" do + conversion_factor = 1.miles.to(:kilometres) + connection.execute %{ + UPDATE countries + SET automobile_highway_speed = automobile_highway_speed * #{conversion_factor}, + automobile_highway_speed_units = 'kilometres_per_hour' + WHERE automobile_highway_speed_units = 'miles_per_hour' + } + end + + process "Convert automobile trip distance from miles to kilometres" do + conversion_factor = 1.miles.to(:kilometres) + connection.execute %{ + UPDATE countries + SET automobile_trip_distance = automobile_trip_distance * #{conversion_factor}, + automobile_trip_distance_units = 'kilometres' + WHERE automobile_trip_distance_units = 'miles' + } + end + + # FIXME TODO verify this end end