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
data/docs/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "urbanopt-geojson-gem-docs",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "dev": "vuepress dev",
8
+ "build": "vuepress build",
9
+ "deploy": "gh-pages -d .vuepress/dist"
10
+ },
11
+ "author": "Brian Schiller",
12
+ "dependencies": {
13
+ "highlight.js": "^9.15.6",
14
+ "json-schema-ref-parser": "^6.1.0",
15
+ "json-schema-view-js": "git+https://git@github.com/bgschiller/json-schema-view-js.git",
16
+ "vuepress": "^0.14.10",
17
+ "webpack-dev-middleware": "^3.6.0"
18
+ },
19
+ "devDependencies": {
20
+ "gh-pages": "^2.0.1"
21
+ }
22
+ }
@@ -0,0 +1,3 @@
1
+ # Building Properties
2
+
3
+ <BuildingProperties />
@@ -0,0 +1,3 @@
1
+ # District System Properties
2
+
3
+ <DistrictSystemProperties />
@@ -0,0 +1,3 @@
1
+ # Electrical Connector Properties
2
+
3
+ <ElectricalConnectorProperties />
@@ -0,0 +1,3 @@
1
+ # Electrical Junction Properties
2
+
3
+ <ElectricalJunctionProperties />
@@ -0,0 +1,3 @@
1
+ # Region Properties
2
+
3
+ <RegionProperties />
@@ -0,0 +1,3 @@
1
+ # Site Properties
2
+
3
+ <SiteProperties />
@@ -0,0 +1,3 @@
1
+ # Thermal Connector Properties
2
+
3
+ <ThermalConnectorProperties />
@@ -0,0 +1,3 @@
1
+ # Thermal Junction Properties
2
+
3
+ <ThermalJunctionProperties />
@@ -0,0 +1,5 @@
1
+ AllCops:
2
+ Exclude:
3
+ - 'spec/test_measures/**/*'
4
+ inherit_from:
5
+ - http://s3.amazonaws.com/openstudio-resources/styles/rubocop.yml
@@ -0,0 +1,27 @@
1
+ URBANopt, Copyright (c) 2019, Alliance for Sustainable Energy, LLC, and other
2
+ contributors. All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ Redistributions of source code must retain the above copyright notice, this list
8
+ of conditions and the following disclaimer.
9
+
10
+ Redistributions in binary form must reproduce the above copyright notice, this
11
+ list of conditions and the following disclaimer in the documentation and/or other
12
+ materials provided with the distribution.
13
+
14
+ Neither the name of the copyright holder nor the names of its contributors may be
15
+ used to endorse or promote products derived from this software without specific
16
+ prior written permission.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
23
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27
+ OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,48 @@
1
+
2
+
3
+ ###### (Automatically generated documentation)
4
+
5
+ # UrbanGeometryCreation
6
+
7
+ ## Description
8
+ This measure reads an URBANopt GeoJSON and creates geometry for a particular building. Surrounding buildings are included as shading structures.
9
+
10
+ ## Modeler Description
11
+
12
+
13
+ ## Measure Type
14
+ ModelMeasure
15
+
16
+ ## Taxonomy
17
+
18
+
19
+ ## Arguments
20
+
21
+
22
+ ### GeoJSON File
23
+ GeoJSON File.
24
+ **Name:** geojson_file,
25
+ **Type:** String,
26
+ **Units:** ,
27
+ **Required:** true,
28
+ **Model Dependent:** false
29
+
30
+ ### Feature ID
31
+ Feature ID.
32
+ **Name:** feature_id,
33
+ **Type:** String,
34
+ **Units:** ,
35
+ **Required:** true,
36
+ **Model Dependent:** false
37
+
38
+ ### Surrounding Buildings
39
+ Select which surrounding buildings to include.
40
+ **Name:** surrounding_buildings,
41
+ **Type:** Choice,
42
+ **Units:** ,
43
+ **Required:** true,
44
+ **Model Dependent:** false
45
+
46
+
47
+
48
+
@@ -0,0 +1,42 @@
1
+ <%#= README.md.erb is used to auto-generate README.md. %>
2
+ <%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
3
+ ###### (Automatically generated documentation)
4
+
5
+ # <%= name %>
6
+
7
+ ## Description
8
+ <%= description %>
9
+
10
+ ## Modeler Description
11
+ <%= modelerDescription %>
12
+
13
+ ## Measure Type
14
+ <%= measureType %>
15
+
16
+ ## Taxonomy
17
+ <%= taxonomy %>
18
+
19
+ ## Arguments
20
+
21
+ <% arguments.each do |argument| %>
22
+ ### <%= argument[:display_name] %>
23
+ <%= argument[:description] %>
24
+ **Name:** <%= argument[:name] %>,
25
+ **Type:** <%= argument[:type] %>,
26
+ **Units:** <%= argument[:units] %>,
27
+ **Required:** <%= argument[:required] %>,
28
+ **Model Dependent:** <%= argument[:model_dependent] %>
29
+ <% end %>
30
+
31
+ <% if arguments.size == 0 %>
32
+ <%= "This measure does not have any user arguments" %>
33
+ <% end %>
34
+
35
+ <% if outputs.size > 0 %>
36
+ ## Outputs
37
+ <% output_names = [] %>
38
+ <% outputs.each do |output| %>
39
+ <% output_names << output[:display_name] %>
40
+ <% end %>
41
+ <%= output_names.join(", ") %>
42
+ <% end %>
@@ -0,0 +1,199 @@
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 'json'
32
+ require 'net/http'
33
+ require 'uri'
34
+ require 'urbanopt/geojson'
35
+
36
+ # start the measure
37
+ class UrbanGeometryCreation < OpenStudio::Measure::ModelMeasure
38
+ attr_accessor :origin_lat_lon
39
+
40
+ # human readable name
41
+ def name
42
+ return 'UrbanGeometryCreation'
43
+ end
44
+
45
+ # human readable description
46
+ def description
47
+ return 'This measure reads an URBANopt GeoJSON and creates geometry for a particular building. Surrounding buildings are included as shading structures.'
48
+ end
49
+
50
+ # human readable description of modeling approach
51
+ def modeler_description
52
+ return 'This measure takes in the GeoJSON file, the feature_id of the building and the surrounding buildings as arguments and add has methods to create space types and add default construction sets.'
53
+ end
54
+
55
+ def arguments(model)
56
+ args = OpenStudio::Measure::OSArgumentVector.new
57
+ # geojson file
58
+ geojson_file = OpenStudio::Measure::OSArgument.makeStringArgument('geojson_file', true)
59
+ geojson_file.setDisplayName('GeoJSON File')
60
+ geojson_file.setDescription('GeoJSON File.')
61
+ args << geojson_file
62
+ # feature id of the building to create
63
+ feature_id = OpenStudio::Measure::OSArgument.makeStringArgument('feature_id', true)
64
+ feature_id.setDisplayName('Feature ID')
65
+ feature_id.setDescription('Feature ID.')
66
+ args << feature_id
67
+ # which surrounding buildings to include
68
+ chs = OpenStudio::StringVector.new
69
+ chs << 'None'
70
+ chs << 'ShadingOnly'
71
+ chs << 'All'
72
+ # Note: Only ShadingOnly is implemented at the moment
73
+ surrounding_buildings = OpenStudio::Measure::OSArgument.makeChoiceArgument('surrounding_buildings', chs, true)
74
+ surrounding_buildings.setDisplayName('Surrounding Buildings')
75
+ surrounding_buildings.setDescription('Select which surrounding buildings to include.')
76
+ surrounding_buildings.setDefaultValue('ShadingOnly')
77
+ args << surrounding_buildings
78
+ return args
79
+ end
80
+
81
+ # define what happens when the measure is run
82
+ def run(model, runner, user_arguments)
83
+ super(model, runner, user_arguments)
84
+ # use the built-in error checking
85
+ if !runner.validateUserArguments(arguments(model), user_arguments)
86
+ return false
87
+ end
88
+
89
+ # assign the user inputs to variables
90
+ geojson_file = runner.getStringArgumentValue('geojson_file', user_arguments)
91
+ feature_id = runner.getStringArgumentValue('feature_id', user_arguments)
92
+ surrounding_buildings = runner.getStringArgumentValue('surrounding_buildings', user_arguments)
93
+
94
+ default_construction_set = URBANopt::GeoJSON::Model.create_construction_set(model, runner)
95
+
96
+ stories = []
97
+ model.getBuildingStorys.each { |story| stories << story }
98
+ stories.sort! { |x, y| x.nominalZCoordinate.to_s.to_f <=> y.nominalZCoordinate.to_s.to_f }
99
+
100
+ space_types = URBANopt::GeoJSON::Helper.create_space_types(stories, model, runner)
101
+
102
+ # delete the previous building
103
+ model.getBuilding.remove
104
+
105
+ # create new building and transfer default construction set
106
+ model.getBuilding.setDefaultConstructionSet(default_construction_set)
107
+
108
+ # instance variables
109
+ @runner = runner
110
+ @origin_lat_lon = nil
111
+
112
+ all_features = URBANopt::GeoJSON::GeoFile.from_file(geojson_file)
113
+ feature = all_features.get_feature_by_id(feature_id)
114
+
115
+ # EXPOSE NAME
116
+ name = feature.feature_json[:properties][:name]
117
+ model.getBuilding.setName(name)
118
+
119
+ # find min and max x coordinate
120
+ @origin_lat_lon = feature.create_origin_lat_lon(@runner)
121
+
122
+ site = model.getSite
123
+ site.setLatitude(@origin_lat_lon.lat)
124
+ site.setLongitude(@origin_lat_lon.lon)
125
+
126
+ begin
127
+ surface_elevation = feature.surface_elevation.to_f
128
+ surface_elevation = OpenStudio.convert(surface_elevation, 'ft', 'm').get
129
+ site.setElevation(surface_elevation)
130
+ rescue StandardError
131
+ @runner.registerWarning("Surface elevation not set for building '#{name}'")
132
+ end
133
+
134
+ if feature.type == 'Building'
135
+ # make requested building
136
+ spaces = feature.create_building(:space_per_floor, model, @origin_lat_lon, @runner)
137
+ if spaces.nil?
138
+ @runner.registerError("Failed to create spaces for building '#{name}'")
139
+ return false
140
+ end
141
+
142
+ # DLM: temp hack
143
+ building_type = feature.building_type
144
+ if building_type == 'Vacant'
145
+ shading_surfaces = URBANopt::GeoJSON::Helper.create_shading_surfaces(feature, model, @origin_lat_lon, @runner, spaces)
146
+ end
147
+
148
+ # make other buildings to convert to shading
149
+ convert_to_shades = []
150
+ if surrounding_buildings == 'ShadingOnly'
151
+ convert_to_shades = feature.create_other_buildings(surrounding_buildings, all_features.json, model, @origin_lat_lon, @runner)
152
+ end
153
+
154
+ # intersect surfaces in this building with others
155
+ @runner.registerInfo('Intersecting surfaces')
156
+ spaces.each do |space|
157
+ convert_to_shades.each do |other_space|
158
+ space.intersectSurfaces(other_space)
159
+ end
160
+ end
161
+
162
+ # match surfaces
163
+ @runner.registerInfo('Matching surfaces')
164
+ all_spaces = OpenStudio::Model::SpaceVector.new
165
+ model.getSpaces.each do |space|
166
+ all_spaces << space
167
+ end
168
+ OpenStudio::Model.matchSurfaces(all_spaces)
169
+
170
+ # make windows
171
+ spaces = feature.create_windows(spaces)
172
+
173
+ # change adjacent surfaces to adiabatic
174
+ model = URBANopt::GeoJSON::Model.change_adjacent_surfaces_to_adiabatic(model, @runner)
175
+
176
+ # convert other buildings to shading surfaces
177
+ convert_to_shades.map do |space|
178
+ URBANopt::GeoJSON::Helper.convert_to_shading_surface_group(space)
179
+ end
180
+
181
+ elsif feature.type == 'District System'
182
+ district_system_type = feature[:properties][:district_system_type]
183
+ if district_system_type == 'Community Photovoltaic'
184
+ shading_surfaces = URBANopt::GeoJSON::Helper.create_photovoltaics(feature, 0, model, @origin_lat_lon, @runner)
185
+ end
186
+ else
187
+ @runner.registerError("Unknown feature type '#{feature.type}'")
188
+ return false
189
+ end
190
+
191
+ # transfer data from previous model
192
+ stories = URBANopt::GeoJSON::Model.transfer_prev_model_data(model, space_types)
193
+
194
+ return true
195
+ end
196
+ end
197
+
198
+ # register the measure to be used by the application
199
+ UrbanGeometryCreation.new.registerWithApplication
@@ -0,0 +1,139 @@
1
+ <measure>
2
+ <schema_version>3.0</schema_version>
3
+ <name>urban_geometry_creation</name>
4
+ <uid>5ab85d6b-c9af-4361-8ab9-613ee99a5666</uid>
5
+ <version_id>0808dbbe-ec8a-46c7-b416-cbae39e2b06c</version_id>
6
+ <version_modified>20190523T021410Z</version_modified>
7
+ <xml_checksum>D254E772</xml_checksum>
8
+ <class_name>UrbanGeometryCreation</class_name>
9
+ <display_name>UrbanGeometryCreation</display_name>
10
+ <description>This measure reads an URBANopt GeoJSON and creates geometry for a particular building. Surrounding buildings are included as shading structures.</description>
11
+ <modeler_description></modeler_description>
12
+ <arguments>
13
+ <argument>
14
+ <name>geojson_file</name>
15
+ <display_name>GeoJSON File</display_name>
16
+ <description>GeoJSON File.</description>
17
+ <type>String</type>
18
+ <required>true</required>
19
+ <model_dependent>false</model_dependent>
20
+ </argument>
21
+ <argument>
22
+ <name>feature_id</name>
23
+ <display_name>Feature ID</display_name>
24
+ <description>Feature ID.</description>
25
+ <type>String</type>
26
+ <required>true</required>
27
+ <model_dependent>false</model_dependent>
28
+ </argument>
29
+ <argument>
30
+ <name>surrounding_buildings</name>
31
+ <display_name>Surrounding Buildings</display_name>
32
+ <description>Select which surrounding buildings to include.</description>
33
+ <type>Choice</type>
34
+ <required>true</required>
35
+ <model_dependent>false</model_dependent>
36
+ <default_value>ShadingOnly</default_value>
37
+ <choices>
38
+ <choice>
39
+ <value>None</value>
40
+ <display_name>None</display_name>
41
+ </choice>
42
+ <choice>
43
+ <value>ShadingOnly</value>
44
+ <display_name>ShadingOnly</display_name>
45
+ </choice>
46
+ <choice>
47
+ <value>All</value>
48
+ <display_name>All</display_name>
49
+ </choice>
50
+ </choices>
51
+ </argument>
52
+ </arguments>
53
+ <outputs/>
54
+ <provenances/>
55
+ <tags>
56
+ <tag>Envelope.Form</tag>
57
+ </tags>
58
+ <attributes>
59
+ <attribute>
60
+ <name>Measure Type</name>
61
+ <value>ModelMeasure</value>
62
+ <datatype>string</datatype>
63
+ </attribute>
64
+ <attribute>
65
+ <name>Intended Software Tool</name>
66
+ <value>Apply Measure Now</value>
67
+ <datatype>string</datatype>
68
+ </attribute>
69
+ <attribute>
70
+ <name>Intended Software Tool</name>
71
+ <value>OpenStudio Application</value>
72
+ <datatype>string</datatype>
73
+ </attribute>
74
+ <attribute>
75
+ <name>Intended Software Tool</name>
76
+ <value>Parametric Analysis Tool</value>
77
+ <datatype>string</datatype>
78
+ </attribute>
79
+ <attribute>
80
+ <name>Intended Software Tool</name>
81
+ <value>Analysis Spreadsheet</value>
82
+ <datatype>string</datatype>
83
+ </attribute>
84
+ <attribute>
85
+ <name>Intended Use Case</name>
86
+ <value>Model Articulation</value>
87
+ <datatype>string</datatype>
88
+ </attribute>
89
+ </attributes>
90
+ <files>
91
+ <file>
92
+ <filename>README.md.erb</filename>
93
+ <filetype>erb</filetype>
94
+ <usage_type>readmeerb</usage_type>
95
+ <checksum>703C9964</checksum>
96
+ </file>
97
+ <file>
98
+ <filename>README.md</filename>
99
+ <filetype>md</filetype>
100
+ <usage_type>readme</usage_type>
101
+ <checksum>D339FA87</checksum>
102
+ </file>
103
+ <file>
104
+ <filename>LICENSE.md</filename>
105
+ <filetype>md</filetype>
106
+ <usage_type>license</usage_type>
107
+ <checksum>B646B327</checksum>
108
+ </file>
109
+ <file>
110
+ <filename>nrel_stm_footprints.geojson</filename>
111
+ <filetype>geojson</filetype>
112
+ <usage_type>test</usage_type>
113
+ <checksum>21E06908</checksum>
114
+ </file>
115
+ <file>
116
+ <filename>shadowed_tests.rb</filename>
117
+ <filetype>rb</filetype>
118
+ <usage_type>test</usage_type>
119
+ <checksum>53A7DD48</checksum>
120
+ </file>
121
+ <file>
122
+ <filename>urban_geometry_creation_test.rb</filename>
123
+ <filetype>rb</filetype>
124
+ <usage_type>test</usage_type>
125
+ <checksum>B55E2F27</checksum>
126
+ </file>
127
+ <file>
128
+ <version>
129
+ <software_program>OpenStudio</software_program>
130
+ <identifier>1.9.0</identifier>
131
+ <min_compatible>1.9.0</min_compatible>
132
+ </version>
133
+ <filename>measure.rb</filename>
134
+ <filetype>rb</filetype>
135
+ <usage_type>script</usage_type>
136
+ <checksum>E152B533</checksum>
137
+ </file>
138
+ </files>
139
+ </measure>