urbanopt-geojson 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +24 -0
  3. data/.rakeTasks +7 -0
  4. data/.rdoc_options +43 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.yml +10 -0
  7. data/.travis.yml +35 -0
  8. data/CHANGELOG.md +5 -0
  9. data/Gemfile +27 -0
  10. data/Jenkinsfile +10 -0
  11. data/LICENSE.md +27 -0
  12. data/RDOC_MAIN.md +48 -0
  13. data/README.md +40 -0
  14. data/Rakefile +45 -0
  15. data/deploy_docs.sh +4 -0
  16. data/doc_templates/LICENSE.md +27 -0
  17. data/doc_templates/README.md.erb +42 -0
  18. data/doc_templates/copyright_erb.txt +31 -0
  19. data/doc_templates/copyright_js.txt +4 -0
  20. data/doc_templates/copyright_ruby.txt +29 -0
  21. data/docs/.gitignore +3 -0
  22. data/docs/.vuepress/components/BuildingProperties.vue +12 -0
  23. data/docs/.vuepress/components/DistrictSystemProperties.vue +12 -0
  24. data/docs/.vuepress/components/ElectricalConnectorProperties.vue +12 -0
  25. data/docs/.vuepress/components/ElectricalJunctionProperties.vue +12 -0
  26. data/docs/.vuepress/components/InnerJsonSchema.vue +80 -0
  27. data/docs/.vuepress/components/JsonSchema.vue +12 -0
  28. data/docs/.vuepress/components/RegionProperties.vue +12 -0
  29. data/docs/.vuepress/components/SiteProperties.vue +12 -0
  30. data/docs/.vuepress/components/StaticLink.vue +8 -0
  31. data/docs/.vuepress/components/ThermalConnectorProperties.vue +12 -0
  32. data/docs/.vuepress/components/ThermalJunctionProperties.vue +12 -0
  33. data/docs/.vuepress/config.js +22 -0
  34. data/docs/.vuepress/highlight.js +8 -0
  35. data/docs/.vuepress/public/custom_rdoc_styles.css +64 -0
  36. data/docs/.vuepress/utils.js +17 -0
  37. data/docs/README.md +30 -0
  38. data/docs/doc/created.rid +0 -0
  39. data/docs/package-lock.json +11771 -0
  40. data/docs/package.json +22 -0
  41. data/docs/schemas/building-properties.md +3 -0
  42. data/docs/schemas/district-system-properties.md +3 -0
  43. data/docs/schemas/electrical-connector-properties.md +3 -0
  44. data/docs/schemas/electrical-junction-properties.md +3 -0
  45. data/docs/schemas/region-properties.md +3 -0
  46. data/docs/schemas/site-properties.md +3 -0
  47. data/docs/schemas/thermal-connector-properties.md +3 -0
  48. data/docs/schemas/thermal-junction-properties.md +3 -0
  49. data/lib/measures/.rubocop.yml +5 -0
  50. data/lib/measures/urban_geometry_creation/LICENSE.md +27 -0
  51. data/lib/measures/urban_geometry_creation/README.md +48 -0
  52. data/lib/measures/urban_geometry_creation/README.md.erb +42 -0
  53. data/lib/measures/urban_geometry_creation/measure.rb +199 -0
  54. data/lib/measures/urban_geometry_creation/measure.xml +139 -0
  55. data/lib/measures/urban_geometry_creation/tests/nrel_stm_footprints.geojson +3238 -0
  56. data/lib/measures/urban_geometry_creation/tests/shadowed_tests.rb +80 -0
  57. data/lib/measures/urban_geometry_creation/tests/urban_geometry_creation_test.rb +143 -0
  58. data/lib/measures/urban_geometry_creation_zoning/LICENSE.md +27 -0
  59. data/lib/measures/urban_geometry_creation_zoning/README.md +48 -0
  60. data/lib/measures/urban_geometry_creation_zoning/README.md.erb +42 -0
  61. data/lib/measures/urban_geometry_creation_zoning/measure.rb +203 -0
  62. data/lib/measures/urban_geometry_creation_zoning/measure.xml +133 -0
  63. data/lib/measures/urban_geometry_creation_zoning/tests/nrel_stm_footprints.geojson +3238 -0
  64. data/lib/measures/urban_geometry_creation_zoning/tests/urban_geometry_creation_test.rb +143 -0
  65. data/lib/urbanopt/geojson.rb +41 -0
  66. data/lib/urbanopt/geojson/building.rb +341 -0
  67. data/lib/urbanopt/geojson/district_system.rb +53 -0
  68. data/lib/urbanopt/geojson/extension.rb +63 -0
  69. data/lib/urbanopt/geojson/feature.rb +206 -0
  70. data/lib/urbanopt/geojson/geo_file.rb +154 -0
  71. data/lib/urbanopt/geojson/helper.rb +340 -0
  72. data/lib/urbanopt/geojson/logging.rb +46 -0
  73. data/lib/urbanopt/geojson/mapper_classes.rb +85 -0
  74. data/lib/urbanopt/geojson/model.rb +133 -0
  75. data/lib/urbanopt/geojson/region.rb +55 -0
  76. data/lib/urbanopt/geojson/schema/building_properties.json +358 -0
  77. data/lib/urbanopt/geojson/schema/district_system_properties.json +137 -0
  78. data/lib/urbanopt/geojson/schema/electrical_connector_properties.json +77 -0
  79. data/lib/urbanopt/geojson/schema/electrical_junction_properties.json +64 -0
  80. data/lib/urbanopt/geojson/schema/geojson_schema.json +323 -0
  81. data/lib/urbanopt/geojson/schema/region_properties.json +93 -0
  82. data/lib/urbanopt/geojson/schema/site_properties.json +87 -0
  83. data/lib/urbanopt/geojson/schema/thermal_connector_properties.json +107 -0
  84. data/lib/urbanopt/geojson/schema/thermal_junction_properties.json +83 -0
  85. data/lib/urbanopt/geojson/update_areas.rb +102 -0
  86. data/lib/urbanopt/geojson/validate_geojson.rb +147 -0
  87. data/lib/urbanopt/geojson/version.rb +35 -0
  88. data/lib/urbanopt/geojson/workflows/building.osw +187 -0
  89. data/lib/urbanopt/geojson/workflows/building.osw.out +2806 -0
  90. data/lib/urbanopt/geojson/workflows/district_system.osw +84 -0
  91. data/lib/urbanopt/geojson/workflows/district_system.osw.out +646 -0
  92. data/lib/urbanopt/geojson/zoning.rb +134 -0
  93. data/package-lock.json +3 -0
  94. data/urbanopt-geojson-gem.gemspec +39 -0
  95. metadata +238 -0
@@ -0,0 +1,133 @@
1
+ # *********************************************************************************
2
+ # URBANopt, Copyright (c) 2019, Alliance for Sustainable Energy, LLC, and other
3
+ # contributors. All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without modification,
6
+ # are permitted provided that the following conditions are met:
7
+ #
8
+ # Redistributions of source code must retain the above copyright notice, this list
9
+ # of conditions and the following disclaimer.
10
+ #
11
+ # Redistributions in binary form must reproduce the above copyright notice, this
12
+ # list of conditions and the following disclaimer in the documentation and/or other
13
+ # materials provided with the distribution.
14
+ #
15
+ # Neither the name of the copyright holder nor the names of its contributors may be
16
+ # used to endorse or promote products derived from this software without specific
17
+ # prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
+ # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22
+ # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23
+ # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24
+ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ # *********************************************************************************
30
+
31
+ module URBANopt
32
+ module GeoJSON
33
+ module Model
34
+ ##
35
+ # Used to add construction to the model. This method uses the default construction
36
+ # to the building, or creates a new+OpenStudio::Model::DefaultConstructionSet+ if no
37
+ # construction set is assigned.
38
+ #
39
+ # Returns an instance of +OpenStudio::Model::DefaultConstructionSet+ .
40
+ #
41
+ # [Parameters]
42
+ # * +model+ - _Type:String_ - An instance of +OpenStudio::Model::Model+ .
43
+ # * +runner+ - _Type:String_ - Measure run's instance of
44
+ # +OpenStudio::Measure::OSRunner+ .
45
+ def self.create_construction_set(model, runner)
46
+ default_construction_set = model.getBuilding.defaultConstructionSet
47
+ if !default_construction_set.is_initialized
48
+ runner.registerInfo('Starting model does not have a default construction set, creating new one')
49
+ default_construction_set = OpenStudio::Model::DefaultConstructionSet.new(model)
50
+ else
51
+ default_construction_set = default_construction_set.get
52
+ end
53
+ return default_construction_set
54
+ end
55
+
56
+ ##
57
+ # This method loops through each surface of the model for adjacent surfaces. It sets the outside boundary
58
+ # condition to these surfaces as Adiabatic and hard assigns the construction.
59
+ #
60
+ # Returns an instance of +OpenStudio::Model::Model+ with surfaces changed to
61
+ # adiabatic.
62
+ #
63
+ # [Parameters]
64
+ # * +model+ - _Type:String_ - An instance of +OpenStudio::Model::Model+ .
65
+ # * +runner+ - _Type:String_ - Measure run's instance of +OpenStudio::Measure::OSRunner+ .
66
+ def self.change_adjacent_surfaces_to_adiabatic(model, runner)
67
+ runner.registerInfo('Changing adjacent surfaces to adiabatic')
68
+ model.getSurfaces.each do |surface|
69
+ adjacent_surface = surface.adjacentSurface
70
+ if !adjacent_surface.empty?
71
+ surface_construction = surface.construction
72
+ if !surface_construction.empty?
73
+ surface.setConstruction(surface_construction.get)
74
+ end
75
+ surface.setOutsideBoundaryCondition('Adiabatic')
76
+
77
+ adjacent_surface_construction = adjacent_surface.get.construction
78
+ if !adjacent_surface_construction.empty?
79
+ adjacent_surface.get.setConstruction(adjacent_surface_construction.get)
80
+ end
81
+ adjacent_surface.get.setOutsideBoundaryCondition('Adiabatic')
82
+ end
83
+ end
84
+ return model
85
+ end
86
+
87
+ ##
88
+ # Loops through all the building stories in the model and for each space sets space
89
+ # type from the building story if no space type is assigned.
90
+ #
91
+ # Returns an Array of instances of +OpenStudio::Model::Story+ .
92
+ #
93
+ # [Parameters]
94
+ # * +model+ - _Type:String_ - An instance of +OpenStudio::Model::Model+ .
95
+ # * +space_types+ - _Type:Array_ - Instances of +OpenStudio::Model::SpaceType+ .
96
+ def self.transfer_prev_model_data(model, space_types)
97
+ stories = []
98
+ model.getBuildingStorys.each { |story| stories << story }
99
+ stories.sort! { |x, y| x.nominalZCoordinate.to_s.to_f <=> y.nominalZCoordinate.to_s.to_f }
100
+
101
+ stories.each_index do |i|
102
+ space_type = space_types[i]
103
+ next if space_type.nil?
104
+ stories[i].spaces.each do |space|
105
+ space.setSpaceType(space_type)
106
+ end
107
+ end
108
+ return stories
109
+ end
110
+
111
+ ##
112
+ # Returns instance of +OpenStudio::Model::SpaceType+.
113
+ #
114
+ # [Parameters]
115
+ # * +bldg_use+ - _Type:String_ - Indicates the building use.
116
+ # * +space_use+ - _Type:String_ - Indicates the space use.
117
+ # * +model+ - _Type:String_ - An instance of +OpenStudio::Model::Model+ .
118
+ def self.create_space_type(bldg_use, space_use, model)
119
+ name = "#{bldg_use}:#{space_use}"
120
+ model.getSpaceTypes.each do |s|
121
+ if s.name.get == name
122
+ return s
123
+ end
124
+ end
125
+ space_type = OpenStudio::Model::SpaceType.new(model)
126
+ space_type.setName(name)
127
+ space_type.setStandardsBuildingType(bldg_use)
128
+ space_type.setStandardsSpaceType(space_use)
129
+ return space_type
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,55 @@
1
+ # *********************************************************************************
2
+ # URBANopt, Copyright (c) 2019, Alliance for Sustainable Energy, LLC, and other
3
+ # contributors. All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without modification,
6
+ # are permitted provided that the following conditions are met:
7
+ #
8
+ # Redistributions of source code must retain the above copyright notice, this list
9
+ # of conditions and the following disclaimer.
10
+ #
11
+ # Redistributions in binary form must reproduce the above copyright notice, this
12
+ # list of conditions and the following disclaimer in the documentation and/or other
13
+ # materials provided with the distribution.
14
+ #
15
+ # Neither the name of the copyright holder nor the names of its contributors may be
16
+ # used to endorse or promote products derived from this software without specific
17
+ # prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
+ # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22
+ # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23
+ # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24
+ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ # *********************************************************************************
30
+
31
+ require 'urbanopt/geojson/feature'
32
+
33
+ module URBANopt
34
+ module GeoJSON
35
+ class Region < Feature
36
+ ##
37
+ # Used to initialize the feature. This method is inherited from the Feature class.
38
+ def initialize(feature)
39
+ super(feature)
40
+ end
41
+
42
+ ##
43
+ # Used to describe the Region feature type using the base method from the Feature class.
44
+ def feature_type
45
+ 'Region'
46
+ end
47
+
48
+ ##
49
+ # Returns the region_properties schema.
50
+ def schema_file
51
+ return File.join(File.dirname(__FILE__), 'schema', 'region_properties.json')
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,358 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "id": "http://json-schema.org/openstudio-urban-modeling/building_properties.json#",
4
+ "title": "URBANopt Building",
5
+ "description": "Schema for an URBANopt Building object",
6
+ "type": "object",
7
+ "properties": {
8
+ "id": {
9
+ "description": "Unique id used to refer to this feature within this dataset.",
10
+ "type": "string"
11
+ },
12
+ "project_id": {
13
+ "description": "Project which this feature belongs to.",
14
+ "type": "string"
15
+ },
16
+ "type": {
17
+ "description": "Type of feature.",
18
+ "type": "string",
19
+ "enum": [
20
+ "Building"
21
+ ]
22
+ },
23
+ "source_name": {
24
+ "description": "Name of the original data source.",
25
+ "type": "string"
26
+ },
27
+ "source_id": {
28
+ "description": "Id of the feature in original data source.",
29
+ "type": "string"
30
+ },
31
+ "name": {
32
+ "description": "Feature name.",
33
+ "type": "string"
34
+ },
35
+ "legal_name": {
36
+ "description": "Legal name used to identify this feature.",
37
+ "type": "string"
38
+ },
39
+ "address": {
40
+ "description": "Street address.",
41
+ "type": "string"
42
+ },
43
+ "building_status": {
44
+ "description": "Building status.",
45
+ "type": "string",
46
+ "enum": [
47
+ "Proposed",
48
+ "Existing"
49
+ ]
50
+ },
51
+ "detailed_model_filename": {
52
+ "description": "Name of a detailed model which can be loaded from disk as a seed model or complete model. Mapper class decides which measures to disable if this is present.",
53
+ "type": "string"
54
+ },
55
+ "weather_filename": {
56
+ "description": "Name of EPW weather file for this building. Defaults to site's weather_filename.",
57
+ "type": "string"
58
+ },
59
+ "tariff_filename": {
60
+ "description": "Name of the tariff file for this building. Defaults to site's tariff_filename.",
61
+ "type": "string"
62
+ },
63
+ "surface_elevation": {
64
+ "description": "The surface elevation (above NAVD88 datum) of the building (ft). This is the elevation of the ground at the building location, any below ground stories will be lower than this. Defaults to site's surface_elevation.",
65
+ "type": "number"
66
+ },
67
+ "floor_area": {
68
+ "description": "Usable floor area (ft^2).",
69
+ "type": "number"
70
+ },
71
+ "number_of_stories": {
72
+ "description": "The maximum number of building stories, sum of number of above and below ground stories.",
73
+ "type": "integer"
74
+ },
75
+ "number_of_stories_above_ground": {
76
+ "description": "The number of building stories above ground. Defaults to number_of_stories.",
77
+ "type": "integer"
78
+ },
79
+ "maximum_roof_height": {
80
+ "description": "Maximum height of the roof relative to surface elevation (ft)",
81
+ "type": "number"
82
+ },
83
+ "roof_type": {
84
+ "description": "The type of roof. Defaults to flat.",
85
+ "type": "string",
86
+ "enum": [
87
+ "Flat",
88
+ "Gable",
89
+ "Hip"
90
+ ]
91
+ },
92
+ "footprint_area": {
93
+ "description": "Area of the footprint (ft^2). Calculated on export.",
94
+ "type": "number"
95
+ },
96
+ "footprint_perimeter": {
97
+ "description": "Perimeter of the footprint (ft). Calculated on export.",
98
+ "type": "number"
99
+ },
100
+ "year_built": {
101
+ "description": "The year construction of the building was completed. Can be in the future to indicate future build out. Defaults to current year.",
102
+ "type": "integer"
103
+ },
104
+ "template": {
105
+ "$ref": "#/definitions/templateType"
106
+ },
107
+ "building_type": {
108
+ "$ref": "#/definitions/buildingType"
109
+ },
110
+ "system_type": {
111
+ "$ref": "#/definitions/systemType"
112
+ },
113
+ "weekday_start_time": {
114
+ "description": "Weekday operating hours start time in 08:30 format, using 24-hr clock. Leave black to use default. Should this be part of a mixed type struct?",
115
+ "type": "string"
116
+ },
117
+ "weekday_duration": {
118
+ "description": "Length of weekend operating hours in 08:30 format, up to 24:00.",
119
+ "type": "string"
120
+ },
121
+ "weekend_start_time": {
122
+ "description": "Weekend operating hours start time in 08:30 format, using 24-hr clock. Leave black to use default. Should this be part of a mixed type struct?",
123
+ "type": "string"
124
+ },
125
+ "weekend_duration": {
126
+ "description": "Length of weekend operating hours in 08:30 format, up to 24:00.",
127
+ "type": "string"
128
+ },
129
+ "mixed_type_1": {
130
+ "$ref": "#/definitions/buildingType"
131
+ },
132
+ "mixed_type_1_percentage": {
133
+ "description": "Percentage of 1st mixed building space type. Only used when building_type is Mixed use.",
134
+ "type": "number",
135
+ "minimum": 0,
136
+ "maximum": 100
137
+ },
138
+ "mixed_type_2": {
139
+ "$ref": "#/definitions/buildingType"
140
+ },
141
+ "mixed_type_2_percentage": {
142
+ "description": "Percentage of 2nd mixed building space type. Only used when building_type is Mixed use.",
143
+ "type": "number",
144
+ "minimum": 0,
145
+ "maximum": 100
146
+ },
147
+ "mixed_type_3": {
148
+ "$ref": "#/definitions/buildingType"
149
+ },
150
+ "mixed_type_3_percentage": {
151
+ "description": "Percentage of 3rd mixed building space type. Only used when building_type is Mixed use.",
152
+ "type": "number",
153
+ "minimum": 0,
154
+ "maximum": 100
155
+ },
156
+ "mixed_type_4": {
157
+ "$ref": "#/definitions/buildingType"
158
+ },
159
+ "mixed_type_4_percentage": {
160
+ "description": "Percentage of 4th mixed building space type. Only used when building_type is Mixed use.",
161
+ "type": "number",
162
+ "minimum": 0,
163
+ "maximum": 100
164
+ },
165
+ "number_of_residential_units": {
166
+ "description": "Total number of residential units in the building. Required for residential buildings or mixed-use buildings with residential use types.",
167
+ "type": "integer"
168
+ },
169
+ "exterior_lighting_zone": {
170
+ "description": "Choice of exterior lighting zone.",
171
+ "type": "string",
172
+ "enum": [
173
+ "0 - Undeveloped Areas Parks",
174
+ "1 - Developed Areas Parks",
175
+ "2 - Neighborhood",
176
+ "3 - All Other Areas",
177
+ "4 - High Activity"
178
+ ]
179
+ },
180
+ "onsite_parking_fraction": {
181
+ "description": "Fraction of building parking to include in this model. Choose 1 to include exterior lights for parking in this building model. Choose 0 if parking is modeled separately.",
182
+ "type": "number",
183
+ "minimum": 0,
184
+ "maximum": 1
185
+ },
186
+ "power_factor": {
187
+ "description": "Ratio of the real power used by building to the apparent power seen by grid.",
188
+ "type": "number",
189
+ "minimum": 0
190
+ },
191
+ "user_data": {
192
+ "description": "Arbitrary user data"
193
+ }
194
+ },
195
+ "required": [
196
+ "id",
197
+ "type",
198
+ "name",
199
+ "floor_area",
200
+ "number_of_stories",
201
+ "footprint_area",
202
+ "building_type"
203
+ ],
204
+ "additionalProperties": false,
205
+ "definitions": {
206
+ "buildingType": {
207
+ "description": "Primary building space type.",
208
+ "type": "string",
209
+ "enum": [
210
+ "Single-Family",
211
+ "Multifamily (2 to 4 units)",
212
+ "Multifamily (5 or more units)",
213
+ "Mobile Home",
214
+ "Vacant",
215
+ "Office",
216
+ "Laboratory",
217
+ "Nonrefrigerated warehouse",
218
+ "Food sales",
219
+ "Public order and safety",
220
+ "Outpatient health care",
221
+ "Refrigerated warehouse",
222
+ "Religious worship",
223
+ "Public assembly",
224
+ "Education",
225
+ "Food service",
226
+ "Inpatient health care",
227
+ "Nursing",
228
+ "Lodging",
229
+ "Strip shopping mall",
230
+ "Enclosed mall",
231
+ "Retail other than mall",
232
+ "Service",
233
+ "Mixed use",
234
+ "Uncovered Parking",
235
+ "Covered Parking"
236
+ ]
237
+ },
238
+ "systemType": {
239
+ "description": "Building HVAC system type. Should this be part of a mixed type struct?",
240
+ "type": "string",
241
+ "enum": [
242
+ "Ideal Air Loads",
243
+ "PTAC with hot water heat",
244
+ "PTAC with hot water heat with central air source heat pump",
245
+ "PTAC with gas coil heat",
246
+ "PTAC with electric baseboard heat",
247
+ "PTAC with no heat",
248
+ "PTAC with district hot water heat",
249
+ "PTAC with central air source heat pump heat",
250
+ "PTHP",
251
+ "PSZ-AC with gas coil heat",
252
+ "PSZ-AC with electric baseboard heat",
253
+ "PSZ-AC with no heat",
254
+ "PSZ-AC with district hot water heat",
255
+ "PSZ-AC with central air source heat pump heat",
256
+ "PSZ-HP",
257
+ "Fan coil district chilled water with no heat",
258
+ "Fan coil district chilled water and boiler",
259
+ "Fan coil district chilled water and central air source heat pump",
260
+ "Fan coil district chilled water unit heaters",
261
+ "Fan coil district chilled water electric baseboard heat",
262
+ "Fan coil district hot and chilled water",
263
+ "Fan coil district hot water and chiller",
264
+ "Fan coil district hot water and air-cooled chiller",
265
+ "Fan coil chiller and boiler",
266
+ "Fan coil air-cooled chiller and boiler",
267
+ "Fan coil chiller and central air source heat pump",
268
+ "Fan coil air-cooled chiller and central air source heat pump",
269
+ "Fan coil chiller with no heat",
270
+ "DOAS with fan coil district chilled water with no heat",
271
+ "DOAS with fan coil district chilled water and boiler",
272
+ "DOAS with fan coil district chilled water and central air source heat pump",
273
+ "DOAS with fan coil district chilled water unit heaters",
274
+ "DOAS with fan coil district chilled water electric baseboard heat",
275
+ "DOAS with fan coil district hot and chilled water",
276
+ "DOAS with fan coil district hot water and chiller",
277
+ "DOAS with fan coil district hot water and air-cooled chiller",
278
+ "DOAS with fan coil chiller and boiler",
279
+ "DOAS with fan coil air-cooled chiller and boiler",
280
+ "DOAS with fan coil chiller and central air source heat pump",
281
+ "DOAS with fan coil air-cooled chiller and central air source heat pump",
282
+ "DOAS with fan coil chiller with no heat",
283
+ "VRF with DOAS",
284
+ "Ground Source Heat Pumps with DOAS",
285
+ "Baseboard district hot water heat",
286
+ "Baseboard district hot water heat with direct evap coolers",
287
+ "Baseboard electric heat",
288
+ "Baseboard electric heat with direct evap coolers",
289
+ "Baseboard hot water heat",
290
+ "Baseboard hot water heat with direct evap coolers",
291
+ "Window AC with no heat",
292
+ "Window AC with forced air furnace",
293
+ "Window AC with district hot water baseboard heat",
294
+ "Window AC with hot water baseboard heat",
295
+ "Window AC with electric baseboard heat",
296
+ "Window AC with unit heaters",
297
+ "Direct evap coolers",
298
+ "Direct evap coolers with unit heaters",
299
+ "Unit heaters",
300
+ "Heat pump heat with no cooling",
301
+ "Heat pump heat with direct evap cooler",
302
+ "VAV with reheat",
303
+ "VAV with reheat central air source heat pump",
304
+ "VAV with PFP boxes",
305
+ "VAV with gas reheat",
306
+ "VAV with zone unit heaters",
307
+ "VAV with electric baseboard heat",
308
+ "VAV cool with zone heat pump heat",
309
+ "PVAV with reheat",
310
+ "PVAV with reheat with central air source heat pump",
311
+ "PVAV with PFP boxes",
312
+ "Residential forced air",
313
+ "Residential forced air cooling hot water baseboard heat",
314
+ "Residential forced air with district hot water",
315
+ "Residential heat pump",
316
+ "Forced air furnace",
317
+ "Forced air furnace district chilled water fan coil",
318
+ "Forced air furnace direct evap cooler",
319
+ "Residential AC with no heat",
320
+ "Residential AC with electric baseboard heat"
321
+ ]
322
+ },
323
+ "templateType": {
324
+ "description": "Standard template applied to building.",
325
+ "type": "string",
326
+ "enum": [
327
+ "DOE Ref Pre-1980",
328
+ "DOE Ref 1980-2004",
329
+ "90.1-2004",
330
+ "90.1-2007",
331
+ "90.1-2010",
332
+ "90.1-2013",
333
+ "NREL ZNE Ready 2017",
334
+ "DEER Pre-1975",
335
+ "DEER 1985",
336
+ "DEER 1996",
337
+ "DEER 2003",
338
+ "DEER 2007",
339
+ "DEER 2011",
340
+ "DEER 2014",
341
+ "DEER 2015",
342
+ "DEER 2017",
343
+ "DEER 2020",
344
+ "DEER 2025",
345
+ "DEER 2030",
346
+ "DEER 2035",
347
+ "DEER 2040",
348
+ "DEER 2045",
349
+ "DEER 2050",
350
+ "DEER 2055",
351
+ "DEER 2060",
352
+ "DEER 2065",
353
+ "DEER 2070",
354
+ "DEER 2075"
355
+ ]
356
+ }
357
+ }
358
+ }