earth 0.4.4 → 0.4.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +1 -1
- data/Rakefile +44 -16
- data/earth.gemspec +4 -8
- data/features/automobile_make_model_year_variant.feature +4 -4
- data/features/step_definitions/data_steps.rb +32 -0
- data/features/support/env.rb +6 -3
- data/features/support/imports/automobile_make_model_year_variant_bad.csv +1 -1
- data/features/support/imports/automobile_make_model_year_variant_good.csv +1 -1
- data/lib/earth/air/aircraft/data_miner.rb +1 -1
- data/lib/earth/air/aircraft_class/data_miner.rb +1 -1
- data/lib/earth/air/flight_distance_class/data_miner.rb +1 -1
- data/lib/earth/air/flight_seat_class/data_miner.rb +2 -2
- data/lib/earth/automobile/automobile_fuel/data_miner.rb +9 -2
- data/lib/earth/automobile/automobile_make/data_miner.rb +1 -1
- data/lib/earth/automobile/automobile_make_fleet_year/data_miner.rb +1 -1
- data/lib/earth/automobile/automobile_make_model_year_variant/data_miner.rb +2 -16
- data/lib/earth/automobile/automobile_make_model_year_variant.rb +0 -1
- data/lib/earth/automobile/automobile_size_class/data_miner.rb +2 -2
- data/lib/earth/automobile/automobile_size_class_year/data_miner.rb +1 -1
- data/lib/earth/automobile/automobile_type_fuel_control/data_miner.rb +1 -1
- data/lib/earth/automobile/automobile_type_fuel_year/data_miner.rb +1 -1
- data/lib/earth/automobile/automobile_type_fuel_year_control/data_miner.rb +1 -1
- data/lib/earth/automobile/automobile_type_year/data_miner.rb +1 -1
- data/lib/earth/automobile/data_miner.rb +0 -1
- data/lib/earth/automobile.rb +0 -1
- data/lib/earth/bus/bus_class/data_miner.rb +1 -1
- data/lib/earth/bus/bus_fuel/data_miner.rb +3 -3
- data/lib/earth/bus/bus_fuel_control/data_miner.rb +1 -1
- data/lib/earth/bus/bus_fuel_year_control/data_miner.rb +1 -1
- data/lib/earth/computation/computation_platform/data_miner.rb +1 -1
- data/lib/earth/computation/data_center_company/data_miner.rb +1 -1
- data/lib/earth/computation/server_type/data_miner.rb +1 -1
- data/lib/earth/computation/server_type_alias/data_miner.rb +1 -1
- data/lib/earth/diet/food_group/data_miner.rb +1 -1
- data/lib/earth/fuel/fuel/data_miner.rb +2 -2
- data/lib/earth/fuel/fuel_price/data_miner.rb +1 -1
- data/lib/earth/fuel/fuel_type/data_miner.rb +1 -1
- data/lib/earth/fuel/fuel_year/data_miner.rb +1 -1
- data/lib/earth/fuel/greenhouse_gas/data_miner.rb +1 -1
- data/lib/earth/hospitality/lodging_class/data_miner.rb +1 -1
- data/lib/earth/locality/census_division/data_miner.rb +2 -2
- data/lib/earth/locality/country/data_miner.rb +1 -1
- data/lib/earth/locality/egrid_subregion/data_miner.rb +1 -1
- data/lib/earth/locality/petroleum_administration_for_defense_district/data_miner.rb +1 -1
- data/lib/earth/locality/state/data_miner.rb +1 -1
- data/lib/earth/rail/rail_class/data_miner.rb +1 -1
- data/lib/earth/residence/air_conditioner_use/data_miner.rb +1 -1
- data/lib/earth/residence/residence_fuel_type/data_miner.rb +1 -1
- data/lib/earth/shipping/carrier/data_miner.rb +1 -1
- data/lib/earth/shipping/carrier_mode/data_miner.rb +1 -1
- data/lib/earth/shipping/shipment_mode/data_miner.rb +1 -1
- data/lib/earth/version.rb +1 -1
- data/spec/earth_spec.rb +2 -2
- metadata +38 -116
- data/features/automobile_fuel_type.feature +0 -34
- data/features/support/imports/automobile_fuel_type_bad.csv +0 -3
- data/features/support/imports/automobile_fuel_type_good.csv +0 -3
- data/lib/earth/automobile/automobile_fuel_type/data_miner.rb +0 -115
- data/lib/earth/automobile/automobile_fuel_type.rb +0 -17
@@ -3,7 +3,7 @@ LodgingClass.class_eval do
|
|
3
3
|
LodgingClass.define_schema(self)
|
4
4
|
|
5
5
|
import "a list of lodging classes and pre-calculated emission factors",
|
6
|
-
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGZZWmZtWEJlYzhRNXlPdWpBTldlcUE&hl=en&output=csv' do
|
6
|
+
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGZZWmZtWEJlYzhRNXlPdWpBTldlcUE&hl=en&gid=0&output=csv' do
|
7
7
|
key 'name'
|
8
8
|
store 'natural_gas_intensity', :units_field_name => 'natural_gas_intensity_units'
|
9
9
|
store 'fuel_oil_intensity', :units_field_name => 'fuel_oil_intensity_units'
|
@@ -44,7 +44,7 @@ CensusDivision.class_eval do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
import 'meeting building fuel intensities calculated from CBECS 2003',
|
47
|
-
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGotdjgtUEk0eUU0R3lxM1hHdlF1V0E&hl=en&output=csv' do
|
47
|
+
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGotdjgtUEk0eUU0R3lxM1hHdlF1V0E&hl=en&gid=0&output=csv' do
|
48
48
|
key 'number', :field_name => 'census_division'
|
49
49
|
store 'meeting_building_natural_gas_intensity', :from_units => :hundred_cubic_feet_per_square_foot_hour, :to_units => :cubic_metres_per_square_metre_hour
|
50
50
|
store 'meeting_building_fuel_oil_intensity', :from_units => :gallons_per_square_foot_hour, :to_units => :litres_per_square_metre_hour
|
@@ -53,7 +53,7 @@ CensusDivision.class_eval do
|
|
53
53
|
end
|
54
54
|
|
55
55
|
import 'lodging building fuel intensities calculated from CBECS 2003',
|
56
|
-
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHZ1QjdNTGVpbWxmZDVLbjlpTHlFVHc&hl=en&output=csv' do
|
56
|
+
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHZ1QjdNTGVpbWxmZDVLbjlpTHlFVHc&hl=en&gid=0&output=csv' do
|
57
57
|
key 'number', :field_name => 'census_division'
|
58
58
|
store 'lodging_building_natural_gas_intensity', :from_units => :hundred_cubic_feet_per_room_night, :to_units => :cubic_metres_per_room_night
|
59
59
|
store 'lodging_building_fuel_oil_intensity', :from_units => :gallons_per_room_night, :to_units => :litres_per_room_night
|
@@ -17,7 +17,7 @@ Country.class_eval do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
import "country-specific flight route inefficiency factors derived from Kettunen et al. (2005)",
|
20
|
-
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEJoRVBZaGhnUmlhX240VXE3X0F3WkE&output=csv' do
|
20
|
+
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdEJoRVBZaGhnUmlhX240VXE3X0F3WkE&gid=0&output=csv' do
|
21
21
|
key 'iso_3166_code'
|
22
22
|
store 'flight_route_inefficiency_factor'
|
23
23
|
end
|
@@ -37,7 +37,7 @@ EgridSubregion.class_eval do
|
|
37
37
|
# end
|
38
38
|
|
39
39
|
import "eGRID subregion data",
|
40
|
-
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGRORTJNSWRMQ1puRVprYlAtZHhDaFE&hl=en&
|
40
|
+
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGRORTJNSWRMQ1puRVprYlAtZHhDaFE&hl=en&gid=0&output=csv' do
|
41
41
|
key 'abbreviation'
|
42
42
|
store 'name'
|
43
43
|
store 'nerc_abbreviation'
|
@@ -9,7 +9,7 @@ PetroleumAdministrationForDefenseDistrict.class_eval do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
import "a list of PADD districts and states derived from the EIA PADD definitions",
|
12
|
-
:url => 'http://spreadsheets.google.com/pub?key=t5HM1KbaRngmTUbntg8JwPA' do
|
12
|
+
:url => 'http://spreadsheets.google.com/pub?key=t5HM1KbaRngmTUbntg8JwPA&gid=0&output=csv' do
|
13
13
|
key 'code', :field_name => 'Code'
|
14
14
|
store 'district_code', :field_name => 'PAD district code'
|
15
15
|
store 'subdistrict_code', :field_name => 'PAD subdistrict code'
|
@@ -28,7 +28,7 @@ State.class_eval do
|
|
28
28
|
|
29
29
|
# PADD
|
30
30
|
import 'a list of state Petroleum Administration for Defense Districts',
|
31
|
-
:url => 'http://spreadsheets.google.com/pub?key=t5HM1KbaRngmTUbntg8JwPA' do
|
31
|
+
:url => 'http://spreadsheets.google.com/pub?key=t5HM1KbaRngmTUbntg8JwPA&gid=0&output=csv' do
|
32
32
|
key 'postal_abbreviation', :field_name => 'State'
|
33
33
|
store 'petroleum_administration_for_defense_district_code', :field_name => 'Code'
|
34
34
|
end
|
@@ -19,7 +19,7 @@ RailClass.class_eval do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
import "a list of rail classes and pre-calculated trip and fuel use characteristics",
|
22
|
-
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHRYaDNvRXMtZGoxNmRiOHlNWGV6b2c&hl=en&
|
22
|
+
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdHRYaDNvRXMtZGoxNmRiOHlNWGV6b2c&hl=en&gid=0&output=csv' do
|
23
23
|
key 'name'
|
24
24
|
store 'description'
|
25
25
|
store 'passengers'
|
@@ -13,7 +13,7 @@ AirConditionerUse.class_eval do
|
|
13
13
|
}
|
14
14
|
end
|
15
15
|
|
16
|
-
import "Ian's precalculated fugitive emissions values", :url => 'http://spreadsheets.google.com/pub?key=ri_380yQZAqBKeqie_TECgg' do
|
16
|
+
import "Ian's precalculated fugitive emissions values", :url => 'http://spreadsheets.google.com/pub?key=ri_380yQZAqBKeqie_TECgg&gid=0&output=csv' do
|
17
17
|
key 'name', :field_name => 'air_conditioner_use_name'
|
18
18
|
store 'fugitive_emission', :units_field_name => 'unit', :to_units => :kilograms_per_square_metre
|
19
19
|
end
|
@@ -9,7 +9,7 @@ ResidenceFuelType.class_eval do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
import "a list of residential fuels and their emissions factors",
|
12
|
-
:url => 'http://spreadsheets.google.com/pub?key=rukxnmuhhsOsrztTrUaFCXQ' do
|
12
|
+
:url => 'http://spreadsheets.google.com/pub?key=rukxnmuhhsOsrztTrUaFCXQ&gid=0&output=csv' do
|
13
13
|
key 'name'
|
14
14
|
store 'emission_factor', :field_name => 'emission_factor', :units_field_name => 'units'
|
15
15
|
end
|
@@ -11,7 +11,7 @@ Carrier.class_eval do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
import "a list of shipping companies and their characteristics",
|
14
|
-
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdG1ONU1HZDdZTFJNclFYVkRzR0k5Z2c&hl=en&
|
14
|
+
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdG1ONU1HZDdZTFJNclFYVkRzR0k5Z2c&hl=en&gid=0&output=csv' do
|
15
15
|
key 'name'
|
16
16
|
store 'package_volume'
|
17
17
|
store 'route_inefficiency_factor'
|
@@ -11,7 +11,7 @@ CarrierMode.class_eval do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
import "a list of carrier modes and their characteristics",
|
14
|
-
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGRsRkJOd0NPd0FETTI0NmpYUlBsN2c&hl=en&
|
14
|
+
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGRsRkJOd0NPd0FETTI0NmpYUlBsN2c&hl=en&gid=0&output=csv' do
|
15
15
|
key 'name'
|
16
16
|
store 'carrier_name'
|
17
17
|
store 'mode_name'
|
@@ -8,7 +8,7 @@ ShipmentMode.class_eval do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
import "a list of shipment modes and their characteristics",
|
11
|
-
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGR2a2RYcEg2RnRKbkRQcXc0ZkQ5U0E&hl=en&
|
11
|
+
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdGR2a2RYcEg2RnRKbkRQcXc0ZkQ5U0E&hl=en&gid=0&output=csv' do
|
12
12
|
key 'name'
|
13
13
|
store 'route_inefficiency_factor'
|
14
14
|
store 'transport_emission_factor', :units_field_name => 'transport_emission_factor_units'
|
data/lib/earth/version.rb
CHANGED
data/spec/earth_spec.rb
CHANGED
@@ -23,7 +23,7 @@ describe Earth do
|
|
23
23
|
describe '.resources' do
|
24
24
|
it 'should get a list of resources' do
|
25
25
|
resources = Earth.resources
|
26
|
-
resources.keys.count.should ==
|
26
|
+
resources.keys.count.should == 76
|
27
27
|
resources['FuelType'][:domain].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 '.resource_names' do
|
35
35
|
it 'should get a list of all resource names' do
|
36
|
-
Earth.resource_names.count.should ==
|
36
|
+
Earth.resource_names.count.should == 76
|
37
37
|
Earth.resource_names.should include('Aircraft')
|
38
38
|
Earth.resource_names.should include('Industry')
|
39
39
|
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: earth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 7
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
8
|
+
- 5
|
9
|
+
version: 0.4.5
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Seamus Abshere
|
@@ -17,179 +16,110 @@ autorequire:
|
|
17
16
|
bindir: bin
|
18
17
|
cert_chain: []
|
19
18
|
|
20
|
-
date: 2011-
|
19
|
+
date: 2011-03-04 00:00:00 -05:00
|
21
20
|
default_executable:
|
22
21
|
dependencies:
|
23
22
|
- !ruby/object:Gem::Dependency
|
23
|
+
name: activerecord
|
24
24
|
prerelease: false
|
25
|
-
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
26
|
none: false
|
27
27
|
requirements:
|
28
28
|
- - ~>
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
hash: 5
|
31
30
|
segments:
|
32
31
|
- 3
|
33
32
|
version: "3"
|
34
|
-
requirement: *id001
|
35
|
-
name: activerecord
|
36
33
|
type: :runtime
|
34
|
+
version_requirements: *id001
|
37
35
|
- !ruby/object:Gem::Dependency
|
36
|
+
name: cohort_scope
|
38
37
|
prerelease: false
|
39
|
-
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
39
|
none: false
|
41
40
|
requirements:
|
42
|
-
- -
|
41
|
+
- - ">="
|
43
42
|
- !ruby/object:Gem::Version
|
44
|
-
hash: 17
|
45
43
|
segments:
|
46
|
-
-
|
47
|
-
-
|
48
|
-
-
|
49
|
-
version:
|
50
|
-
requirement: *id002
|
51
|
-
name: data_miner
|
44
|
+
- 0
|
45
|
+
- 0
|
46
|
+
- 7
|
47
|
+
version: 0.0.7
|
52
48
|
type: :runtime
|
49
|
+
version_requirements: *id002
|
53
50
|
- !ruby/object:Gem::Dependency
|
51
|
+
name: data_miner
|
54
52
|
prerelease: false
|
55
|
-
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
56
54
|
none: false
|
57
55
|
requirements:
|
58
|
-
- -
|
56
|
+
- - ~>
|
59
57
|
- !ruby/object:Gem::Version
|
60
|
-
hash: 3
|
61
58
|
segments:
|
62
|
-
-
|
63
|
-
|
64
|
-
|
65
|
-
|
59
|
+
- 1
|
60
|
+
- 1
|
61
|
+
- 1
|
62
|
+
version: 1.1.1
|
66
63
|
type: :runtime
|
64
|
+
version_requirements: *id003
|
67
65
|
- !ruby/object:Gem::Dependency
|
66
|
+
name: falls_back_on
|
68
67
|
prerelease: false
|
69
|
-
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
70
69
|
none: false
|
71
70
|
requirements:
|
72
71
|
- - ">="
|
73
72
|
- !ruby/object:Gem::Version
|
74
|
-
hash: 25
|
75
73
|
segments:
|
76
74
|
- 0
|
77
75
|
- 0
|
78
76
|
- 3
|
79
77
|
version: 0.0.3
|
80
|
-
requirement: *id004
|
81
|
-
name: falls_back_on
|
82
|
-
type: :runtime
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
prerelease: false
|
85
|
-
version_requirements: &id005 !ruby/object:Gem::Requirement
|
86
|
-
none: false
|
87
|
-
requirements:
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
hash: 3
|
91
|
-
segments:
|
92
|
-
- 1
|
93
|
-
- 5
|
94
|
-
- 0
|
95
|
-
version: 1.5.0
|
96
|
-
requirement: *id005
|
97
|
-
name: geokit
|
98
78
|
type: :runtime
|
79
|
+
version_requirements: *id004
|
99
80
|
- !ruby/object:Gem::Dependency
|
81
|
+
name: geokit-rails
|
100
82
|
prerelease: false
|
101
|
-
|
83
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
102
84
|
none: false
|
103
85
|
requirements:
|
104
86
|
- - ">="
|
105
87
|
- !ruby/object:Gem::Version
|
106
|
-
hash: 3
|
107
88
|
segments:
|
108
89
|
- 0
|
109
90
|
version: "0"
|
110
|
-
requirement: *id006
|
111
|
-
name: geokit-rails
|
112
91
|
type: :runtime
|
92
|
+
version_requirements: *id005
|
113
93
|
- !ruby/object:Gem::Dependency
|
94
|
+
name: loose_tight_dictionary
|
114
95
|
prerelease: false
|
115
|
-
|
96
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
116
97
|
none: false
|
117
98
|
requirements:
|
118
99
|
- - ">="
|
119
100
|
- !ruby/object:Gem::Version
|
120
|
-
hash: 17
|
121
101
|
segments:
|
122
102
|
- 0
|
123
103
|
- 0
|
124
|
-
-
|
125
|
-
version: 0.0.
|
126
|
-
requirement: *id007
|
127
|
-
name: cohort_scope
|
128
|
-
type: :runtime
|
129
|
-
- !ruby/object:Gem::Dependency
|
130
|
-
prerelease: false
|
131
|
-
version_requirements: &id008 !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
|
-
requirements:
|
134
|
-
- - ">="
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
hash: 13
|
137
|
-
segments:
|
138
|
-
- 1
|
139
|
-
- 4
|
140
|
-
- 5
|
141
|
-
version: 1.4.5
|
142
|
-
requirement: *id008
|
143
|
-
name: conversions
|
104
|
+
- 8
|
105
|
+
version: 0.0.8
|
144
106
|
type: :runtime
|
107
|
+
version_requirements: *id006
|
145
108
|
- !ruby/object:Gem::Dependency
|
109
|
+
name: weighted_average
|
146
110
|
prerelease: false
|
147
|
-
|
111
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
148
112
|
none: false
|
149
113
|
requirements:
|
150
114
|
- - ">="
|
151
115
|
- !ruby/object:Gem::Version
|
152
|
-
hash: 23
|
153
116
|
segments:
|
154
117
|
- 0
|
155
118
|
- 0
|
156
119
|
- 4
|
157
120
|
version: 0.0.4
|
158
|
-
requirement: *id009
|
159
|
-
name: weighted_average
|
160
121
|
type: :runtime
|
161
|
-
|
162
|
-
prerelease: false
|
163
|
-
version_requirements: &id010 !ruby/object:Gem::Requirement
|
164
|
-
none: false
|
165
|
-
requirements:
|
166
|
-
- - ">="
|
167
|
-
- !ruby/object:Gem::Version
|
168
|
-
hash: 15
|
169
|
-
segments:
|
170
|
-
- 0
|
171
|
-
- 0
|
172
|
-
- 8
|
173
|
-
version: 0.0.8
|
174
|
-
requirement: *id010
|
175
|
-
name: loose_tight_dictionary
|
176
|
-
type: :runtime
|
177
|
-
- !ruby/object:Gem::Dependency
|
178
|
-
prerelease: false
|
179
|
-
version_requirements: &id011 !ruby/object:Gem::Requirement
|
180
|
-
none: false
|
181
|
-
requirements:
|
182
|
-
- - ~>
|
183
|
-
- !ruby/object:Gem::Version
|
184
|
-
hash: 5
|
185
|
-
segments:
|
186
|
-
- 0
|
187
|
-
- 6
|
188
|
-
- 1
|
189
|
-
version: 0.6.1
|
190
|
-
requirement: *id011
|
191
|
-
name: sniff
|
192
|
-
type: :development
|
122
|
+
version_requirements: *id007
|
193
123
|
description: An earth-simulation environment with ActiveRecord models and data
|
194
124
|
email: andy@rossmeissl.net
|
195
125
|
executables: []
|
@@ -210,7 +140,6 @@ files:
|
|
210
140
|
- Rakefile
|
211
141
|
- earth.gemspec
|
212
142
|
- features/automobile_fuel.feature
|
213
|
-
- features/automobile_fuel_type.feature
|
214
143
|
- features/automobile_make.feature
|
215
144
|
- features/automobile_make_fleet_year.feature
|
216
145
|
- features/automobile_make_model.feature
|
@@ -240,11 +169,10 @@ files:
|
|
240
169
|
- features/server_type.feature
|
241
170
|
- features/server_type_alias.feature
|
242
171
|
- features/shipment_mode.feature
|
172
|
+
- features/step_definitions/data_steps.rb
|
243
173
|
- features/support/env.rb
|
244
174
|
- features/support/imports/automobile_fuel_bad.csv
|
245
175
|
- features/support/imports/automobile_fuel_good.csv
|
246
|
-
- features/support/imports/automobile_fuel_type_bad.csv
|
247
|
-
- features/support/imports/automobile_fuel_type_good.csv
|
248
176
|
- features/support/imports/automobile_make_bad.csv
|
249
177
|
- features/support/imports/automobile_make_fleet_year_bad.csv
|
250
178
|
- features/support/imports/automobile_make_fleet_year_good.csv
|
@@ -329,8 +257,6 @@ files:
|
|
329
257
|
- lib/earth/automobile.rb
|
330
258
|
- lib/earth/automobile/automobile_fuel.rb
|
331
259
|
- lib/earth/automobile/automobile_fuel/data_miner.rb
|
332
|
-
- lib/earth/automobile/automobile_fuel_type.rb
|
333
|
-
- lib/earth/automobile/automobile_fuel_type/data_miner.rb
|
334
260
|
- lib/earth/automobile/automobile_make.rb
|
335
261
|
- lib/earth/automobile/automobile_make/data_miner.rb
|
336
262
|
- lib/earth/automobile/automobile_make_fleet_year.rb
|
@@ -544,7 +470,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
544
470
|
requirements:
|
545
471
|
- - ">="
|
546
472
|
- !ruby/object:Gem::Version
|
547
|
-
hash: 3
|
548
473
|
segments:
|
549
474
|
- 0
|
550
475
|
version: "0"
|
@@ -553,7 +478,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
553
478
|
requirements:
|
554
479
|
- - ">="
|
555
480
|
- !ruby/object:Gem::Version
|
556
|
-
hash: 3
|
557
481
|
segments:
|
558
482
|
- 0
|
559
483
|
version: "0"
|
@@ -566,7 +490,6 @@ specification_version: 3
|
|
566
490
|
summary: Land, sky, and sea
|
567
491
|
test_files:
|
568
492
|
- features/automobile_fuel.feature
|
569
|
-
- features/automobile_fuel_type.feature
|
570
493
|
- features/automobile_make.feature
|
571
494
|
- features/automobile_make_fleet_year.feature
|
572
495
|
- features/automobile_make_model.feature
|
@@ -596,11 +519,10 @@ test_files:
|
|
596
519
|
- features/server_type.feature
|
597
520
|
- features/server_type_alias.feature
|
598
521
|
- features/shipment_mode.feature
|
522
|
+
- features/step_definitions/data_steps.rb
|
599
523
|
- features/support/env.rb
|
600
524
|
- features/support/imports/automobile_fuel_bad.csv
|
601
525
|
- features/support/imports/automobile_fuel_good.csv
|
602
|
-
- features/support/imports/automobile_fuel_type_bad.csv
|
603
|
-
- features/support/imports/automobile_fuel_type_good.csv
|
604
526
|
- features/support/imports/automobile_make_bad.csv
|
605
527
|
- features/support/imports/automobile_make_fleet_year_bad.csv
|
606
528
|
- features/support/imports/automobile_make_fleet_year_good.csv
|
@@ -1,34 +0,0 @@
|
|
1
|
-
Feature: Data import for AutomobileFuelType
|
2
|
-
As a data user
|
3
|
-
I want to import AutomobileFuelType data
|
4
|
-
So that I can perform fuel type-based calculations
|
5
|
-
|
6
|
-
Scenario: Successfully verifying that annual distance and emission factor > 0
|
7
|
-
Given a "AutomobileFuelType" data import fetches results listed in "automobile_fuel_type_good"
|
8
|
-
When a data import verifies "Annual distance and emission factor should be greater than zero"
|
9
|
-
Then the verification should be successful
|
10
|
-
|
11
|
-
Scenario: Successfully verifying that annual distance units are kilometres
|
12
|
-
Given a "AutomobileFuelType" data import fetches results listed in "automobile_fuel_type_good"
|
13
|
-
When a data import verifies "Annual distance units should be kilometres"
|
14
|
-
Then the verification should be successful
|
15
|
-
|
16
|
-
Scenario: Successfully verifying that emission factor units are never missing
|
17
|
-
Given a "AutomobileFuelType" data import fetches results listed in "automobile_fuel_type_good"
|
18
|
-
When a data import verifies "Emission factor units should never be missing"
|
19
|
-
Then the verification should be successful
|
20
|
-
|
21
|
-
Scenario: Failing to verify that annual distance and emission factor > 0
|
22
|
-
Given a "AutomobileFuelType" data import fetches results listed in "automobile_fuel_type_bad"
|
23
|
-
When a data import verifies "Annual distance and emission factor should be greater than zero"
|
24
|
-
Then the verification should not be successful
|
25
|
-
|
26
|
-
Scenario: Failing to verify that annual distance units are kilometres
|
27
|
-
Given a "AutomobileFuelType" data import fetches results listed in "automobile_fuel_type_bad"
|
28
|
-
When a data import verifies "Annual distance units should be kilometres"
|
29
|
-
Then the verification should not be successful
|
30
|
-
|
31
|
-
Scenario: Failing to verify that emission factor units are never missing
|
32
|
-
Given a "AutomobileFuelType" data import fetches results listed in "automobile_fuel_type_bad"
|
33
|
-
When a data import verifies "Emission factor units should never be missing"
|
34
|
-
Then the verification should not be successful
|
@@ -1,115 +0,0 @@
|
|
1
|
-
# DEPRECATED - use AutomobileFuel
|
2
|
-
AutomobileFuelType.class_eval do
|
3
|
-
data_miner do
|
4
|
-
schema Earth.database_options do
|
5
|
-
string 'code'
|
6
|
-
string 'name'
|
7
|
-
string 'fuel_name_for_distance'
|
8
|
-
string 'fuel_name_for_efs'
|
9
|
-
float 'blend_portion'
|
10
|
-
float 'emission_factor'
|
11
|
-
string 'emission_factor_units'
|
12
|
-
float 'annual_distance'
|
13
|
-
string 'annual_distance_units'
|
14
|
-
end
|
15
|
-
|
16
|
-
import "a list of fuel type codes and attributes",
|
17
|
-
:url => 'https://spreadsheets.google.com/pub?key=0AoQJbWqPrREqdDlqeU9vQkVkNG1NZXV4WklKTjJkU3c&hl=en&single=true&gid=0&output=csv' do
|
18
|
-
key 'code'
|
19
|
-
store 'name'
|
20
|
-
store 'fuel_name_for_distance'
|
21
|
-
store 'fuel_name_for_efs'
|
22
|
-
store 'blend_portion'
|
23
|
-
end
|
24
|
-
|
25
|
-
process "Calculate annual distance from AutomobileTypeFuelAge" do
|
26
|
-
AutomobileTypeFuelAge.run_data_miner!
|
27
|
-
ages = AutomobileTypeFuelAge.arel_table
|
28
|
-
types = AutomobileFuelType.arel_table
|
29
|
-
conditional_relation = ages[:fuel_common_name].eq(types[:fuel_name_for_distance])
|
30
|
-
update_all "annual_distance = (#{AutomobileTypeFuelAge.weighted_average_relation(:annual_distance, :weighted_by => :vehicles).where(conditional_relation).to_sql})"
|
31
|
-
update_all "annual_distance_units = 'kilometres'"
|
32
|
-
end
|
33
|
-
|
34
|
-
process "Calculate emission factor from FuelYear, AutomobileTypeFuelYear, and GreenhouseGas" do
|
35
|
-
FuelYear.run_data_miner!
|
36
|
-
AutomobileTypeFuelYear.run_data_miner!
|
37
|
-
GreenhouseGas.run_data_miner!
|
38
|
-
|
39
|
-
co2_gwp = GreenhouseGas.find_by_abbreviation("co2").global_warming_potential
|
40
|
-
ch4_gwp = GreenhouseGas.find_by_abbreviation("ch4").global_warming_potential
|
41
|
-
n2o_gwp = GreenhouseGas.find_by_abbreviation("n2o").global_warming_potential
|
42
|
-
|
43
|
-
latest_year = FuelYear.all.collect{|x| x.year }.max
|
44
|
-
|
45
|
-
fuel_years = FuelYear.arel_table
|
46
|
-
type_fuel_years = AutomobileTypeFuelYear.arel_table
|
47
|
-
fuel_types = AutomobileFuelType.arel_table
|
48
|
-
|
49
|
-
AutomobileFuelType.all.each do |fuel_type|
|
50
|
-
current_name = fuel_type.name
|
51
|
-
|
52
|
-
if fuel_type.fuel_name_for_efs.present?
|
53
|
-
co2_factor_sql = fuel_years.project(fuel_years[:co2_emission_factor]).where(fuel_years[:fuel_common_name].eq(fuel_types[:fuel_name_for_efs]).and(fuel_years[:year].eq(latest_year))).to_sql
|
54
|
-
ch4_factor_sql = AutomobileTypeFuelYear.weighted_average_relation(:ch4_emission_factor, :weighted_by => :total_travel).where(type_fuel_years[:fuel_common_name].eq(fuel_types[:fuel_name_for_efs]).and(type_fuel_years[:year].eq(latest_year))).to_sql
|
55
|
-
n2o_factor_sql = AutomobileTypeFuelYear.weighted_average_relation(:n2o_emission_factor, :weighted_by => :total_travel).where(type_fuel_years[:fuel_common_name].eq(fuel_types[:fuel_name_for_efs]).and(type_fuel_years[:year].eq(latest_year))).to_sql
|
56
|
-
hfc_factor_sql = AutomobileTypeFuelYear.weighted_average_relation(:hfc_emission_factor, :weighted_by => :total_travel).where(type_fuel_years[:fuel_common_name].eq(fuel_types[:fuel_name_for_efs]).and(type_fuel_years[:year].eq(latest_year))).to_sql
|
57
|
-
|
58
|
-
connection.execute %{
|
59
|
-
UPDATE automobile_fuel_types
|
60
|
-
SET emission_factor = (((#{co2_factor_sql}) * #{co2_gwp} * (1 - blend_portion)) + ((#{ch4_factor_sql}) * #{ch4_gwp}) + ((#{n2o_factor_sql}) * #{n2o_gwp}) + (#{hfc_factor_sql}))
|
61
|
-
WHERE automobile_fuel_types.name = '#{current_name}'
|
62
|
-
}
|
63
|
-
connection.execute %{
|
64
|
-
UPDATE automobile_fuel_types
|
65
|
-
SET emission_factor_units = 'kilograms_co2e_per_litre'
|
66
|
-
WHERE automobile_fuel_types.name = '#{current_name}'
|
67
|
-
}
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
process "Calculate emission factor for electricity from EgridSubregion and EgridRegion" do
|
73
|
-
EgridSubregion.run_data_miner!
|
74
|
-
EgridRegion.run_data_miner!
|
75
|
-
electricity_ef = (EgridSubregion.find_by_abbreviation("US").electricity_emission_factor / (1 - EgridRegion.find_by_name("US").loss_factor))
|
76
|
-
connection.execute %{
|
77
|
-
UPDATE automobile_fuel_types
|
78
|
-
SET emission_factor = #{electricity_ef}
|
79
|
-
WHERE automobile_fuel_types.name = 'electricity'
|
80
|
-
}
|
81
|
-
connection.execute %{
|
82
|
-
UPDATE automobile_fuel_types
|
83
|
-
SET emission_factor_units = 'kilograms_co2e_per_kilowatt_hour'
|
84
|
-
WHERE automobile_fuel_types.name = 'electricity'
|
85
|
-
}
|
86
|
-
end
|
87
|
-
|
88
|
-
verify "Annual distance and emission factor should be greater than zero" do
|
89
|
-
AutomobileFuelType.all.each do |fuel_type|
|
90
|
-
%w{ annual_distance emission_factor }.each do |attribute|
|
91
|
-
value = fuel_type.send(:"#{attribute}")
|
92
|
-
unless value > 0
|
93
|
-
raise "Invalid #{attribute} for AutomobileFuelType #{fuel_type.name}: #{value} (should be > 0)"
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
verify "Annual distance units should be kilometres" do
|
100
|
-
AutomobileFuelType.all.each do |fuel_type|
|
101
|
-
unless fuel_type.annual_distance_units == "kilometres"
|
102
|
-
raise "Missing annual distance units for AutomobileFuelType #{fuel_type.name}"
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
verify "Emission factor units should never be missing" do
|
108
|
-
AutomobileFuelType.all.each do |fuel_type|
|
109
|
-
unless fuel_type.emission_factor_units.present?
|
110
|
-
raise "Missing emission factor units for AutomobileFuelType #{fuel_type.name}"
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# DEPRECATED - use AutomobileFuel
|
2
|
-
class AutomobileFuelType < ActiveRecord::Base
|
3
|
-
set_primary_key :code
|
4
|
-
|
5
|
-
scope :ordered, :order => 'name'
|
6
|
-
|
7
|
-
falls_back_on :emission_factor => 20.781.pounds_per_gallon.to(:kilograms_per_litre) # https://brighterplanet.sifterapp.com/projects/30/issues/428
|
8
|
-
|
9
|
-
data_miner do
|
10
|
-
tap "Brighter Planet's sanitized automobile fuel type data", Earth.taps_server
|
11
|
-
end
|
12
|
-
|
13
|
-
CODES = {
|
14
|
-
:electricity => 'El',
|
15
|
-
:diesel => 'D'
|
16
|
-
}
|
17
|
-
end
|