earth 0.12.1 → 0.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/data/automobile/annual_emission_controls.csv +1 -1
 - data/data/automobile/annual_fuel_consumption.csv +1 -1
 - data/data/automobile/auto_fuel_data.csv +1 -1
 - data/data/automobile/emission_control_techs.csv +1 -1
 - data/lib/earth/automobile/automobile_activity_year_type_fuel.rb +1 -1
 - data/lib/earth/automobile/automobile_activity_year_type_fuel/data_miner.rb +4 -4
 - data/lib/earth/automobile/automobile_fuel.rb +3 -3
 - data/lib/earth/automobile/automobile_fuel/data_miner.rb +1 -1
 - data/lib/earth/automobile/automobile_type_fuel.rb +2 -2
 - data/lib/earth/automobile/automobile_type_fuel/data_miner.rb +3 -3
 - data/lib/earth/automobile/automobile_type_fuel_control.rb +1 -1
 - data/lib/earth/automobile/automobile_type_fuel_control/data_miner.rb +1 -1
 - data/lib/earth/automobile/automobile_type_fuel_year.rb +5 -5
 - data/lib/earth/automobile/automobile_type_fuel_year/data_miner.rb +1 -1
 - data/lib/earth/automobile/automobile_type_fuel_year_control.rb +4 -4
 - data/lib/earth/automobile/automobile_type_fuel_year_control/data_miner.rb +2 -2
 - data/lib/earth/version.rb +1 -1
 - data/spec/earth/automobile/automobile_activity_year_type_fuel_spec.rb +1 -1
 - data/spec/earth/automobile/automobile_fuel_spec.rb +1 -1
 - data/spec/earth/automobile/automobile_type_fuel_spec.rb +1 -1
 - data/spec/earth/automobile/automobile_type_fuel_year_control_spec.rb +6 -6
 - data/spec/earth/automobile/automobile_type_fuel_year_spec.rb +6 -6
 - data/spec/earth/electricity/electric_market_spec.rb +1 -1
 - data/spec/earth/locality/country_spec.rb +4 -4
 - data/spec/earth/locality/zip_code_spec.rb +3 -3
 - metadata +4 -4
 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            name,type_name, 
     | 
| 
      
 1 
     | 
    
         
            +
            name,type_name,fuel_family,year,control_name,total_travel_percent,source,source_detail,source_url
         
     | 
| 
       2 
2 
     | 
    
         
             
            Light-duty trucks diesel 1985 moderate,Light-duty trucks,diesel,1985,moderate,1,EPA (2012) Table A-102,U.S. EPA (2012) Inventory of U.S. Greenhouse Gas Emissions and Sinks: 1990-2010,http://www.epa.gov/climatechange/emissions/usinventoryreport.html
         
     | 
| 
       3 
3 
     | 
    
         
             
            Light-duty trucks diesel 1986 moderate,Light-duty trucks,diesel,1986,moderate,1,EPA (2012) Table A-102,U.S. EPA (2012) Inventory of U.S. Greenhouse Gas Emissions and Sinks: 1990-2010,http://www.epa.gov/climatechange/emissions/usinventoryreport.html
         
     | 
| 
       4 
4 
     | 
    
         
             
            Light-duty trucks diesel 1987 moderate,Light-duty trucks,diesel,1987,moderate,1,EPA (2012) Table A-102,U.S. EPA (2012) Inventory of U.S. Greenhouse Gas Emissions and Sinks: 1990-2010,http://www.epa.gov/climatechange/emissions/usinventoryreport.html
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            name,activity_year,type_name, 
     | 
| 
      
 1 
     | 
    
         
            +
            name,activity_year,type_name,fuel_family,fuel_consumption,fuel_consumption_units,source,source_detail,source_url
         
     | 
| 
       2 
2 
     | 
    
         
             
            1990 Light-duty trucks diesel,1990,Light-duty trucks,diesel,1118.5,million_gallons,EPA (2012) Table A-88,U.S. EPA (2012) Inventory of U.S. Greenhouse Gas Emissions and Sinks: 1990-2010,http://www.epa.gov/climatechange/emissions/usinventoryreport.html
         
     | 
| 
       3 
3 
     | 
    
         
             
            1991 Light-duty trucks diesel,1991,Light-duty trucks,diesel,1107.8,million_gallons,EPA (2012) Table A-88,U.S. EPA (2012) Inventory of U.S. Greenhouse Gas Emissions and Sinks: 1990-2010,http://www.epa.gov/climatechange/emissions/usinventoryreport.html
         
     | 
| 
       4 
4 
     | 
    
         
             
            1992 Light-duty trucks diesel,1992,Light-duty trucks,diesel,1224.7,million_gallons,EPA (2012) Table A-88,U.S. EPA (2012) Inventory of U.S. Greenhouse Gas Emissions and Sinks: 1990-2010,http://www.epa.gov/climatechange/emissions/usinventoryreport.html
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            name,code, 
     | 
| 
      
 1 
     | 
    
         
            +
            name,code,family,distance_key,base_fuel_name,blend_fuel_name,blend_portion
         
     | 
| 
       2 
2 
     | 
    
         
             
            B100,BP-B100,b100,diesel,Biodiesel
         
     | 
| 
       3 
3 
     | 
    
         
             
            B20,BP-B20,b20,diesel,Distillate Fuel Oil No. 2,Biodiesel,0.2
         
     | 
| 
       4 
4 
     | 
    
         
             
            B5,BP-B5,b5,diesel,Distillate Fuel Oil No. 2,Biodiesel,0.05
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            name,type_name, 
     | 
| 
      
 1 
     | 
    
         
            +
            name,type_name,fuel_family,control_name,ch4_emission_factor,ch4_emission_factor_units,n2o_emission_factor,n2o_emission_factor_units,source,source_detail,source_url
         
     | 
| 
       2 
2 
     | 
    
         
             
            Light-duty trucks diesel advanced,Light-duty trucks,diesel,advanced,0.001,grams_per_mile,0.0015,grams_per_mile,EPA (2012) Table A-103,U.S. EPA (2012) Inventory of U.S. Greenhouse Gas Emissions and Sinks: 1990-2010,http://www.epa.gov/climatechange/emissions/usinventoryreport.html
         
     | 
| 
       3 
3 
     | 
    
         
             
            Light-duty trucks diesel moderate,Light-duty trucks,diesel,moderate,0.0009,grams_per_mile,0.0014,grams_per_mile,EPA (2012) Table A-103,U.S. EPA (2012) Inventory of U.S. Greenhouse Gas Emissions and Sinks: 1990-2010,http://www.epa.gov/climatechange/emissions/usinventoryreport.html
         
     | 
| 
       4 
4 
     | 
    
         
             
            Light-duty trucks diesel uncontrolled,Light-duty trucks,diesel,uncontrolled,0.0011,grams_per_mile,0.0017,grams_per_mile,EPA (2012) Table A-103,U.S. EPA (2012) Inventory of U.S. Greenhouse Gas Emissions and Sinks: 1990-2010,http://www.epa.gov/climatechange/emissions/usinventoryreport.html
         
     | 
| 
         @@ -9,7 +9,7 @@ class AutomobileActivityYearTypeFuel < ActiveRecord::Base 
     | 
|
| 
       9 
9 
     | 
    
         
             
              col :name
         
     | 
| 
       10 
10 
     | 
    
         
             
              col :activity_year, :type => :integer
         
     | 
| 
       11 
11 
     | 
    
         
             
              col :type_name
         
     | 
| 
       12 
     | 
    
         
            -
              col : 
     | 
| 
      
 12 
     | 
    
         
            +
              col :fuel_family
         
     | 
| 
       13 
13 
     | 
    
         
             
              col :distance, :type => :float
         
     | 
| 
       14 
14 
     | 
    
         
             
              col :distance_units
         
     | 
| 
       15 
15 
     | 
    
         
             
              col :fuel_consumption, :type => :float
         
     | 
| 
         @@ -14,7 +14,7 @@ AutomobileActivityYearTypeFuel.class_eval do 
     | 
|
| 
       14 
14 
     | 
    
         
             
                    key   'name', :synthesize => proc { |row| "#{row['Year']} #{type} gasoline" }
         
     | 
| 
       15 
15 
     | 
    
         
             
                    store 'activity_year', :field_name => 'Year'
         
     | 
| 
       16 
16 
     | 
    
         
             
                    store 'type_name', :static => type
         
     | 
| 
       17 
     | 
    
         
            -
                    store ' 
     | 
| 
      
 17 
     | 
    
         
            +
                    store 'fuel_family', :static => 'gasoline'
         
     | 
| 
       18 
18 
     | 
    
         
             
                    store 'distance', :field_name => type, :from_units => :billion_miles, :to_units => :kilometres
         
     | 
| 
       19 
19 
     | 
    
         
             
                  end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
         @@ -27,7 +27,7 @@ AutomobileActivityYearTypeFuel.class_eval do 
     | 
|
| 
       27 
27 
     | 
    
         
             
                    key   'name', :synthesize => proc { |row| "#{row['Year']} #{type} diesel" }
         
     | 
| 
       28 
28 
     | 
    
         
             
                    store 'activity_year', :field_name => 'Year'
         
     | 
| 
       29 
29 
     | 
    
         
             
                    store 'type_name', :static => type
         
     | 
| 
       30 
     | 
    
         
            -
                    store ' 
     | 
| 
      
 30 
     | 
    
         
            +
                    store 'fuel_family', :static => 'diesel'
         
     | 
| 
       31 
31 
     | 
    
         
             
                    store 'distance', :field_name => type, :from_units => :billion_miles, :to_units => :kilometres
         
     | 
| 
       32 
32 
     | 
    
         
             
                  end
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
         @@ -40,7 +40,7 @@ AutomobileActivityYearTypeFuel.class_eval do 
     | 
|
| 
       40 
40 
     | 
    
         
             
                    key   'name', :synthesize => proc { |row| "#{row['Year']} #{type} alternative" }
         
     | 
| 
       41 
41 
     | 
    
         
             
                    store 'activity_year', :field_name => 'Year'
         
     | 
| 
       42 
42 
     | 
    
         
             
                    store 'type_name', :static => type
         
     | 
| 
       43 
     | 
    
         
            -
                    store ' 
     | 
| 
      
 43 
     | 
    
         
            +
                    store 'fuel_family', :static => 'alternative'
         
     | 
| 
       44 
44 
     | 
    
         
             
                    store 'distance', :field_name => type, :from_units => :billion_miles, :to_units => :kilometres
         
     | 
| 
       45 
45 
     | 
    
         
             
                  end
         
     | 
| 
       46 
46 
     | 
    
         
             
                end
         
     | 
| 
         @@ -50,7 +50,7 @@ AutomobileActivityYearTypeFuel.class_eval do 
     | 
|
| 
       50 
50 
     | 
    
         
             
                  key   'name'
         
     | 
| 
       51 
51 
     | 
    
         
             
                  store 'activity_year'
         
     | 
| 
       52 
52 
     | 
    
         
             
                  store 'type_name'
         
     | 
| 
       53 
     | 
    
         
            -
                  store ' 
     | 
| 
      
 53 
     | 
    
         
            +
                  store 'fuel_family'
         
     | 
| 
       54 
54 
     | 
    
         
             
                  store 'fuel_consumption', :from_units => :million_gallons, :to_units => :litres
         
     | 
| 
       55 
55 
     | 
    
         
             
                end
         
     | 
| 
       56 
56 
     | 
    
         
             
              end
         
     | 
| 
         @@ -8,7 +8,7 @@ class AutomobileFuel < ActiveRecord::Base 
     | 
|
| 
       8 
8 
     | 
    
         
             
              belongs_to :blend_fuel, :class_name => 'Fuel', :foreign_key => 'blend_fuel_name'
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              # for calculating gas and diesel annual distance and ch4 + n2o efs
         
     | 
| 
       11 
     | 
    
         
            -
              has_many :type_fuels, :foreign_key => : 
     | 
| 
      
 11 
     | 
    
         
            +
              has_many :type_fuels, :foreign_key => :fuel_family, :primary_key => :family, :class_name => 'AutomobileTypeFuel'
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
              # for fallback
         
     | 
| 
       14 
14 
     | 
    
         
             
              class << self
         
     | 
| 
         @@ -68,7 +68,7 @@ class AutomobileFuel < ActiveRecord::Base 
     | 
|
| 
       68 
68 
     | 
    
         | 
| 
       69 
69 
     | 
    
         
             
              col :name
         
     | 
| 
       70 
70 
     | 
    
         
             
              col :code
         
     | 
| 
       71 
     | 
    
         
            -
              col : 
     | 
| 
      
 71 
     | 
    
         
            +
              col :family
         
     | 
| 
       72 
72 
     | 
    
         
             
              col :distance_key
         
     | 
| 
       73 
73 
     | 
    
         
             
              col :base_fuel_name
         
     | 
| 
       74 
74 
     | 
    
         
             
              col :blend_fuel_name
         
     | 
| 
         @@ -89,7 +89,7 @@ class AutomobileFuel < ActiveRecord::Base 
     | 
|
| 
       89 
89 
     | 
    
         
             
              col :total_consumption_units
         
     | 
| 
       90 
90 
     | 
    
         | 
| 
       91 
91 
     | 
    
         
             
              warn_unless_size 12
         
     | 
| 
       92 
     | 
    
         
            -
              warn_if_blanks :code, : 
     | 
| 
      
 92 
     | 
    
         
            +
              warn_if_blanks :code, :family, :distance_key
         
     | 
| 
       93 
93 
     | 
    
         
             
              warn_if do
         
     | 
| 
       94 
94 
     | 
    
         
             
                if exists?("name != 'electricity' AND base_fuel_name IS NULL")
         
     | 
| 
       95 
95 
     | 
    
         
             
                  "Records missing #{col}"
         
     | 
| 
         @@ -10,7 +10,7 @@ AutomobileFuel.class_eval do 
     | 
|
| 
       10 
10 
     | 
    
         
             
                       :url => "file://#{Earth::DATA_DIR}/automobile/auto_fuel_data.csv" do
         
     | 
| 
       11 
11 
     | 
    
         
             
                  key   'name'
         
     | 
| 
       12 
12 
     | 
    
         
             
                  store 'code'
         
     | 
| 
       13 
     | 
    
         
            -
                  store ' 
     | 
| 
      
 13 
     | 
    
         
            +
                  store 'family'
         
     | 
| 
       14 
14 
     | 
    
         
             
                  store 'distance_key'
         
     | 
| 
       15 
15 
     | 
    
         
             
                  store 'base_fuel_name', :nullify => true
         
     | 
| 
       16 
16 
     | 
    
         
             
                  store 'blend_fuel_name', :nullify => true
         
     | 
| 
         @@ -3,12 +3,12 @@ class AutomobileTypeFuel < ActiveRecord::Base 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
              # for calculating vehicles
         
     | 
| 
       5 
5 
     | 
    
         
             
              def latest_activity_year_type_fuel
         
     | 
| 
       6 
     | 
    
         
            -
                AutomobileActivityYearTypeFuel.latest.where(:type_name => type_name, : 
     | 
| 
      
 6 
     | 
    
         
            +
                AutomobileActivityYearTypeFuel.latest.where(:type_name => type_name, :fuel_family => fuel_family).first
         
     | 
| 
       7 
7 
     | 
    
         
             
              end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
              col :name
         
     | 
| 
       10 
10 
     | 
    
         
             
              col :type_name
         
     | 
| 
       11 
     | 
    
         
            -
              col : 
     | 
| 
      
 11 
     | 
    
         
            +
              col :fuel_family
         
     | 
| 
       12 
12 
     | 
    
         
             
              col :annual_distance, :type => :float
         
     | 
| 
       13 
13 
     | 
    
         
             
              col :annual_distance_units
         
     | 
| 
       14 
14 
     | 
    
         
             
              col :fuel_consumption, :type => :float
         
     | 
| 
         @@ -13,9 +13,9 @@ AutomobileTypeFuel.class_eval do 
     | 
|
| 
       13 
13 
     | 
    
         
             
                    :src => AutomobileTypeFuelYear,
         
     | 
| 
       14 
14 
     | 
    
         
             
                    :dest => AutomobileTypeFuel,
         
     | 
| 
       15 
15 
     | 
    
         
             
                    :cols => {
         
     | 
| 
       16 
     | 
    
         
            -
                      [:type_name, : 
     | 
| 
      
 16 
     | 
    
         
            +
                      [:type_name, :fuel_family] => :name,
         
     | 
| 
       17 
17 
     | 
    
         
             
                      :type_name => :type_name,
         
     | 
| 
       18 
     | 
    
         
            -
                      : 
     | 
| 
      
 18 
     | 
    
         
            +
                      :fuel_family => :fuel_family
         
     | 
| 
       19 
19 
     | 
    
         
             
                    }
         
     | 
| 
       20 
20 
     | 
    
         
             
                  )
         
     | 
| 
       21 
21 
     | 
    
         
             
                end
         
     | 
| 
         @@ -23,7 +23,7 @@ AutomobileTypeFuel.class_eval do 
     | 
|
| 
       23 
23 
     | 
    
         
             
                process "Derive annual distance and emission factors from AutomobileTypeFuelYear" do
         
     | 
| 
       24 
24 
     | 
    
         
             
                  type_fuels = arel_table
         
     | 
| 
       25 
25 
     | 
    
         
             
                  type_fuel_years = AutomobileTypeFuelYear.arel_table
         
     | 
| 
       26 
     | 
    
         
            -
                  join_relation = type_fuel_years[:type_name].eq(type_fuels[:type_name]).and(type_fuel_years[: 
     | 
| 
      
 26 
     | 
    
         
            +
                  join_relation = type_fuel_years[:type_name].eq(type_fuels[:type_name]).and(type_fuel_years[:fuel_family].eq(type_fuels[:fuel_family]))
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
                  %w{ annual_distance ch4_emission_factor n2o_emission_factor }.each do |item|
         
     | 
| 
       29 
29 
     | 
    
         
             
                    item_sql = AutomobileTypeFuelYear.where(join_relation).weighted_average_relation(:"#{item}", :weighted_by => :share_of_type).to_sql
         
     | 
| 
         @@ -7,7 +7,7 @@ AutomobileTypeFuelControl.class_eval do 
     | 
|
| 
       7 
7 
     | 
    
         
             
                       :url => "file://#{Earth::DATA_DIR}/automobile/emission_control_techs.csv" do
         
     | 
| 
       8 
8 
     | 
    
         
             
                  key   'name'
         
     | 
| 
       9 
9 
     | 
    
         
             
                  store 'type_name'
         
     | 
| 
       10 
     | 
    
         
            -
                  store ' 
     | 
| 
      
 10 
     | 
    
         
            +
                  store 'fuel_family'
         
     | 
| 
       11 
11 
     | 
    
         
             
                  store 'control_name'
         
     | 
| 
       12 
12 
     | 
    
         
             
                  store 'ch4_emission_factor', :from_units => :grams_per_mile, :to_units => :kilograms_per_kilometre
         
     | 
| 
       13 
13 
     | 
    
         
             
                  store 'n2o_emission_factor', :from_units => :grams_per_mile, :to_units => :kilograms_per_kilometre
         
     | 
| 
         @@ -2,22 +2,22 @@ class AutomobileTypeFuelYear < ActiveRecord::Base 
     | 
|
| 
       2 
2 
     | 
    
         
             
              self.primary_key = "name"
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
              # Used by Automobile and AutomobileTrip
         
     | 
| 
       5 
     | 
    
         
            -
              def self. 
     | 
| 
      
 5 
     | 
    
         
            +
              def self.find_by_type_name_and_fuel_family_and_closest_year(type_name, fuel_family, year)
         
     | 
| 
       6 
6 
     | 
    
         
             
                if year > maximum(:year)
         
     | 
| 
       7 
     | 
    
         
            -
                  where(:type_name => type_name, : 
     | 
| 
      
 7 
     | 
    
         
            +
                  where(:type_name => type_name, :fuel_family => fuel_family, :year => maximum(:year)).first
         
     | 
| 
       8 
8 
     | 
    
         
             
                else
         
     | 
| 
       9 
     | 
    
         
            -
                  where(:type_name => type_name, : 
     | 
| 
      
 9 
     | 
    
         
            +
                  where(:type_name => type_name, :fuel_family => fuel_family, :year => [year, minimum(:year)].max).first
         
     | 
| 
       10 
10 
     | 
    
         
             
                end
         
     | 
| 
       11 
11 
     | 
    
         
             
              end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
              # for calculating ch4 and n2o ef
         
     | 
| 
       14 
14 
     | 
    
         
             
              def type_fuel_year_controls
         
     | 
| 
       15 
     | 
    
         
            -
                AutomobileTypeFuelYearControl. 
     | 
| 
      
 15 
     | 
    
         
            +
                AutomobileTypeFuelYearControl.find_all_by_type_name_and_fuel_family_and_closest_year(type_name, fuel_family, year)
         
     | 
| 
       16 
16 
     | 
    
         
             
              end
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
              col :name
         
     | 
| 
       19 
19 
     | 
    
         
             
              col :type_name
         
     | 
| 
       20 
     | 
    
         
            -
              col : 
     | 
| 
      
 20 
     | 
    
         
            +
              col :fuel_family
         
     | 
| 
       21 
21 
     | 
    
         
             
              col :year, :type => :integer
         
     | 
| 
       22 
22 
     | 
    
         
             
              col :share_of_type, :type => :float
         
     | 
| 
       23 
23 
     | 
    
         
             
              col :annual_distance, :type => :float
         
     | 
| 
         @@ -16,7 +16,7 @@ AutomobileTypeFuelYear.class_eval do 
     | 
|
| 
       16 
16 
     | 
    
         
             
                           :select => proc { |row| row['age'].to_i.to_s == row['age'] } do
         
     | 
| 
       17 
17 
     | 
    
         
             
                      key 'name', :synthesize => proc { |row| "#{type} #{fuel} #{2009 - row['age'].to_i}" }
         
     | 
| 
       18 
18 
     | 
    
         
             
                      store 'type_name', :static => type
         
     | 
| 
       19 
     | 
    
         
            -
                      store ' 
     | 
| 
      
 19 
     | 
    
         
            +
                      store 'fuel_family', :static => fuel
         
     | 
| 
       20 
20 
     | 
    
         
             
                      store 'year', :synthesize => proc { |row| 2009 - row['age'].to_i }
         
     | 
| 
       21 
21 
     | 
    
         
             
                      store 'share_of_type', :synthesize => proc { |row| row[code].to_f / (code == 'LDDV' ? 57.5 : 100) } # total percent only sums to 57.5 for diesel cars
         
     | 
| 
       22 
22 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -5,11 +5,11 @@ class AutomobileTypeFuelYearControl < ActiveRecord::Base 
     | 
|
| 
       5 
5 
     | 
    
         
             
              belongs_to :type_fuel_control, :foreign_key => :type_fuel_control_name, :class_name => 'AutomobileTypeFuelControl'
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              # Used by AutomobileTypeFuelYear
         
     | 
| 
       8 
     | 
    
         
            -
              def self. 
     | 
| 
      
 8 
     | 
    
         
            +
              def self.find_all_by_type_name_and_fuel_family_and_closest_year(type_name, fuel_family, year)
         
     | 
| 
       9 
9 
     | 
    
         
             
                if year > maximum(:year)
         
     | 
| 
       10 
     | 
    
         
            -
                  where(:type_name => type_name, : 
     | 
| 
      
 10 
     | 
    
         
            +
                  where(:type_name => type_name, :fuel_family => fuel_family, :year => maximum(:year))
         
     | 
| 
       11 
11 
     | 
    
         
             
                else
         
     | 
| 
       12 
     | 
    
         
            -
                  where(:type_name => type_name, : 
     | 
| 
      
 12 
     | 
    
         
            +
                  where(:type_name => type_name, :fuel_family => fuel_family, :year => [year, minimum(:year)].max)
         
     | 
| 
       13 
13 
     | 
    
         
             
                end
         
     | 
| 
       14 
14 
     | 
    
         
             
              end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
         @@ -26,7 +26,7 @@ class AutomobileTypeFuelYearControl < ActiveRecord::Base 
     | 
|
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
              col :name
         
     | 
| 
       28 
28 
     | 
    
         
             
              col :type_name
         
     | 
| 
       29 
     | 
    
         
            -
              col : 
     | 
| 
      
 29 
     | 
    
         
            +
              col :fuel_family
         
     | 
| 
       30 
30 
     | 
    
         
             
              col :year, :type => :integer
         
     | 
| 
       31 
31 
     | 
    
         
             
              col :control_name
         
     | 
| 
       32 
32 
     | 
    
         
             
              col :type_fuel_control_name
         
     | 
| 
         @@ -8,10 +8,10 @@ AutomobileTypeFuelYearControl.class_eval do 
     | 
|
| 
       8 
8 
     | 
    
         
             
                       :url => "file://#{Earth::DATA_DIR}/automobile/annual_emission_controls.csv" do
         
     | 
| 
       9 
9 
     | 
    
         
             
                  key   'name'
         
     | 
| 
       10 
10 
     | 
    
         
             
                  store 'type_name'
         
     | 
| 
       11 
     | 
    
         
            -
                  store ' 
     | 
| 
      
 11 
     | 
    
         
            +
                  store 'fuel_family'
         
     | 
| 
       12 
12 
     | 
    
         
             
                  store 'year'
         
     | 
| 
       13 
13 
     | 
    
         
             
                  store 'control_name'
         
     | 
| 
       14 
     | 
    
         
            -
                  store 'type_fuel_control_name', :synthesize => proc { |row| [row['type_name'], row[' 
     | 
| 
      
 14 
     | 
    
         
            +
                  store 'type_fuel_control_name', :synthesize => proc { |row| [row['type_name'], row['fuel_family'], row['control_name']].join(' ') }
         
     | 
| 
       15 
15 
     | 
    
         
             
                  store 'total_travel_percent'
         
     | 
| 
       16 
16 
     | 
    
         
             
                end
         
     | 
| 
       17 
17 
     | 
    
         
             
              end
         
     | 
    
        data/lib/earth/version.rb
    CHANGED
    
    
| 
         @@ -16,7 +16,7 @@ describe AutomobileActivityYearTypeFuel do 
     | 
|
| 
       16 
16 
     | 
    
         
             
              describe 'verify', :sanity => true do
         
     | 
| 
       17 
17 
     | 
    
         
             
                it { AAYTF.count.should == 120 }
         
     | 
| 
       18 
18 
     | 
    
         
             
                it { AAYTF.where(:distance => nil).count.should == 0 }
         
     | 
| 
       19 
     | 
    
         
            -
                it { AAYTF.where(" 
     | 
| 
      
 19 
     | 
    
         
            +
                it { AAYTF.where("fuel_family != 'alternative' AND fuel_consumption IS NULL").count.should == 0 }
         
     | 
| 
       20 
20 
     | 
    
         
             
              end
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
              describe '.latest' do
         
     | 
| 
         @@ -54,7 +54,7 @@ describe AutomobileFuel do 
     | 
|
| 
       54 
54 
     | 
    
         | 
| 
       55 
55 
     | 
    
         
             
                it "all grades of gasoline should have same annual distance and emission factors" do
         
     | 
| 
       56 
56 
     | 
    
         
             
                  AutomobileFuel.where("name LIKE '%gasoline'").each do |fuel|
         
     | 
| 
       57 
     | 
    
         
            -
                    fuel. 
     | 
| 
      
 57 
     | 
    
         
            +
                    fuel.family.should == 'gasoline'
         
     | 
| 
       58 
58 
     | 
    
         
             
                    fuel.annual_distance.should == AutomobileFuel.gasoline.annual_distance
         
     | 
| 
       59 
59 
     | 
    
         
             
                    fuel.co2_emission_factor.should == AutomobileFuel.gasoline.co2_emission_factor
         
     | 
| 
       60 
60 
     | 
    
         
             
                    fuel.ch4_emission_factor.should == AutomobileFuel.gasoline.ch4_emission_factor
         
     | 
| 
         @@ -37,7 +37,7 @@ describe AutomobileTypeFuel do 
     | 
|
| 
       37 
37 
     | 
    
         
             
                it 'should always be a match from 2009' do
         
     | 
| 
       38 
38 
     | 
    
         
             
                  AutomobileTypeFuel.find_each do |atf|
         
     | 
| 
       39 
39 
     | 
    
         
             
                    atf.latest_activity_year_type_fuel.type_name.should == atf.type_name
         
     | 
| 
       40 
     | 
    
         
            -
                    atf.latest_activity_year_type_fuel. 
     | 
| 
      
 40 
     | 
    
         
            +
                    atf.latest_activity_year_type_fuel.fuel_family.should == atf.fuel_family
         
     | 
| 
       41 
41 
     | 
    
         
             
                    atf.latest_activity_year_type_fuel.activity_year.should == 2009
         
     | 
| 
       42 
42 
     | 
    
         
             
                  end
         
     | 
| 
       43 
43 
     | 
    
         
             
                end
         
     | 
| 
         @@ -2,7 +2,7 @@ require 'spec_helper' 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'earth/automobile/automobile_type_fuel_year_control'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            describe AutomobileTypeFuelYearControl do
         
     | 
| 
       5 
     | 
    
         
            -
              let(:test_year_control) { ATFYC.where(:type_name => 'Passenger cars', : 
     | 
| 
      
 5 
     | 
    
         
            +
              let(:test_year_control) { ATFYC.where(:type_name => 'Passenger cars', :fuel_family => 'gasoline', :year => 2005).first }
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              before :all do
         
     | 
| 
       8 
8 
     | 
    
         
             
                Earth.init :automobile, :load_data_miner => true
         
     | 
| 
         @@ -19,7 +19,7 @@ describe AutomobileTypeFuelYearControl do 
     | 
|
| 
       19 
19 
     | 
    
         
             
                it { ATFYC.count.should == 142 }
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                it 'total travel percent should sum to 1' do
         
     | 
| 
       22 
     | 
    
         
            -
                  ATFYC.group([:type_name, : 
     | 
| 
      
 22 
     | 
    
         
            +
                  ATFYC.group([:type_name, :fuel_family, :year]).sum(:total_travel_percent).each do |grouping_criteria, total|
         
     | 
| 
       23 
23 
     | 
    
         
             
                    total.should be_within(1e-5).of(1.0)
         
     | 
| 
       24 
24 
     | 
    
         
             
                  end
         
     | 
| 
       25 
25 
     | 
    
         
             
                end
         
     | 
| 
         @@ -27,10 +27,10 @@ describe AutomobileTypeFuelYearControl do 
     | 
|
| 
       27 
27 
     | 
    
         
             
                it { ATFYC.where(:type_fuel_control_name => nil).count.should == 0 }
         
     | 
| 
       28 
28 
     | 
    
         
             
              end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
              describe '. 
     | 
| 
       31 
     | 
    
         
            -
                it { ATFYC. 
     | 
| 
       32 
     | 
    
         
            -
                it { ATFYC. 
     | 
| 
       33 
     | 
    
         
            -
                it { ATFYC. 
     | 
| 
      
 30 
     | 
    
         
            +
              describe '.find_all_by_type_name_and_fuel_family_and_closest_year' do
         
     | 
| 
      
 31 
     | 
    
         
            +
                it { ATFYC.find_all_by_type_name_and_fuel_family_and_closest_year('Passenger cars', 'gasoline', 1980).should == ATFYC.find_all_by_type_name_and_fuel_family_and_year('Passenger cars', 'gasoline', 1985) }
         
     | 
| 
      
 32 
     | 
    
         
            +
                it { ATFYC.find_all_by_type_name_and_fuel_family_and_closest_year('Passenger cars', 'gasoline', 2005).should == ATFYC.find_all_by_type_name_and_fuel_family_and_year('Passenger cars', 'gasoline', 2005) }
         
     | 
| 
      
 33 
     | 
    
         
            +
                it { ATFYC.find_all_by_type_name_and_fuel_family_and_closest_year('Passenger cars', 'gasoline', 2012).should == ATFYC.find_all_by_type_name_and_fuel_family_and_year('Passenger cars', 'gasoline', 2010) }
         
     | 
| 
       34 
34 
     | 
    
         
             
              end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
              describe '#ch4_emission_factor' do
         
     | 
| 
         @@ -2,7 +2,7 @@ require 'spec_helper' 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'earth/automobile/automobile_type_fuel_year'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            describe AutomobileTypeFuelYear do
         
     | 
| 
       5 
     | 
    
         
            -
              let(:test_atfy) { ATFY.where(:type_name => 'Passenger cars', : 
     | 
| 
      
 5 
     | 
    
         
            +
              let(:test_atfy) { ATFY.where(:type_name => 'Passenger cars', :fuel_family => 'gasoline', :year => 2005).first }
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              before :all do
         
     | 
| 
       8 
8 
     | 
    
         
             
                Earth.init :automobile, :load_data_miner => true
         
     | 
| 
         @@ -19,7 +19,7 @@ describe AutomobileTypeFuelYear do 
     | 
|
| 
       19 
19 
     | 
    
         
             
                it { ATFY.count.should == 124 }
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                it 'shares should sum to 1' do
         
     | 
| 
       22 
     | 
    
         
            -
                  ATFY.sum(:share_of_type, :group => [:type_name, : 
     | 
| 
      
 22 
     | 
    
         
            +
                  ATFY.sum(:share_of_type, :group => [:type_name, :fuel_family]).each do |groupers, total|
         
     | 
| 
       23 
23 
     | 
    
         
             
                    total.should be_within(1e-2).of(1.0)
         
     | 
| 
       24 
24 
     | 
    
         
             
                  end
         
     | 
| 
       25 
25 
     | 
    
         
             
                end
         
     | 
| 
         @@ -37,10 +37,10 @@ describe AutomobileTypeFuelYear do 
     | 
|
| 
       37 
37 
     | 
    
         
             
                it { test_atfy.n2o_emission_factor_units.should == 'kilograms_co2e_per_kilometre' }
         
     | 
| 
       38 
38 
     | 
    
         
             
              end
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
              describe '. 
     | 
| 
       41 
     | 
    
         
            -
                it { ATFY. 
     | 
| 
       42 
     | 
    
         
            -
                it { ATFY. 
     | 
| 
       43 
     | 
    
         
            -
                it { ATFY. 
     | 
| 
      
 40 
     | 
    
         
            +
              describe '.find_by_type_name_and_fuel_family_and_closest_year' do
         
     | 
| 
      
 41 
     | 
    
         
            +
                it { ATFY.find_by_type_name_and_fuel_family_and_closest_year('Passenger cars', 'gasoline', 1970).should == ATFY.find_by_type_name_and_fuel_family_and_year('Passenger cars', 'gasoline', 1979) }
         
     | 
| 
      
 42 
     | 
    
         
            +
                it { ATFY.find_by_type_name_and_fuel_family_and_closest_year('Passenger cars', 'gasoline', 2005).should == ATFY.find_by_type_name_and_fuel_family_and_year('Passenger cars', 'gasoline', 2005) }
         
     | 
| 
      
 43 
     | 
    
         
            +
                it { ATFY.find_by_type_name_and_fuel_family_and_closest_year('Passenger cars', 'gasoline', 2012).should == ATFY.find_by_type_name_and_fuel_family_and_year('Passenger cars', 'gasoline', 2009) }
         
     | 
| 
       44 
44 
     | 
    
         
             
              end
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
              describe '#type_fuel_year_controls' do
         
     | 
| 
         @@ -18,7 +18,7 @@ describe ElectricMarket do 
     | 
|
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
                it { ElectricMarket.where(:electric_utility_eia_id => nil).count.should == 0 } # some ids aren't found in our electric_utilities table
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
                it ' 
     | 
| 
      
 21 
     | 
    
         
            +
                it 'links 53704 to MG&E' do
         
     | 
| 
       22 
22 
     | 
    
         
             
                  ZipCode.find('53704').electric_utilities.should include(ElectricUtility.find 11479)
         
     | 
| 
       23 
23 
     | 
    
         
             
                end
         
     | 
| 
       24 
24 
     | 
    
         
             
              end
         
     | 
| 
         @@ -71,12 +71,12 @@ describe Country do 
     | 
|
| 
       71 
71 
     | 
    
         
             
                  it { Country.where("rail_trip_co2_emission_factor > 0").count.should == 26 }
         
     | 
| 
       72 
72 
     | 
    
         | 
| 
       73 
73 
     | 
    
         
             
                  # spot checks
         
     | 
| 
       74 
     | 
    
         
            -
                  it { us.rail_passengers.should  
     | 
| 
      
 74 
     | 
    
         
            +
                  it { us.rail_passengers.should be_within(10_000).of(4_466_991_391) }
         
     | 
| 
       75 
75 
     | 
    
         
             
                  it { us.rail_trip_distance.should be_within(5e-5).of(12.9952) }
         
     | 
| 
       76 
76 
     | 
    
         
             
                  it { us.rail_speed.should be_within(5e-5).of(32.4972) }
         
     | 
| 
       77 
     | 
    
         
            -
                  it { us.rail_trip_electricity_intensity.should be_within(5e-5).of(0. 
     | 
| 
       78 
     | 
    
         
            -
                  it { us.rail_trip_diesel_intensity.should be_within(5e-5).of(0. 
     | 
| 
       79 
     | 
    
         
            -
                  it { us.rail_trip_co2_emission_factor.should be_within(5e-5).of(0. 
     | 
| 
      
 77 
     | 
    
         
            +
                  it { us.rail_trip_electricity_intensity.should be_within(5e-5).of(0.14051) }
         
     | 
| 
      
 78 
     | 
    
         
            +
                  it { us.rail_trip_diesel_intensity.should be_within(5e-5).of(0.01942) }
         
     | 
| 
      
 79 
     | 
    
         
            +
                  it { us.rail_trip_co2_emission_factor.should be_within(5e-5).of(0.0909) }
         
     | 
| 
       80 
80 
     | 
    
         | 
| 
       81 
81 
     | 
    
         
             
                  it { uk.rail_passengers.should == 1352150000 }
         
     | 
| 
       82 
82 
     | 
    
         
             
                  it { uk.rail_trip_distance.should be_within(5e-5).of(40.6904) }
         
     | 
| 
         @@ -16,7 +16,7 @@ describe ZipCode do 
     | 
|
| 
       16 
16 
     | 
    
         
             
                it { ZipCode.count.should == 43770 }
         
     | 
| 
       17 
17 
     | 
    
         
             
                it { ZipCode.where(:state_postal_abbreviation => nil).count.should == 0 }
         
     | 
| 
       18 
18 
     | 
    
         
             
                it { ZipCode.where('latitude IS NOT NULL AND longitude IS NOT NULL').count.should == 43191 }
         
     | 
| 
       19 
     | 
    
         
            -
                it { ZipCode.where('egrid_subregion_abbreviation IS NOT NULL').count.should ==  
     | 
| 
      
 19 
     | 
    
         
            +
                it { ZipCode.where('egrid_subregion_abbreviation IS NOT NULL').count.should == 41333 }
         
     | 
| 
       20 
20 
     | 
    
         
             
                it { ZipCode.where('climate_division_name IS NOT NULL').count.should == 41358 }
         
     | 
| 
       21 
21 
     | 
    
         
             
                it { ZipCode.where('population IS NOT NULL').count.should == 33120 }
         
     | 
| 
       22 
22 
     | 
    
         
             
              end
         
     | 
| 
         @@ -34,8 +34,8 @@ describe ZipCode do 
     | 
|
| 
       34 
34 
     | 
    
         | 
| 
       35 
35 
     | 
    
         
             
              describe '#latitude_longitude' do
         
     | 
| 
       36 
36 
     | 
    
         
             
                it 'should return the lat and lng as an array of strings' do
         
     | 
| 
       37 
     | 
    
         
            -
                  ZipCode.find('00001').latitude_longitude.should == [ 
     | 
| 
       38 
     | 
    
         
            -
                  ZipCode.find(' 
     | 
| 
      
 37 
     | 
    
         
            +
                  ZipCode.find('00001').latitude_longitude.should == [nil, nil]
         
     | 
| 
      
 38 
     | 
    
         
            +
                  ZipCode.find('00210').latitude_longitude.should == ['43.005895', '-71.013202']
         
     | 
| 
       39 
39 
     | 
    
         
             
                end
         
     | 
| 
       40 
40 
     | 
    
         
             
              end
         
     | 
| 
       41 
41 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            name: earth
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
4 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       5 
     | 
    
         
            -
              version: 0.12. 
     | 
| 
      
 5 
     | 
    
         
            +
              version: 0.12.2
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors: 
         
     | 
| 
       8 
8 
     | 
    
         
             
            - Seamus Abshere
         
     | 
| 
         @@ -12,7 +12,7 @@ autorequire: 
     | 
|
| 
       12 
12 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       13 
13 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            date: 2012-06- 
     | 
| 
      
 15 
     | 
    
         
            +
            date: 2012-06-15 00:00:00 Z
         
     | 
| 
       16 
16 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       17 
17 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       18 
18 
     | 
    
         
             
              name: activerecord
         
     | 
| 
         @@ -681,7 +681,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       681 
681 
     | 
    
         
             
              requirements: 
         
     | 
| 
       682 
682 
     | 
    
         
             
              - - ">="
         
     | 
| 
       683 
683 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       684 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 684 
     | 
    
         
            +
                  hash: 2577779194019475364
         
     | 
| 
       685 
685 
     | 
    
         
             
                  segments: 
         
     | 
| 
       686 
686 
     | 
    
         
             
                  - 0
         
     | 
| 
       687 
687 
     | 
    
         
             
                  version: "0"
         
     | 
| 
         @@ -690,7 +690,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       690 
690 
     | 
    
         
             
              requirements: 
         
     | 
| 
       691 
691 
     | 
    
         
             
              - - ">="
         
     | 
| 
       692 
692 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       693 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 693 
     | 
    
         
            +
                  hash: 2577779194019475364
         
     | 
| 
       694 
694 
     | 
    
         
             
                  segments: 
         
     | 
| 
       695 
695 
     | 
    
         
             
                  - 0
         
     | 
| 
       696 
696 
     | 
    
         
             
                  version: "0"
         
     |