earth 0.7.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- data/certification_changelog.markdown +21 -0
- data/lib/earth/air.rb +0 -2
- data/lib/earth/air/aircraft.rb +77 -27
- data/lib/earth/air/aircraft/data_miner.rb +12 -19
- data/lib/earth/air/aircraft_instance.rb +2 -0
- data/lib/earth/air/aircraft_instance_seat_class.rb +1 -0
- data/lib/earth/air/airport/data_miner.rb +1 -1
- data/lib/earth/air/data_miner.rb +0 -2
- data/lib/earth/air/flight_distance_class.rb +2 -3
- data/lib/earth/air/flight_distance_class/data_miner.rb +0 -13
- data/lib/earth/air/flight_distance_class_seat_class.rb +3 -2
- data/lib/earth/air/flight_seat_class.rb +0 -6
- data/lib/earth/air/flight_seat_class/data_miner.rb +0 -7
- data/lib/earth/air/flight_segment.rb +47 -53
- data/lib/earth/air/flight_segment/data_miner.rb +2 -2
- data/lib/earth/automobile.rb +4 -3
- data/lib/earth/automobile/automobile_fuel.rb +56 -119
- data/lib/earth/automobile/automobile_fuel/data_miner.rb +17 -4
- data/lib/earth/automobile/automobile_make.rb +1 -16
- data/lib/earth/automobile/automobile_make/data_miner.rb +25 -25
- data/lib/earth/automobile/automobile_make_model.rb +0 -26
- data/lib/earth/automobile/automobile_make_model/data_miner.rb +12 -13
- data/lib/earth/automobile/automobile_make_model_year.rb +6 -37
- data/lib/earth/automobile/automobile_make_model_year/data_miner.rb +34 -18
- data/lib/earth/automobile/automobile_make_model_year_variant.rb +27 -49
- data/lib/earth/automobile/automobile_make_model_year_variant/data_miner.rb +111 -140
- data/lib/earth/automobile/automobile_make_year.rb +0 -12
- data/lib/earth/automobile/automobile_make_year/data_miner.rb +22 -23
- data/lib/earth/automobile/automobile_make_year_fleet.rb +11 -0
- data/lib/earth/automobile/{automobile_make_fleet_year → automobile_make_year_fleet}/data_miner.rb +1 -2
- data/lib/earth/automobile/automobile_model.rb +5 -0
- data/lib/earth/automobile/automobile_model/data_miner.rb +19 -0
- data/lib/earth/automobile/automobile_size_class.rb +1 -0
- data/lib/earth/automobile/automobile_size_class/data_miner.rb +30 -4
- data/lib/earth/automobile/automobile_type_fuel_year.rb +1 -1
- data/lib/earth/automobile/automobile_type_fuel_year/data_miner.rb +30 -19
- data/lib/earth/automobile/automobile_type_fuel_year_age.rb +0 -3
- data/lib/earth/automobile/automobile_type_fuel_year_age/data_miner.rb +13 -15
- data/lib/earth/automobile/automobile_type_fuel_year_control.rb +0 -4
- data/lib/earth/automobile/automobile_type_fuel_year_control/data_miner.rb +0 -8
- data/lib/earth/automobile/automobile_type_year.rb +2 -1
- data/lib/earth/automobile/automobile_type_year/data_miner.rb +12 -10
- data/lib/earth/automobile/automobile_year.rb +5 -0
- data/lib/earth/automobile/automobile_year/data_miner.rb +15 -0
- data/lib/earth/automobile/data_miner.rb +5 -3
- data/lib/earth/automobile/dependencies.txt +45 -0
- data/lib/earth/bus/bus_class.rb +1 -87
- data/lib/earth/bus/bus_class/data_miner.rb +0 -1
- data/lib/earth/bus/bus_fuel/data_miner.rb +12 -19
- data/lib/earth/bus/bus_fuel_control/data_miner.rb +8 -12
- data/lib/earth/conversions_ext.rb +1 -0
- data/lib/earth/fuel/fuel/data_miner.rb +28 -38
- data/lib/earth/fuel/fuel_year/data_miner.rb +36 -47
- data/lib/earth/hospitality/lodging_class/data_miner.rb +12 -6
- data/lib/earth/locality.rb +1 -0
- data/lib/earth/locality/country.rb +1 -1
- data/lib/earth/locality/country/data_miner.rb +36 -28
- data/lib/earth/locality/data_miner.rb +1 -0
- data/lib/earth/locality/egrid_subregion/data_miner.rb +19 -14
- data/lib/earth/locality/urbanity/data_miner.rb +1 -3
- data/lib/earth/locality/zip_code/data_miner.rb +1 -1
- data/lib/earth/rail/national_transit_database_record/data_miner.rb +10 -14
- data/lib/earth/rail/rail_fuel.rb +2 -6
- data/lib/earth/residence/air_conditioner_use/data_miner.rb +1 -3
- data/lib/earth/residence/clothes_machine_use/data_miner.rb +1 -3
- data/lib/earth/residence/dishwasher_use/data_miner.rb +1 -3
- data/lib/earth/residence/residence_class/data_miner.rb +1 -3
- data/lib/earth/residence/residential_energy_consumption_survey_response/data_miner.rb +3 -1
- data/lib/earth/utils.rb +15 -5
- data/lib/earth/version.rb +1 -1
- data/spec/earth_spec.rb +4 -4
- metadata +9 -11
- data/features/automobile_type_fuel_age.feature +0 -55
- data/lib/earth/air/aircraft_class.rb +0 -59
- data/lib/earth/air/aircraft_class/data_miner.rb +0 -14
- data/lib/earth/air/aircraft_fuel_use_equation.rb +0 -33
- data/lib/earth/air/aircraft_fuel_use_equation/data_miner.rb +0 -13
- data/lib/earth/automobile/automobile_make_fleet_year.rb +0 -46
- data/lib/earth/automobile/automobile_type_fuel_age.rb +0 -65
- data/lib/earth/automobile/automobile_type_fuel_age/data_miner.rb +0 -149
@@ -1,55 +0,0 @@
|
|
1
|
-
# # DEPRECATED - use AutomobileTypeFuelYearAge
|
2
|
-
# Feature: Data import for AutomobileTypeFuelAge
|
3
|
-
# As a data user
|
4
|
-
# I want to import AutomobileTypeFuelAge data
|
5
|
-
# So that I can perform type fuel age-based calculations
|
6
|
-
#
|
7
|
-
# Scenario: Successfully verifying that type name and fuel common name are not missing
|
8
|
-
# Given a "AutomobileTypeFuelAge" data import fetches results listed in "automobile_type_fuel_age_good"
|
9
|
-
# When a data import verifies "Type name and fuel common name should never be missing"
|
10
|
-
# Then the verification should be successful
|
11
|
-
#
|
12
|
-
# Scenario: Successfully verifying that age is from zero to thirty
|
13
|
-
# Given a "AutomobileTypeFuelAge" data import fetches results listed in "automobile_type_fuel_age_good"
|
14
|
-
# When a data import verifies "Age should be from zero to thirty"
|
15
|
-
# Then the verification should be successful
|
16
|
-
#
|
17
|
-
# Scenario: Successfully verifying that age percent and total travel percent are from zero to one
|
18
|
-
# Given a "AutomobileTypeFuelAge" data import fetches results listed in "automobile_type_fuel_age_good"
|
19
|
-
# When a data import verifies "Age percent and total travel percent should be from zero to one"
|
20
|
-
# Then the verification should be successful
|
21
|
-
#
|
22
|
-
# Scenario: Successfully verifying that annual distance and vehicles are greater than zero
|
23
|
-
# Given a "AutomobileTypeFuelAge" data import fetches results listed in "automobile_type_fuel_age_good"
|
24
|
-
# When a data import verifies "Annual distance and vehicles should be greater than zero"
|
25
|
-
# Then the verification should be successful
|
26
|
-
#
|
27
|
-
# Scenario: Successfully verifying that annual distance units are kilometres
|
28
|
-
# Given a "AutomobileTypeFuelAge" data import fetches results listed in "automobile_type_fuel_age_good"
|
29
|
-
# When a data import verifies "Annual distance units should be kilometres"
|
30
|
-
# Then the verification should be successful
|
31
|
-
#
|
32
|
-
# Scenario: Failing to verify that type name and fuel common name are not missing
|
33
|
-
# Given a "AutomobileTypeFuelAge" data import fetches results listed in "automobile_type_fuel_age_bad"
|
34
|
-
# When a data import verifies "Type name and fuel common name should never be missing"
|
35
|
-
# Then the verification should not be successful
|
36
|
-
#
|
37
|
-
# Scenario: Failing to verify that age is from zero to thirty
|
38
|
-
# Given a "AutomobileTypeFuelAge" data import fetches results listed in "automobile_type_fuel_age_bad"
|
39
|
-
# When a data import verifies "Age should be from zero to thirty"
|
40
|
-
# Then the verification should not be successful
|
41
|
-
#
|
42
|
-
# Scenario: Failing to verify that age percent and total travel percent are from zero to one
|
43
|
-
# Given a "AutomobileTypeFuelAge" data import fetches results listed in "automobile_type_fuel_age_bad"
|
44
|
-
# When a data import verifies "Age percent and total travel percent should be from zero to one"
|
45
|
-
# Then the verification should not be successful
|
46
|
-
#
|
47
|
-
# Scenario: Failing to verify that annual distance and vehicles are greater than zero
|
48
|
-
# Given a "AutomobileTypeFuelAge" data import fetches results listed in "automobile_type_fuel_age_bad"
|
49
|
-
# When a data import verifies "Annual distance and vehicles should be greater than zero"
|
50
|
-
# Then the verification should not be successful
|
51
|
-
#
|
52
|
-
# Scenario: Failing to verify that annual distance units are kilometres
|
53
|
-
# Given a "AutomobileTypeFuelAge" data import fetches results listed in "automobile_type_fuel_age_bad"
|
54
|
-
# When a data import verifies "Annual distance units should be kilometres"
|
55
|
-
# Then the verification should not be successful
|
@@ -1,59 +0,0 @@
|
|
1
|
-
class AircraftClass < ActiveRecord::Base
|
2
|
-
set_primary_key :code
|
3
|
-
|
4
|
-
has_many :aircraft, :foreign_key => 'class_code', :primary_key => 'code'
|
5
|
-
|
6
|
-
col :code
|
7
|
-
col :m3, :type => :float
|
8
|
-
col :m3_units
|
9
|
-
col :m2, :type => :float
|
10
|
-
col :m2_units
|
11
|
-
col :m1, :type => :float
|
12
|
-
col :m1_units
|
13
|
-
col :b, :type => :float
|
14
|
-
col :b_units
|
15
|
-
col :seats, :type => :float
|
16
|
-
|
17
|
-
def fuel_use_coefficients
|
18
|
-
[m3, m2, m1, b]
|
19
|
-
end
|
20
|
-
|
21
|
-
def valid_fuel_use_equation?
|
22
|
-
fuel_use_coefficients.all?(&:present?) and fuel_use_coefficients.any?(&:nonzero?)
|
23
|
-
end
|
24
|
-
|
25
|
-
class << self
|
26
|
-
def update_averages!
|
27
|
-
Aircraft.run_data_miner!
|
28
|
-
AircraftFuelUseEquation.run_data_miner!
|
29
|
-
find_each do |aircraft_class|
|
30
|
-
cumulative_passengers = 0
|
31
|
-
aircraft_class.m3 = 0.0
|
32
|
-
aircraft_class.m2 = 0.0
|
33
|
-
aircraft_class.m1 = 0.0
|
34
|
-
aircraft_class.b = 0.0
|
35
|
-
|
36
|
-
aircraft_class.aircraft.where('passengers > 0 AND fuel_use_code IS NOT NULL').each do |a|
|
37
|
-
cumulative_passengers += a.passengers
|
38
|
-
aircraft_class.m3 += a.fuel_use_equation.m3 * a.passengers
|
39
|
-
aircraft_class.m2 += a.fuel_use_equation.m2 * a.passengers
|
40
|
-
aircraft_class.m1 += a.fuel_use_equation.m1 * a.passengers
|
41
|
-
aircraft_class.b += a.fuel_use_equation.b * a.passengers
|
42
|
-
end
|
43
|
-
|
44
|
-
if cumulative_passengers > 0
|
45
|
-
aircraft_class.m3 /= cumulative_passengers
|
46
|
-
aircraft_class.m2 /= cumulative_passengers
|
47
|
-
aircraft_class.m1 /= cumulative_passengers
|
48
|
-
aircraft_class.b /= cumulative_passengers
|
49
|
-
end
|
50
|
-
|
51
|
-
aircraft_class.seats = aircraft_class.aircraft.weighted_average(:seats, :weighted_by => :passengers)
|
52
|
-
|
53
|
-
aircraft_class.save!
|
54
|
-
end
|
55
|
-
|
56
|
-
update_all :m3_units => 'kilograms_per_cubic_nautical_mile', :m2_units => 'kilograms_per_square_nautical_mile', :m1_units => 'kilograms_per_nautical_mile', :b_units => 'kilograms'
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
AircraftClass.class_eval do
|
2
|
-
data_miner do
|
3
|
-
process "Derive aircraft classes from Aircraft" do
|
4
|
-
Aircraft.run_data_miner!
|
5
|
-
connection.select_values("SELECT DISTINCT class_code FROM aircraft WHERE class_code IS NOT NULL").each do |class_code|
|
6
|
-
AircraftClass.find_or_create_by_code(class_code)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
process :update_averages!
|
11
|
-
|
12
|
-
# FIXME TODO verify this
|
13
|
-
end
|
14
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
class AircraftFuelUseEquation < ActiveRecord::Base
|
2
|
-
set_primary_key :code
|
3
|
-
|
4
|
-
has_many :aircraft, :foreign_key => 'fuel_use_code', :primary_key => 'code'
|
5
|
-
|
6
|
-
falls_back_on :m3 => lambda { weighted_average(:m3, :weighted_by => [:aircraft, :passengers]) }, # 9.73423082858437e-08 r7110: 8.6540464368905e-8 r6972: 8.37e-8
|
7
|
-
:m2 => lambda { weighted_average(:m2, :weighted_by => [:aircraft, :passengers]) }, # -0.000134350543484608 r7110: -0.00015337661447817 r6972: -4.09e-5
|
8
|
-
:m1 => lambda { weighted_average(:m1, :weighted_by => [:aircraft, :passengers]) }, # 6.7728101555467 r7110: 4.7781966869412 r6972: 7.85
|
9
|
-
:b => lambda { weighted_average(:b, :weighted_by => [:aircraft, :passengers]) }, # 1527.81790006167 r7110: 1065.3476555284 r6972: 1.72e3
|
10
|
-
:m3_units => 'kilograms_per_cubic_nautical_mile',
|
11
|
-
:m2_units => 'kilograms_per_square_nautical_mile',
|
12
|
-
:m1_units => 'kilograms_per_nautical_mile',
|
13
|
-
:b_units => 'kilograms'
|
14
|
-
|
15
|
-
def fuel_use_coefficients
|
16
|
-
[m3, m2, m1, b]
|
17
|
-
end
|
18
|
-
|
19
|
-
def valid_fuel_use_equation?
|
20
|
-
fuel_use_coefficients.all?(&:present?) and fuel_use_coefficients.any?(&:nonzero?)
|
21
|
-
end
|
22
|
-
|
23
|
-
col :code
|
24
|
-
col :aircraft_description
|
25
|
-
col :m3, :type => :float
|
26
|
-
col :m3_units
|
27
|
-
col :m2, :type => :float
|
28
|
-
col :m2_units
|
29
|
-
col :m1, :type => :float
|
30
|
-
col :m1_units
|
31
|
-
col :b, :type => :float
|
32
|
-
col :b_units
|
33
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
AircraftFuelUseEquation.class_eval do
|
2
|
-
data_miner do
|
3
|
-
import "aircraft fuel use equations derived from EMEP/EEA and ICAO",
|
4
|
-
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdDltUVZVekVobEJPYlpFNUpWNkwyYXc&output=csv' do
|
5
|
-
key 'code'
|
6
|
-
store 'aircraft_description'
|
7
|
-
store 'm3', :units_field_name => 'm3_units'
|
8
|
-
store 'm2', :units_field_name => 'm2_units'
|
9
|
-
store 'm1', :units_field_name => 'm1_units'
|
10
|
-
store 'b', :units_field_name => 'b_units'
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
class AutomobileMakeFleetYear < ActiveRecord::Base
|
2
|
-
set_primary_key :name
|
3
|
-
|
4
|
-
belongs_to :make, :class_name => 'AutomobileMake', :foreign_key => 'make_name'
|
5
|
-
belongs_to :make_year, :class_name => 'AutomobileMakeYear', :foreign_key => 'make_year_name'
|
6
|
-
|
7
|
-
col :name
|
8
|
-
col :make_year_name
|
9
|
-
col :make_name
|
10
|
-
col :fleet
|
11
|
-
col :year, :type => :integer
|
12
|
-
col :fuel_efficiency, :type => :float
|
13
|
-
col :fuel_efficiency_units
|
14
|
-
col :volume, :type => :integer
|
15
|
-
|
16
|
-
# TODO convert to table_warnings
|
17
|
-
# verify "Year should be from 1978 to 2011" do
|
18
|
-
# connection.select_values("SELECT DISTINCT year FROM automobile_make_fleet_years").each do |year|
|
19
|
-
# year = year.to_i
|
20
|
-
# unless year > 1977 and year < 2012
|
21
|
-
# raise "Invalid year in automobile_make_fleet_years: #{year} is not from 1978 to 2011"
|
22
|
-
# end
|
23
|
-
# end
|
24
|
-
# end
|
25
|
-
#
|
26
|
-
# verify "Fuel efficiency and volume should be greater than zero" do
|
27
|
-
# [:fuel_efficiency, :volume].each do |field|
|
28
|
-
# if AutomobileMakeFleetYear.where(field => nil).any?
|
29
|
-
# raise "Invalid #{field} in automobile_make_fleet_years: nil is not > 0"
|
30
|
-
# else
|
31
|
-
# min = AutomobileMakeFleetYear.minimum(field)
|
32
|
-
# unless min > 0
|
33
|
-
# raise "Invalid #{field} in automobile_make_fleet_years: #{min} is not > 0"
|
34
|
-
# end
|
35
|
-
# end
|
36
|
-
# end
|
37
|
-
# end
|
38
|
-
#
|
39
|
-
# verify "Fuel efficiency units should be kilometres per litre" do
|
40
|
-
# connection.select_values("SELECT DISTINCT fuel_efficiency_units FROM automobile_make_fleet_years").each do |units|
|
41
|
-
# unless units == "kilometres_per_litre"
|
42
|
-
# raise "Invalid fuel efficiency units in automobile_make_fleet_years: #{units} is not 'kilometres_per_litre'"
|
43
|
-
# end
|
44
|
-
# end
|
45
|
-
# end
|
46
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
# DEPRECATED - use AutomobileTypeFuelYearAge
|
2
|
-
class AutomobileTypeFuelAge < ActiveRecord::Base
|
3
|
-
set_primary_key :name
|
4
|
-
|
5
|
-
col :name
|
6
|
-
col :type_name
|
7
|
-
col :fuel_common_name
|
8
|
-
col :age, :type => :integer
|
9
|
-
col :age_percent, :type => :float
|
10
|
-
col :total_travel_percent, :type => :float
|
11
|
-
col :annual_distance, :type => :float
|
12
|
-
col :annual_distance_units
|
13
|
-
col :vehicles, :type => :integer
|
14
|
-
|
15
|
-
# verify "Type name and fuel common name should never be missing" do
|
16
|
-
# AutomobileTypeFuelAge.all.each do |record|
|
17
|
-
# %w{ type_name fuel_common_name }.each do |attribute|
|
18
|
-
# value = record.send(:"#{attribute}")
|
19
|
-
# unless value.present?
|
20
|
-
# raise "Missing #{attribute} for AutomobileTypeFuelAge '#{record.name}'"
|
21
|
-
# end
|
22
|
-
# end
|
23
|
-
# end
|
24
|
-
# end
|
25
|
-
#
|
26
|
-
# verify "Age should be from zero to thirty" do
|
27
|
-
# AutomobileTypeFuelAge.all.each do |record|
|
28
|
-
# value = record.send(:age)
|
29
|
-
# unless value >= 0 and value < 31
|
30
|
-
# raise "Invalid age for AutomobileTypeFuelAge '#{record.name}': #{value} (should be from 0 to 30)"
|
31
|
-
# end
|
32
|
-
# end
|
33
|
-
# end
|
34
|
-
#
|
35
|
-
# verify "Age percent and total travel percent should be from zero to one" do
|
36
|
-
# AutomobileTypeFuelAge.all.each do |record|
|
37
|
-
# %w{ age_percent total_travel_percent }.each do |attribute|
|
38
|
-
# percent = record.send(:"#{attribute}")
|
39
|
-
# unless percent > 0 and percent < 1
|
40
|
-
# raise "Invalid #{attribute} for AutomobileTypeFuelAge '#{record.name}': #{percent} (should be from 0 to 1)"
|
41
|
-
# end
|
42
|
-
# end
|
43
|
-
# end
|
44
|
-
# end
|
45
|
-
#
|
46
|
-
# verify "Annual distance and vehicles should be greater than zero" do
|
47
|
-
# AutomobileTypeFuelAge.all.each do |record|
|
48
|
-
# %w{ annual_distance vehicles }.each do |attribute|
|
49
|
-
# value = record.send(:"#{attribute}")
|
50
|
-
# unless value > 0
|
51
|
-
# raise "Invalid #{attribute} for AutomobileTypeFuelAge '#{record.name}': #{value} (should be > 0)"
|
52
|
-
# end
|
53
|
-
# end
|
54
|
-
# end
|
55
|
-
# end
|
56
|
-
#
|
57
|
-
# verify "Annual distance units should be kilometres" do
|
58
|
-
# AutomobileTypeFuelAge.all.each do |record|
|
59
|
-
# units = record.send(:annual_distance_units)
|
60
|
-
# unless units == "kilometres"
|
61
|
-
# raise "Invalid annual distance units for AutomobileTypeFuelAge '#{record.name}': #{units} (should be kilometres)"
|
62
|
-
# end
|
63
|
-
# end
|
64
|
-
# end
|
65
|
-
end
|
@@ -1,149 +0,0 @@
|
|
1
|
-
# DEPRECATED - use AutomobileTypeFuelYearAge
|
2
|
-
AutomobileTypeFuelAge.class_eval do
|
3
|
-
data_miner do
|
4
|
-
import "age distribution of gasoline passenger cars from the 2010 EPA GHG Inventory",
|
5
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
6
|
-
:filename => 'Annex Tables/Annex 3/Table A-91.csv',
|
7
|
-
:skip => 1,
|
8
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
9
|
-
key 'name', :synthesize => lambda { |row| "Passenger cars gasoline age #{row['Vehicle Age']}" }
|
10
|
-
store 'type_name', :static => 'Passenger cars'
|
11
|
-
store 'fuel_common_name', :static => 'gasoline'
|
12
|
-
store 'age', :field_name => 'Vehicle Age'
|
13
|
-
store 'age_percent', :synthesize => lambda { |row| row['LDGV'].to_f / 100 }
|
14
|
-
end
|
15
|
-
|
16
|
-
import "age distribution of gasoline light-duty trucks from the 2010 EPA GHG Inventory",
|
17
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
18
|
-
:filename => 'Annex Tables/Annex 3/Table A-91.csv',
|
19
|
-
:skip => 1,
|
20
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
21
|
-
key 'name', :synthesize => lambda { |row| "Light-duty trucks gasoline age #{row['Vehicle Age']}" }
|
22
|
-
store 'type_name', :static => 'Light-duty trucks'
|
23
|
-
store 'fuel_common_name', :static => 'gasoline'
|
24
|
-
store 'age', :field_name => 'Vehicle Age'
|
25
|
-
store 'age_percent', :synthesize => lambda { |row| row['LDGT'].to_f / 100 }
|
26
|
-
end
|
27
|
-
|
28
|
-
import "age distribution of diesel passenger cars from the 2010 EPA GHG Inventory",
|
29
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
30
|
-
:filename => 'Annex Tables/Annex 3/Table A-91.csv',
|
31
|
-
:skip => 1,
|
32
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
33
|
-
key 'name', :synthesize => lambda { |row| "Passenger cars diesel age #{row['Vehicle Age']}" }
|
34
|
-
store 'type_name', :static => 'Passenger cars'
|
35
|
-
store 'fuel_common_name', :static => 'diesel'
|
36
|
-
store 'age', :field_name => 'Vehicle Age'
|
37
|
-
store 'age_percent', :synthesize => lambda { |row| row['LDDV'].to_f / 100 }
|
38
|
-
end
|
39
|
-
|
40
|
-
import "age distribution of diesel light-duty trucks from the 2010 EPA GHG Inventory",
|
41
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
42
|
-
:filename => 'Annex Tables/Annex 3/Table A-91.csv',
|
43
|
-
:skip => 1,
|
44
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
45
|
-
key 'name', :synthesize => lambda { |row| "Light-duty trucks diesel age #{row['Vehicle Age']}" }
|
46
|
-
store 'type_name', :static => 'Light-duty trucks'
|
47
|
-
store 'fuel_common_name', :static => 'diesel'
|
48
|
-
store 'age', :field_name => 'Vehicle Age'
|
49
|
-
store 'age_percent', :synthesize => lambda { |row| row['LDDT'].to_f / 100 }
|
50
|
-
end
|
51
|
-
|
52
|
-
import "total travel distribution of gasoline passenger cars from the 2010 EPA GHG Inventory",
|
53
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
54
|
-
:filename => 'Annex Tables/Annex 3/Table A-93.csv',
|
55
|
-
:skip => 1,
|
56
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
57
|
-
key 'name', :synthesize => lambda { |row| "Passenger cars gasoline age #{row['Vehicle Age']}" }
|
58
|
-
store 'total_travel_percent', :synthesize => lambda { |row| row['LDGV'].to_f / 100 }
|
59
|
-
end
|
60
|
-
|
61
|
-
import "total travel distribution of gasoline light-duty trucks from the 2010 EPA GHG Inventory",
|
62
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
63
|
-
:filename => 'Annex Tables/Annex 3/Table A-93.csv',
|
64
|
-
:skip => 1,
|
65
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
66
|
-
key 'name', :synthesize => lambda { |row| "Light-duty trucks gasoline age #{row['Vehicle Age']}" }
|
67
|
-
store 'total_travel_percent', :synthesize => lambda { |row| row['LDGT'].to_f / 100 }
|
68
|
-
end
|
69
|
-
|
70
|
-
import "total travel distribution of diesel passenger cars from the 2010 EPA GHG Inventory",
|
71
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
72
|
-
:filename => 'Annex Tables/Annex 3/Table A-93.csv',
|
73
|
-
:skip => 1,
|
74
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
75
|
-
key 'name', :synthesize => lambda { |row| "Passenger cars diesel age #{row['Vehicle Age']}" }
|
76
|
-
store 'total_travel_percent', :synthesize => lambda { |row| row['LDDV'].to_f / 100 }
|
77
|
-
end
|
78
|
-
|
79
|
-
import "total travel distribution of diesel light-duty trucks from the 2010 EPA GHG Inventory",
|
80
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
81
|
-
:filename => 'Annex Tables/Annex 3/Table A-93.csv',
|
82
|
-
:skip => 1,
|
83
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
84
|
-
key 'name', :synthesize => lambda { |row| "Light-duty trucks diesel age #{row['Vehicle Age']}" }
|
85
|
-
store 'total_travel_percent', :synthesize => lambda { |row| row['LDDT'].to_f / 100 }
|
86
|
-
end
|
87
|
-
|
88
|
-
import "average annual distance for gasoline passenger cars from the 2010 EPA GHG Inventory",
|
89
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
90
|
-
:filename => 'Annex Tables/Annex 3/Table A-92.csv',
|
91
|
-
:skip => 1,
|
92
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
93
|
-
key 'name', :synthesize => lambda { |row| "Passenger cars gasoline age #{row['Vehicle Age']}" }
|
94
|
-
store 'annual_distance', :synthesize => lambda { |row| row['LDGV'].to_s.sub(',', '') }, :units => :miles
|
95
|
-
end
|
96
|
-
|
97
|
-
import "average annual distance for gasoline light-duty trucks from the 2010 EPA GHG Inventory",
|
98
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
99
|
-
:filename => 'Annex Tables/Annex 3/Table A-92.csv',
|
100
|
-
:skip => 1,
|
101
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
102
|
-
key 'name', :synthesize => lambda { |row| "Light-duty trucks gasoline age #{row['Vehicle Age']}" }
|
103
|
-
store 'annual_distance', :synthesize => lambda { |row| row['LDGT'].to_s.sub(',', '') }, :units => :miles
|
104
|
-
end
|
105
|
-
|
106
|
-
import "average annual distance for diesel passenger cars from the 2010 EPA GHG Inventory",
|
107
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
108
|
-
:filename => 'Annex Tables/Annex 3/Table A-92.csv',
|
109
|
-
:skip => 1,
|
110
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
111
|
-
key 'name', :synthesize => lambda { |row| "Passenger cars diesel age #{row['Vehicle Age']}" }
|
112
|
-
store 'annual_distance', :synthesize => lambda { |row| row['LDDV'].to_s.sub(',', '') }, :units => :miles
|
113
|
-
end
|
114
|
-
|
115
|
-
import "average annual distance for diesel light-duty trucks from the 2010 EPA GHG Inventory",
|
116
|
-
:url => 'http://www.epa.gov/climatechange/emissions/downloads10/2010-Inventory-Annex-Tables.zip',
|
117
|
-
:filename => 'Annex Tables/Annex 3/Table A-92.csv',
|
118
|
-
:skip => 1,
|
119
|
-
:select => lambda { |row| row['Vehicle Age'].to_i.to_s == row['Vehicle Age'] } do
|
120
|
-
key 'name', :synthesize => lambda { |row| "Light-duty trucks diesel age #{row['Vehicle Age']}" }
|
121
|
-
store 'annual_distance', :synthesize => lambda { |row| row['LDDT'].to_s.sub(',', '') }, :units => :miles
|
122
|
-
end
|
123
|
-
|
124
|
-
process "Convert annual distance from miles to kilometres" do
|
125
|
-
conversion_factor = 1.miles.to(:kilometres)
|
126
|
-
update_all "annual_distance = 1.0 * annual_distance * #{conversion_factor}"
|
127
|
-
update_all "annual_distance_units = 'kilometres'"
|
128
|
-
end
|
129
|
-
|
130
|
-
process "Ensure AutomobileTypeFuelYear is populated" do
|
131
|
-
AutomobileTypeFuelYear.run_data_miner!
|
132
|
-
end
|
133
|
-
|
134
|
-
# FIXME TODO maybe make this a method on AutomobileTypeFuelAge?
|
135
|
-
process "Calculate number of vehicles from total travel percent and AutomobileTypeFuelYear" do
|
136
|
-
max_year = AutomobileTypeFuelYear.maximum :year
|
137
|
-
update_all %{
|
138
|
-
vehicles =
|
139
|
-
( SELECT t1.total_travel
|
140
|
-
FROM #{AutomobileTypeFuelYear.quoted_table_name} AS t1
|
141
|
-
WHERE
|
142
|
-
t1.year = #{max_year}
|
143
|
-
AND t1.type_name = #{quoted_table_name}.type_name
|
144
|
-
AND t1.fuel_common_name = #{quoted_table_name}.fuel_common_name )
|
145
|
-
* 1.0 * #{quoted_table_name}.total_travel_percent / #{quoted_table_name}.annual_distance
|
146
|
-
}
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|