earth 0.11.0 → 0.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/bin/earth_tester.rb +1 -0
  2. data/earth.gemspec +1 -1
  3. data/lib/earth.rb +1 -1
  4. data/lib/earth/air/flight_segment/data_miner.rb +5 -9
  5. data/lib/earth/automobile/automobile_size_class_year.rb +1 -0
  6. data/lib/earth/automobile/automobile_size_class_year/data_miner.rb +1 -0
  7. data/lib/earth/data_miner.rb +1 -0
  8. data/lib/earth/fuel/fuel_type.rb +1 -0
  9. data/lib/earth/fuel/fuel_type/data_miner.rb +1 -0
  10. data/lib/earth/hospitality.rb +2 -0
  11. data/lib/earth/hospitality/census_region_lodging_class.rb +16 -0
  12. data/lib/earth/hospitality/census_region_lodging_class/data_miner.rb +40 -0
  13. data/lib/earth/hospitality/country_lodging_class.rb +16 -0
  14. data/lib/earth/hospitality/country_lodging_class/data_miner.rb +40 -0
  15. data/lib/earth/hospitality/data_miner.rb +2 -0
  16. data/lib/earth/hospitality/lodging_class.rb +3 -1
  17. data/lib/earth/hospitality/lodging_class/data_miner.rb +6 -5
  18. data/lib/earth/industry/data_miner.rb +1 -0
  19. data/lib/earth/industry/industry.rb +1 -1
  20. data/lib/earth/industry/industry/data_miner.rb +12 -0
  21. data/lib/earth/industry/merchant_category.rb +1 -1
  22. data/lib/earth/locality.rb +5 -7
  23. data/lib/earth/locality/census_division/data_miner.rb +7 -6
  24. data/lib/earth/locality/country.rb +25 -2
  25. data/lib/earth/locality/country/data_miner.rb +74 -23
  26. data/lib/earth/locality/data_miner.rb +5 -7
  27. data/lib/earth/locality/egrid_country.rb +17 -0
  28. data/lib/earth/locality/egrid_country/data_miner.rb +13 -0
  29. data/lib/earth/locality/egrid_region.rb +2 -14
  30. data/lib/earth/locality/egrid_region/data_miner.rb +15 -14
  31. data/lib/earth/locality/egrid_subregion.rb +3 -64
  32. data/lib/earth/locality/egrid_subregion/data_miner.rb +39 -25
  33. data/lib/earth/locality/zip_code/data_miner.rb +1 -0
  34. data/lib/earth/rail.rb +6 -0
  35. data/lib/earth/{locality → rail}/country_rail_class.rb +0 -0
  36. data/lib/earth/{locality → rail}/country_rail_class/data_miner.rb +0 -0
  37. data/lib/earth/{locality → rail}/country_rail_traction.rb +0 -0
  38. data/lib/earth/{locality → rail}/country_rail_traction/data_miner.rb +0 -0
  39. data/lib/earth/{locality → rail}/country_rail_traction_class.rb +0 -0
  40. data/lib/earth/{locality → rail}/country_rail_traction_class/data_miner.rb +0 -0
  41. data/lib/earth/rail/data_miner.rb +6 -0
  42. data/lib/earth/rail/national_transit_database_record/data_miner.rb +1 -0
  43. data/lib/earth/rail/rail_company/data_miner.rb +6 -5
  44. data/lib/earth/residence.rb +1 -2
  45. data/lib/earth/residence/data_miner.rb +1 -2
  46. data/lib/earth/residence/residence_fuel_type.rb +5 -2
  47. data/lib/earth/{locality → residence}/urbanity.rb +0 -0
  48. data/lib/earth/{locality → residence}/urbanity/data_miner.rb +0 -0
  49. data/lib/earth/version.rb +1 -1
  50. data/spec/earth_spec.rb +6 -6
  51. metadata +216 -209
@@ -2,16 +2,14 @@ require 'earth/locality/census_division/data_miner'
2
2
  require 'earth/locality/census_region/data_miner'
3
3
  require 'earth/locality/climate_division/data_miner'
4
4
  require 'earth/locality/country/data_miner'
5
- require 'earth/locality/country_rail_traction/data_miner'
6
- require 'earth/locality/country_rail_class/data_miner'
7
- require 'earth/locality/country_rail_traction_class/data_miner'
5
+ require 'earth/locality/egrid_country/data_miner'
8
6
  require 'earth/locality/egrid_region/data_miner'
9
7
  require 'earth/locality/egrid_subregion/data_miner'
10
8
  require 'earth/locality/petroleum_administration_for_defense_district/data_miner'
11
9
  require 'earth/locality/state/data_miner'
12
- require 'earth/locality/urbanity/data_miner'
13
10
  require 'earth/locality/zip_code/data_miner'
14
11
 
15
- require 'earth/automobile/data_miner'
16
- require 'earth/residence/data_miner'
17
- require 'earth/rail/data_miner'
12
+ require 'earth/automobile/data_miner' # for automobile data on Country
13
+ require 'earth/fuel/data_miner' # for GWPs for EgridSubregion
14
+ require 'earth/hospitality/data_miner' # for lodging data on Country
15
+ require 'earth/rail/data_miner' # for rail data on Country
@@ -0,0 +1,17 @@
1
+ class EgridCountry < ActiveRecord::Base
2
+ set_primary_key :name
3
+
4
+ class << self
5
+ def us
6
+ find_by_name 'US'
7
+ end
8
+ end
9
+
10
+ col :name
11
+ col :generation, :type => :float
12
+ col :generation_units
13
+ col :imports, :type => :float
14
+ col :imports_units
15
+ col :consumption, :type => :float
16
+ col :consumption_units
17
+ end
@@ -0,0 +1,13 @@
1
+ EgridCountry.class_eval do
2
+ data_miner do
3
+ import "the US average grid loss factor derived eGRID 2007 data",
4
+ :url => 'http://www.epa.gov/cleanenergy/documents/egridzips/eGRID2010V1_1_STIE_USGC.xls',
5
+ :sheet => 'USGC',
6
+ :skip => 5 do
7
+ key 'name', :static => 'US'
8
+ store 'generation', :field_name => 'USTNGN07', :units => :gigawatt_hours
9
+ store 'imports', :field_name => 'USTNFI07', :units => :gigawatt_hours
10
+ store 'consumption', :field_name => 'USTCON07', :units => :gigawatt_hours
11
+ end
12
+ end
13
+ end
@@ -3,21 +3,9 @@ class EgridRegion < ActiveRecord::Base
3
3
 
4
4
  has_many :egrid_subregions, :foreign_key => 'egrid_region_name'
5
5
 
6
- # FIXME TODO someday should calculate this from eGRID data: (USTNGN05 + USTNFI05 - USTCON05) / USTNGN05
7
6
  falls_back_on :name => 'fallback',
8
- :loss_factor => 0.061879 # calculated using above formula 2/21/2011
7
+ :loss_factor => lambda { (EgridCountry.us.generation + EgridCountry.us.imports - EgridCountry.us.consumption) / EgridCountry.us.generation }
9
8
 
10
9
  col :name
11
10
  col :loss_factor, :type => :float
12
-
13
- # verify "Loss factor should be greater than zero and less than one" do
14
- # EgridRegion.all.each do |region|
15
- # unless region.loss_factor > 0 and region.loss_factor < 1
16
- # raise "Invalid loss factor for EgridRegion #{region.name}: #{region.loss_factor} (should be > 0 and < 1)"
17
- # end
18
- # end
19
- # end
20
-
21
- # FIXME TODO verify fallback loss factor
22
-
23
- end
11
+ end
@@ -1,23 +1,24 @@
1
1
  EgridRegion.class_eval do
2
2
  data_miner do
3
- import "eGRID regions and loss factors derived from eGRID 2007 data",
4
- :url => 'http://www.epa.gov/cleanenergy/documents/egridzips/eGRID2007_Version1-1.zip',
5
- :filename => 'eGRID2007_Version1-1/eGRID2007V1_1_year0504_STIE_USGC.xls',
6
- :sheet => 'STIE05',
3
+ import "eGRID 2010 regions and loss factors",
4
+ :url => 'http://www.epa.gov/cleanenergy/documents/egridzips/eGRID2010V1_1_STIE_USGC.xls',
5
+ :sheet => 'STIE07',
7
6
  :skip => 4,
8
- :select => lambda { |row| row['eGRID2007 2005 file State sequence number'].to_i.between?(1, 51) } do
7
+ :select => lambda { |row| row['eGRID2010 year 2007 file state sequence number'].to_i.between?(1, 51) } do
9
8
  key 'name', :field_name => 'Grid region (E=Eastern grid, W=Western grid, AK=Alaska, HI=Hawaii, TX=Texas)'
10
- store 'loss_factor', :field_name => '2005 grid gross loss factor'
9
+ store 'loss_factor', :field_name => 'Year 2007 grid gross loss factor'
11
10
  end
12
11
 
13
- # resurrected from a7bb363f10d951957dd051ff3cfb81c280f61151
14
- import "the US average grid loss factor derived eGRID 2007 data",
15
- :url => 'http://www.epa.gov/cleanenergy/documents/egridzips/eGRID2007_Version1-1.zip',
16
- :filename => 'eGRID2007_Version1-1/eGRID2007V1_1_year0504_STIE_USGC.xls',
17
- :sheet => 'USGC',
18
- :skip => 5 do
19
- key 'name', :static => 'US'
20
- store 'loss_factor', :synthesize => lambda { |row| (row['USTNGN05'].to_f + row['USTNFI05'].to_f - row['USTCON05'].to_f) / row['USTNGN05'].to_f }
12
+ # Need this for fallback loss_factor calculation
13
+ process "Ensure EgridCountry is populated" do
14
+ EgridCountry.run_data_miner!
15
+ end
16
+
17
+ # DEPRECATED but don't remove until confirmed that all emitters use EgridRegion.fallback rather than EgridRegion.find_by_abbreviation 'US'
18
+ process "Calculate national averages" do
19
+ us_average = find_or_create_by_name 'US'
20
+ us_average.loss_factor = (EgridCountry.us.generation + EgridCountry.us.imports - EgridCountry.us.consumption) / EgridCountry.us.generation
21
+ us_average.save!
21
22
  end
22
23
  end
23
24
  end
@@ -4,14 +4,8 @@ class EgridSubregion < ActiveRecord::Base
4
4
  has_many :zip_codes, :foreign_key => 'egrid_subregion_abbreviation'
5
5
  belongs_to :egrid_region, :foreign_key => 'egrid_region_name'
6
6
 
7
- class << self
8
- def fallback_egrid_region
9
- EgridRegion.fallback
10
- end
11
- end
12
-
13
7
  falls_back_on :name => 'fallback',
14
- :egrid_region => lambda { EgridSubregion.fallback_egrid_region },
8
+ :egrid_region => lambda { EgridRegion.fallback },
15
9
  :electricity_co2_emission_factor => lambda { weighted_average(:electricity_co2_emission_factor, :weighted_by => :net_generation) },
16
10
  :electricity_co2_emission_factor_units => 'kilograms_per_kilowatt_hour',
17
11
  :electricity_co2_biogenic_emission_factor => lambda { weighted_average(:electricity_co2_biogenic_emission_factor, :weighted_by => :net_generation) },
@@ -20,8 +14,8 @@ class EgridSubregion < ActiveRecord::Base
20
14
  :electricity_ch4_emission_factor_units => 'kilograms_co2e_per_kilowatt_hour',
21
15
  :electricity_n2o_emission_factor => lambda { weighted_average(:electricity_n2o_emission_factor, :weighted_by => :net_generation) },
22
16
  :electricity_n2o_emission_factor_units => 'kilograms_co2e_per_kilowatt_hour',
23
- :electricity_emission_factor => lambda { weighted_average(:electricity_emission_factor, :weighted_by => :net_generation) }, # DEPRECATED
24
- :electricity_emission_factor_units => 'kilograms_co2e_per_kilowatt_hour' # DEPRECATED
17
+ :electricity_emission_factor => lambda { weighted_average(:electricity_emission_factor, :weighted_by => :net_generation) },
18
+ :electricity_emission_factor_units => 'kilograms_co2e_per_kilowatt_hour'
25
19
 
26
20
  col :abbreviation
27
21
  col :name
@@ -39,59 +33,4 @@ class EgridSubregion < ActiveRecord::Base
39
33
  col :electricity_n2o_emission_factor_units
40
34
  col :electricity_emission_factor, :type => :float
41
35
  col :electricity_emission_factor_units
42
-
43
- # FIXME TODO verify egrid_region_name is found in EgridRegions
44
- # %w{ egrid_region_name }.each do |attribute|
45
- # verify "#{attribute.humanize} should never be missing" do
46
- # EgridSubregion.all.each do |subregion|
47
- # unless subregion.send("#{attribute}").present?
48
- # raise "Missing #{attribute.humanize.downcase} for EgridSubregion #{subregion.name}"
49
- # end
50
- # end
51
- # end
52
- # end
53
- #
54
- # ["net_generation",
55
- # "electricity_co2_emission_factor",
56
- # "electricity_ch4_emission_factor",
57
- # "electricity_n2o_emission_factor",
58
- # "electricity_emission_factor" ].each do |attribute|
59
- # verify "#{attribute.humanize} should be > 0" do
60
- # EgridSubregion.all.each do |subregion|
61
- # value = subregion.send(:"#{attribute}")
62
- # unless value > 0
63
- # raise "Invalid #{attribute.humanize.downcase} for EgridSubregion #{subregion.name}: #{value} (should be > 0)"
64
- # end
65
- # end
66
- # end
67
- # end
68
- #
69
- # verify "Electricity co2 biogenic emission factor should be 0" do
70
- # EgridSubregion.all.each do |subregion|
71
- # value = subregion.electricity_co2_biogenic_emission_factor
72
- # unless value == 0
73
- # raise "Invalid electricity co2 biogenic emission factor for EgridSubregion #{subregion.name}: #{value} (should be 0)"
74
- # end
75
- # end
76
- # end
77
- #
78
- # [["net_generation_units","megawatt_hours"],
79
- # ["electricity_co2_emission_factor_units","kilograms_per_kilowatt_hour"],
80
- # ["electricity_co2_biogenic_emission_factor_units","kilograms_per_kilowatt_hour"],
81
- # ["electricity_ch4_emission_factor_units","kilograms_co2e_per_kilowatt_hour"],
82
- # ["electricity_n2o_emission_factor_units","kilograms_co2e_per_kilowatt_hour"],
83
- # ["electricity_emission_factor_units","kilograms_co2e_per_kilowatt_hour"]].each do |pair|
84
- # attribute = pair[0]
85
- # proper_units = pair[1]
86
- # verify "#{attribute.humanize} should be #{proper_units.humanize.downcase}" do
87
- # EgridSubregion.all.each do |subregion|
88
- # units = subregion.send(:"#{attribute}")
89
- # unless units == proper_units
90
- # raise "Invalid #{attribute.humanize.downcase} for EgridSubregion #{subregion.name}: #{units} (should be #{proper_units})"
91
- # end
92
- # end
93
- # end
94
- # end
95
-
96
- # FIXME TODO verify fallbacks
97
36
  end
@@ -1,33 +1,47 @@
1
1
  EgridSubregion.class_eval do
2
2
  data_miner do
3
- # FIXME TODO for some reason this doesn't work...
4
- # import "eGRID regions and electricity emission factors derived from eGRID 2007 data",
5
- # :url => 'http://www.epa.gov/cleanenergy/documents/egridzips/eGRID2007_Version1-1.zip',
6
- # :filename => 'eGRID2007_Version1-1/eGRID2007V1_1_year05_aggregation.xls',
7
- # :sheet => 'SRL05',
8
- # :skip => 3,
9
- # :select => lambda { |row| row['eGRID2007 2005 file eGRID subregion location (operator)-based sequence number'].to_i.between?(1, 26) } do
10
- # key 'abbreviation', :field_name => 'eGRID subregion acronym'
11
- # store 'name', :field_name => 'eGRID subregion name associated with eGRID subregion acronym'
12
- # store 'nerc_abbreviation', :field_name => 'NERC region acronym associated with the eGRID subregion acronym'
13
- # store 'net_generation', :field_name => 'eGRID subregion annual net generation (MWh)', :units => 'megawatt_hours'
14
- # store 'electricity_co2_emission_factor', :field_name => 'eGRID subregion annual CO2 output emission rate (lb/MWh)', :units => 'pounds_per_megawatt_hour'
15
- # store 'electricity_co2_biogenic_emission_factor', :static => '0.0', :units => 'kilograms_per_kilowatt_hour'
16
- # store 'electricity_ch4_emission_factor', :field_name => 'eGRID subregion annual CH4 output emission rate (lb/GWh)', :units => 'pounds_per_gigawatt_hour'
17
- # store 'electricity_n2o_emission_factor', :field_name => 'eGRID subregion annual N2O output emission rate (lb/GWh)', :units => 'pounds_per_gigawatt_hour'
18
- # end
3
+ import "eGRID 2010 subregions and electricity emission factors",
4
+ :url => 'http://www.epa.gov/cleanenergy/documents/egridzips/eGRID2010_Version1-1_xls_only.zip',
5
+ :filename => 'eGRID2010V1_1_year07_AGGREGATION.xls',
6
+ :sheet => 'SRL07',
7
+ :skip => 4,
8
+ :select => lambda { |row| row['SEQSRL07'].to_i.between?(1, 26) } do
9
+ key 'abbreviation', :field_name => 'SUBRGN'
10
+ store 'name', :field_name => 'SRNAME'
11
+ store 'nerc_abbreviation', :field_name => 'NERC'
12
+ store 'net_generation', :field_name => 'SRNGENAN', :units => :megawatt_hours
13
+ store 'electricity_co2_emission_factor', :field_name => 'SRCO2RTA', :units => :pounds_per_megawatt_hour
14
+ store 'electricity_co2_biogenic_emission_factor', :static => '0.0', :units => :kilograms_per_kilowatt_hour
15
+ store 'electricity_ch4_emission_factor', :field_name => 'SRCH4RTA', :units => :pounds_per_gigawatt_hour
16
+ store 'electricity_n2o_emission_factor', :field_name => 'SRN2ORTA', :units => :pounds_per_gigawatt_hour
17
+ end
19
18
 
20
- import "eGRID subregion data",
21
- :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGRORTJNSWRMQ1puRVprYlAtZHhDaFE&hl=en&gid=0&output=csv' do
19
+ # FIXME TODO once 'US' subregion is no longer needed remove it from this source file
20
+ import "eGRID subregion to region associations",
21
+ :url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGRORTJNSWRMQ1puRVprYlAtZHhDaFE&output=csv' do
22
22
  key 'abbreviation'
23
- store 'name'
24
- store 'nerc_abbreviation'
25
23
  store 'egrid_region_name'
26
- store 'net_generation', :units => 'megawatt_hours'
27
- store 'electricity_co2_emission_factor', :field_name => 'electricty_ef_co2', :units => 'pounds_per_megawatt_hour'
28
- store 'electricity_co2_biogenic_emission_factor', :static => '0.0', :units => 'kilograms_per_kilowatt_hour'
29
- store 'electricity_ch4_emission_factor', :field_name => 'electricity_ef_ch4', :units => 'pounds_per_gigawatt_hour'
30
- store 'electricity_n2o_emission_factor', :field_name => 'electricity_ef_n2o', :units => 'pounds_per_gigawatt_hour'
24
+ end
25
+
26
+ # DEPRECATED but don't remove until confirmed that all emitters use EgridSubregion.fallback rather than EgridSubregion.find_by_abbreviation 'US'
27
+ process "Calculate national averages" do
28
+ us_average = find_by_abbreviation 'US'
29
+ subregions = where("abbreviation != 'US'")
30
+
31
+ us_average.name = 'United States'
32
+ us_average.nerc_abbreviation = 'US'
33
+ us_average.egrid_region_name = 'US'
34
+ us_average.net_generation = subregions.sum(:net_generation)
35
+ us_average.electricity_co2_emission_factor = subregions.weighted_average(:electricity_co2_emission_factor, :weighted_by => :net_generation)
36
+ us_average.electricity_co2_biogenic_emission_factor = subregions.weighted_average(:electricity_co2_biogenic_emission_factor, :weighted_by => :net_generation)
37
+ us_average.electricity_ch4_emission_factor = subregions.weighted_average(:electricity_ch4_emission_factor, :weighted_by => :net_generation)
38
+ us_average.electricity_n2o_emission_factor = subregions.weighted_average(:electricity_n2o_emission_factor, :weighted_by => :net_generation)
39
+ us_average.net_generation_units = 'megawatt_hours'
40
+ us_average.electricity_co2_emission_factor_units = 'pounds_per_megawatt_hour'
41
+ us_average.electricity_co2_biogenic_emission_factor_units = 'kilograms_per_kilowatt_hour'
42
+ us_average.electricity_ch4_emission_factor_units = 'pounds_per_gigawatt_hour'
43
+ us_average.electricity_n2o_emission_factor_units = 'pounds_per_gigawatt_hour'
44
+ us_average.save!
31
45
  end
32
46
 
33
47
  process "Convert co2 emission factor to metric units" do
@@ -1,3 +1,4 @@
1
+ # FIXME TODO try to clean up this data
1
2
  ZipCode.class_eval do
2
3
  # sabshere 9/20/10 this isn't called anywhere
3
4
  # def set_latitude_and_longitude
data/lib/earth/rail.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'earth/rail/country_rail_traction'
2
+ require 'earth/rail/country_rail_class'
3
+ require 'earth/rail/country_rail_traction_class'
1
4
  require 'earth/rail/rail_company'
2
5
  require 'earth/rail/rail_company_traction'
3
6
  require 'earth/rail/rail_company_traction_class'
@@ -7,3 +10,6 @@ require 'earth/rail/rail_traction'
7
10
  require 'earth/rail/national_transit_database_company'
8
11
  require 'earth/rail/national_transit_database_mode'
9
12
  require 'earth/rail/national_transit_database_record'
13
+
14
+ require 'earth/fuel'
15
+ require 'earth/locality' # eGRID needed for US electricity emission factor in RailCompany import
File without changes
@@ -1,3 +1,6 @@
1
+ require 'earth/rail/country_rail_traction/data_miner'
2
+ require 'earth/rail/country_rail_class/data_miner'
3
+ require 'earth/rail/country_rail_traction_class/data_miner'
1
4
  require 'earth/rail/rail_class/data_miner'
2
5
  require 'earth/rail/rail_company/data_miner'
3
6
  require 'earth/rail/rail_company_traction/data_miner'
@@ -8,3 +11,6 @@ require 'earth/rail/rail_traction/data_miner'
8
11
  require 'earth/rail/national_transit_database_company/data_miner'
9
12
  require 'earth/rail/national_transit_database_mode/data_miner'
10
13
  require 'earth/rail/national_transit_database_record/data_miner'
14
+
15
+ require 'earth/fuel/data_miner'
16
+ require 'earth/locality/data_miner' # eGRID needed for US electricity emission factor in RailCompany import
@@ -12,6 +12,7 @@ NationalTransitDatabaseRecord.class_eval do
12
12
  store 'passengers'
13
13
  end
14
14
 
15
+ # FIXME TODO electricity synthesization should return NULL rather than 0
15
16
  import "US National Transit Database fuel consumption data",
16
17
  :url => 'https://docs.google.com/spreadsheet/pub?key=0AoQJbWqPrREqdDItVVR5NjA2Y3FCVjgza25Ccy0zS2c&output=csv' do
17
18
  key 'name', :synthesize => lambda { |row| [row['trs_id'], row['mode_code'], row['service_code']].join(' ') }
@@ -29,7 +29,7 @@ RailCompany.class_eval do
29
29
 
30
30
  process "Derive US transit rail company data from the National Transit Database" do
31
31
  NationalTransitDatabaseCompany.rail_companies.each do |ntd_company|
32
- company = RailCompany.find_or_create_by_name(ntd_company.name)
32
+ company = find_or_create_by_name(ntd_company.name)
33
33
  company.country_iso_3166_code = 'US'
34
34
  company.duns_number = ntd_company.duns_number
35
35
  company.passengers = ntd_company.rail_passengers
@@ -55,7 +55,7 @@ RailCompany.class_eval do
55
55
  end
56
56
 
57
57
  process "Calculate average trip distance" do
58
- RailCompany.find_each do |company|
58
+ find_each do |company|
59
59
  if company.passenger_distance.present? and company.passengers.present? and company.passengers > 0
60
60
  company.trip_distance = company.passenger_distance / company.passengers
61
61
  company.trip_distance_units = company.passenger_distance_units
@@ -65,7 +65,7 @@ RailCompany.class_eval do
65
65
  end
66
66
 
67
67
  process "Calculate average trip speed" do
68
- RailCompany.find_each do |company|
68
+ find_each do |company|
69
69
  if company.train_distance.present? and company.train_time.present? and company.train_time > 0
70
70
  company.speed = company.train_distance / company.train_time
71
71
  company.speed_units = "#{company.train_distance_units}_per_#{company.train_time_units.singularize}"
@@ -74,12 +74,13 @@ RailCompany.class_eval do
74
74
  end
75
75
  end
76
76
 
77
- process "Ensure RailFuel is populated" do
77
+ process "Ensure RailFuel and EgridSubregion are populated" do
78
78
  RailFuel.run_data_miner!
79
+ EgridSubregion.run_data_miner!
79
80
  end
80
81
 
81
82
  process "Calculate co2 emission factor for US rail companies" do
82
- RailCompany.where(:country_iso_3166_code => 'US').find_each do |company|
83
+ where(:country_iso_3166_code => 'US').find_each do |company|
83
84
  company.co2_emission_factor = 0
84
85
 
85
86
  if company.diesel_intensity.present?
@@ -6,5 +6,4 @@ require 'earth/residence/residence_class'
6
6
  require 'earth/residence/residence_fuel_price'
7
7
  require 'earth/residence/residence_fuel_type'
8
8
  require 'earth/residence/residential_energy_consumption_survey_response'
9
-
10
- require 'earth/locality'
9
+ require 'earth/residence/urbanity'
@@ -6,5 +6,4 @@ require 'earth/residence/residence_class/data_miner'
6
6
  require 'earth/residence/residence_fuel_price/data_miner'
7
7
  require 'earth/residence/residence_fuel_type/data_miner'
8
8
  require 'earth/residence/residential_energy_consumption_survey_response/data_miner'
9
-
10
- require 'earth/locality/data_miner'
9
+ require 'earth/residence/urbanity/data_miner'
@@ -12,7 +12,7 @@ class ResidenceFuelType < ActiveRecord::Base
12
12
  def price_per_unit(relaxations = [])
13
13
  conditions = { :residence_fuel_type_name => self }
14
14
  relaxations.push Hash.new
15
- relaxations.grab do |relaxation|
15
+ relaxations.each do |relaxation|
16
16
  relaxation_conditions = Hash.new
17
17
  if timeframe = relaxation[:timeframe]
18
18
  relaxation_conditions[:year] = timeframe.from.year
@@ -22,8 +22,11 @@ class ResidenceFuelType < ActiveRecord::Base
22
22
  relaxation_conditions[:locatable_type] = location.class.to_s
23
23
  relaxation_conditions[:locatable_id] = location.id
24
24
  end
25
- ResidenceFuelPrice.average :price, :conditions => conditions.merge(relaxation_conditions)
25
+ if non_nil_result = ResidenceFuelPrice.average(:price, :conditions => conditions.merge(relaxation_conditions))
26
+ return non_nil_result
27
+ end
26
28
  end
29
+ nil
27
30
  end
28
31
 
29
32
  class << self
File without changes
data/lib/earth/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Earth
2
- VERSION = "0.11.0"
2
+ VERSION = "0.11.1"
3
3
  end
data/spec/earth_spec.rb CHANGED
@@ -23,7 +23,7 @@ describe Earth do
23
23
  describe '.resource_map' do
24
24
  it 'should get a list of resource_map' do
25
25
  resource_map = Earth.resource_map
26
- resource_map.keys.count.should == 88
26
+ resource_map.keys.count.should == 91
27
27
  resource_map['FuelType'].should == 'fuel'
28
28
  end
29
29
  it 'should exclude data_miner files' do
@@ -33,7 +33,7 @@ describe Earth do
33
33
 
34
34
  describe '.search' do
35
35
  it 'should get a list of all resource names' do
36
- Earth.search.length.should == 88
36
+ Earth.search.length.should == 91
37
37
  Earth.search.should include('Aircraft')
38
38
  Earth.search.should include('Industry')
39
39
  end
@@ -44,12 +44,12 @@ describe Earth do
44
44
  Earth.search('computation').length.should == 3
45
45
  Earth.search('diet').length.should == 2
46
46
  Earth.search('fuel').length.should == 5
47
- Earth.search('hospitality').length.should == 1
47
+ Earth.search('hospitality').length.should == 3
48
48
  Earth.search('industry').length.should == 10
49
- Earth.search('locality').length.should == 13
49
+ Earth.search('locality').length.should == 10
50
50
  Earth.search('pet').length.should == 4
51
- Earth.search('rail').length.should == 9
52
- Earth.search('residence').length.should == 8
51
+ Earth.search('rail').length.should == 12
52
+ Earth.search('residence').length.should == 9
53
53
  Earth.search('shipping').length.should == 3
54
54
  Earth.search('fuel').should include('FuelType')
55
55
  end