urbanopt-geojson 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +24 -0
- data/.rakeTasks +7 -0
- data/.rdoc_options +43 -0
- data/.rspec +2 -0
- data/.rubocop.yml +10 -0
- data/.travis.yml +35 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +27 -0
- data/Jenkinsfile +10 -0
- data/LICENSE.md +27 -0
- data/RDOC_MAIN.md +48 -0
- data/README.md +40 -0
- data/Rakefile +45 -0
- data/deploy_docs.sh +4 -0
- data/doc_templates/LICENSE.md +27 -0
- data/doc_templates/README.md.erb +42 -0
- data/doc_templates/copyright_erb.txt +31 -0
- data/doc_templates/copyright_js.txt +4 -0
- data/doc_templates/copyright_ruby.txt +29 -0
- data/docs/.gitignore +3 -0
- data/docs/.vuepress/components/BuildingProperties.vue +12 -0
- data/docs/.vuepress/components/DistrictSystemProperties.vue +12 -0
- data/docs/.vuepress/components/ElectricalConnectorProperties.vue +12 -0
- data/docs/.vuepress/components/ElectricalJunctionProperties.vue +12 -0
- data/docs/.vuepress/components/InnerJsonSchema.vue +80 -0
- data/docs/.vuepress/components/JsonSchema.vue +12 -0
- data/docs/.vuepress/components/RegionProperties.vue +12 -0
- data/docs/.vuepress/components/SiteProperties.vue +12 -0
- data/docs/.vuepress/components/StaticLink.vue +8 -0
- data/docs/.vuepress/components/ThermalConnectorProperties.vue +12 -0
- data/docs/.vuepress/components/ThermalJunctionProperties.vue +12 -0
- data/docs/.vuepress/config.js +22 -0
- data/docs/.vuepress/highlight.js +8 -0
- data/docs/.vuepress/public/custom_rdoc_styles.css +64 -0
- data/docs/.vuepress/utils.js +17 -0
- data/docs/README.md +30 -0
- data/docs/doc/created.rid +0 -0
- data/docs/package-lock.json +11771 -0
- data/docs/package.json +22 -0
- data/docs/schemas/building-properties.md +3 -0
- data/docs/schemas/district-system-properties.md +3 -0
- data/docs/schemas/electrical-connector-properties.md +3 -0
- data/docs/schemas/electrical-junction-properties.md +3 -0
- data/docs/schemas/region-properties.md +3 -0
- data/docs/schemas/site-properties.md +3 -0
- data/docs/schemas/thermal-connector-properties.md +3 -0
- data/docs/schemas/thermal-junction-properties.md +3 -0
- data/lib/measures/.rubocop.yml +5 -0
- data/lib/measures/urban_geometry_creation/LICENSE.md +27 -0
- data/lib/measures/urban_geometry_creation/README.md +48 -0
- data/lib/measures/urban_geometry_creation/README.md.erb +42 -0
- data/lib/measures/urban_geometry_creation/measure.rb +199 -0
- data/lib/measures/urban_geometry_creation/measure.xml +139 -0
- data/lib/measures/urban_geometry_creation/tests/nrel_stm_footprints.geojson +3238 -0
- data/lib/measures/urban_geometry_creation/tests/shadowed_tests.rb +80 -0
- data/lib/measures/urban_geometry_creation/tests/urban_geometry_creation_test.rb +143 -0
- data/lib/measures/urban_geometry_creation_zoning/LICENSE.md +27 -0
- data/lib/measures/urban_geometry_creation_zoning/README.md +48 -0
- data/lib/measures/urban_geometry_creation_zoning/README.md.erb +42 -0
- data/lib/measures/urban_geometry_creation_zoning/measure.rb +203 -0
- data/lib/measures/urban_geometry_creation_zoning/measure.xml +133 -0
- data/lib/measures/urban_geometry_creation_zoning/tests/nrel_stm_footprints.geojson +3238 -0
- data/lib/measures/urban_geometry_creation_zoning/tests/urban_geometry_creation_test.rb +143 -0
- data/lib/urbanopt/geojson.rb +41 -0
- data/lib/urbanopt/geojson/building.rb +341 -0
- data/lib/urbanopt/geojson/district_system.rb +53 -0
- data/lib/urbanopt/geojson/extension.rb +63 -0
- data/lib/urbanopt/geojson/feature.rb +206 -0
- data/lib/urbanopt/geojson/geo_file.rb +154 -0
- data/lib/urbanopt/geojson/helper.rb +340 -0
- data/lib/urbanopt/geojson/logging.rb +46 -0
- data/lib/urbanopt/geojson/mapper_classes.rb +85 -0
- data/lib/urbanopt/geojson/model.rb +133 -0
- data/lib/urbanopt/geojson/region.rb +55 -0
- data/lib/urbanopt/geojson/schema/building_properties.json +358 -0
- data/lib/urbanopt/geojson/schema/district_system_properties.json +137 -0
- data/lib/urbanopt/geojson/schema/electrical_connector_properties.json +77 -0
- data/lib/urbanopt/geojson/schema/electrical_junction_properties.json +64 -0
- data/lib/urbanopt/geojson/schema/geojson_schema.json +323 -0
- data/lib/urbanopt/geojson/schema/region_properties.json +93 -0
- data/lib/urbanopt/geojson/schema/site_properties.json +87 -0
- data/lib/urbanopt/geojson/schema/thermal_connector_properties.json +107 -0
- data/lib/urbanopt/geojson/schema/thermal_junction_properties.json +83 -0
- data/lib/urbanopt/geojson/update_areas.rb +102 -0
- data/lib/urbanopt/geojson/validate_geojson.rb +147 -0
- data/lib/urbanopt/geojson/version.rb +35 -0
- data/lib/urbanopt/geojson/workflows/building.osw +187 -0
- data/lib/urbanopt/geojson/workflows/building.osw.out +2806 -0
- data/lib/urbanopt/geojson/workflows/district_system.osw +84 -0
- data/lib/urbanopt/geojson/workflows/district_system.osw.out +646 -0
- data/lib/urbanopt/geojson/zoning.rb +134 -0
- data/package-lock.json +3 -0
- data/urbanopt-geojson-gem.gemspec +39 -0
- 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,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>
|