urbanopt-cli 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 934fbb0b9143d20253d46905afb758ecce76605d
4
+ data.tar.gz: 557e2cd9d0e4a4a201937c9c3b39fa237bb2cae0
5
+ SHA512:
6
+ metadata.gz: 528712d6caa6aae327c8e652db5df702a071f8184eecd40b4275e6534087d15559f3d951ecad0a5b7dcdf6e764c58bb301b8e06bcb1883a7896d82d3636f99e6
7
+ data.tar.gz: 5c5a9014e32e0ccc93e3c315c36832d1cb6b0fb1785c2cafd4f60ff1ac2f967f837af565888310bd280606d74cfeee2dc64b3d2d2f97df148e7a02b28c6e6e6e
data/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
12
+
13
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.2.4
data/CHANGELOG.md ADDED
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ ## Version 0.1.0
4
+
5
+ Iniital commit
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,58 @@
1
+ # URBANopt Contribution Policy
2
+
3
+ ## Version 1.0
4
+
5
+ The URBANopt team welcomes your contribution to the project. You can contribute to the URBANopt project in several ways: by using the software, reporting issues, contributing documentation, or contributing code back to the project. The GitHub [Contributing to Open Source](https://opensource.guide/how-to-contribute/) guide provides a good overview. If you contribute code, you agree that your contribution may be incorporated into the URBANopt Software Development Kit (SDK) and made available under the URBANopt SDK license.
6
+
7
+ The contribution process for URBANopt is composed of three steps:
8
+
9
+ ## 1. Send consent email
10
+
11
+ In order for us to distribute your code as part of URBANopt under the URBANopt SDK [license](https://github.com/urbanopt/urbanopt-scenario-gem/blob/develop/LICENSE.md), we’ll need your consent. An email acknowledging your understanding of these terms and agreeing to them is all that will be asked of any contributor. Send an email to the URBANopt project manager ([see below](#documentation) for the address) including the following text and a list of co-contributors (if any):
12
+
13
+ *I agree to contribute to the URBANopt SDK. I agree to the following terms and conditions for my contributions: First, I agree that I am licensing the copyright to my contributions under the terms of the current URBANopt SDK license. Second, I hereby grant to Alliance for Sustainable Energy, LLC, to any successor manager and distributor of URBANopt SDK appointed by the U.S. Department of Energy, and to all recipients of a version of URBANopt SDK that includes my contributions, a non-exclusive, worldwide, royalty-free, irrevocable patent license under any patent claims owned by me, or owned by my employer and known to me, that are or will be,necessarily infringed upon by my contributions alone, or by combination of my contributions with the version of URBANopt SDK to which they are contributed, to make, have made, use, offer to sell, sell, import, and otherwise transfer any version of URBANopt SDK that includes my contributions, in source code and object code form. Third, I represent and warrant that I am authorized to make the contributions and grant the foregoing license(s). Additionally, if, to my knowledge, my employer has rights to intellectual property that covers my contributions, I represent and warrant that I have received permission to make these contributions and grant the foregoing license(s) on behalf of my employer.*
14
+
15
+ Once we have your consent on file, you’ll only need to redo it if conditions change (e.g. a change of employer).
16
+
17
+ ## 2. Scope agreement and timeline commitment
18
+
19
+ If your contribution is small (e.g. a bug fix), simply submit your contribution via GitHub. If you find a bug, first make sure it is not an already known issue, then report it in the GitHub [issue tracker](https://github.com/urbanopt/urbanopt-scenario-gem/issues) for this repository. If your contribution is larger (e.g. a new feature or new functionality/capability), we’ll need to evaluate your proposed contribution first. We may ask you to revise your materials and make changes to it, which we will then re-review.
20
+
21
+ ## 3. Technical contribution process
22
+
23
+ We want URBANopt to adhere to our established quality standards. Smaller, non-code contributions may not require as much review as code contributions, but all contributions will be reviewed. Code contributions will initially be in a source control branch, and then will be merged into the official URBANopt repository after review and approval. Any bugs, either discovered by you, us, or any users will be tracked in our issue tracker. We request that you take full responsibility for correcting bugs. Be aware that, unless notified otherwise, the correction of bugs takes precedence over the submission or creation of new code.
24
+
25
+ ### Release Schedule
26
+
27
+ Contributions should be aligned with the URBANopt release schedule. The URBANopt SDK is currently released publicly two times each year (approximately on the last workday of March and October). There are cutoff dates for when new contributions are allowed for the upcoming release (approximately two weeks before release date). If your contribution is incomplete or comes in past the cutoff date for a release, we reserve the right to hold your code for a later release.
28
+
29
+ ### Coding Standards
30
+
31
+ Make sure you read and follow the coding standards when writing URBANopt SDK code. Although these standards are not complete or very detailed, they should give you an idea of the style that we would like you to adopt. New additions to the URBANopt SDK must be written using object-oriented programming techniques and practices. Please also look at the URBANopt SDK code itself as an example of the preferred coding style.
32
+
33
+ ### Code Reviews
34
+
35
+ You will be working and testing your code in a source control branch. When a piece of functionality is complete, tested and working, let us know and we will review your code. If the functionality that you contributed is complex, we may ask you for a written design document as well. We want your code to follow coding standards, be clear, readable, and maintainable, and of course it should do what it is supposed to do. We will look for errors, style issues, comments (or lack thereof), and any other issues in your code. We will inform you of our comments and we expect you to make the recommended changes. New re-reviews may be expected until the code complies with our required processes.
36
+
37
+ ### Unit Tests
38
+
39
+ We ask that you supply unit tests along with the code that you have written. A unit test is a program that exercises your code in isolation to verify that it does what it is supposed to do. Your unit tests are very important to us. First, they give an indication that your code works according to its intended functionality. Second, we execute your unit tests automatically along with our unit tests to verify that the overall URBANopt SDK code continues to work.
40
+
41
+ ### Code Coverage
42
+
43
+ We require that your unit tests provide an adequate coverage of the source code you are submitting. You will need to design your unit tests in such a way that all critical parts of the code (at least) are tested and verified.
44
+
45
+ ### Documentation
46
+
47
+ Proper documentation is crucial for our users, without it users will not know how to use your contribution. We require that you create user documentation so that end users know how to use your new functionality.
48
+
49
+ For further questions or information:
50
+
51
+ - Ben Polly\
52
+ URBANopt Project Management\
53
+ ben.polly@nrel.gov\
54
+ (303) 384-7429
55
+
56
+ URBANopt is funded by the U.S. Department of Energy (DOE) and managed by the National Renewable Energy Laboratory (NREL).
57
+
58
+ URBANopt is developed in collaboration with NREL, LBNL, and private firms.
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in uo_cli.gemspec
4
+ gemspec
data/Jenkinsfile ADDED
@@ -0,0 +1,10 @@
1
+ //Jenkins pipelines are stored in shared libaries. Please see: https://github.com/tijcolem/nrel_cbci_jenkins_libs
2
+
3
+ @Library('cbci_shared_libs') _
4
+
5
+ // Build for PR to develop branch only.
6
+ if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { // check if set
7
+
8
+ urbanopt_cli()
9
+
10
+ }
data/LICENSE.md ADDED
@@ -0,0 +1,29 @@
1
+ # License
2
+
3
+ URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
4
+ contributors. All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without modification,
7
+ are permitted provided that the following conditions are met:
8
+
9
+ Redistributions of source code must retain the above copyright notice, this list
10
+ of conditions and the following disclaimer.
11
+
12
+ Redistributions in binary form must reproduce the above copyright notice, this
13
+ list of conditions and the following disclaimer in the documentation and/or other
14
+ materials provided with the distribution.
15
+
16
+ Neither the name of the copyright holder nor the names of its contributors may be
17
+ used to endorse or promote products derived from this software without specific
18
+ prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
21
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
24
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
28
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
29
+ OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,71 @@
1
+ # UoCli
2
+
3
+ This is the command line interface (CLI) for URBANopt.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'uo_cli'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ ```terminal
16
+ bundle
17
+ ```
18
+
19
+ Or install it yourself with:
20
+
21
+ ```terminal
22
+ gem install uo_cli
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ For help text in your terminal, type:
28
+
29
+ ```terminal
30
+ uo -h
31
+ ```
32
+
33
+ Create a project folder:
34
+
35
+ ```terminal
36
+ uo -p <FOLDERNAME>
37
+ ```
38
+
39
+ Make ScenarioFiles from a FeatureFile using MapperFiles:
40
+
41
+ ```terminal
42
+ uo -m -f <FEATUREFILE>
43
+ ```
44
+
45
+ Run URBANopt energy simulations for each feature in your scenario:
46
+
47
+ ```terminal
48
+ uo -r -s <SCENARIOFILE> -f <FEATUREFILE>
49
+ ```
50
+
51
+ Aggregate simulations for a full scenario:
52
+
53
+ ```terminal
54
+ uo -a -s <SCENARIOFILE> -f <FEATUREFILE>
55
+ ```
56
+
57
+ Delete a scenario that you have already run:
58
+
59
+ ```terminal
60
+ uo -d -s <SCENARIOFILE>
61
+ ```
62
+
63
+ Installed CLI version:
64
+
65
+ ```terminal
66
+ uo -v
67
+ ```
68
+
69
+ ## Development
70
+
71
+ To install this gem onto your local machine, clone this repo and run `rake install`. If you make changes to this repo, update the version number in `lib/version.rb` in your first commit. When ready to release, run the changelog script at `lib/change_log.rb` and copy the appropriate portion of the output into `CHANGELOG.md`. Run `bundle exec rake release` which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "uo_cli"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/bin/uo ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/ ruby
2
+
3
+ require 'uo_cli'
4
+
5
+ uo_commands = URBANopt::CLI
@@ -0,0 +1,59 @@
1
+ source 'http://rubygems.org'
2
+
3
+ # Local gems are useful when developing and integrating the various dependencies.
4
+ # To favor the use of local gems, set the following environment variable:
5
+ # Mac: export FAVOR_LOCAL_GEMS=1
6
+ # Windows: set FAVOR_LOCAL_GEMS=1
7
+ # Note that if allow_local is true, but the gem is not found locally, then it will
8
+ # checkout the latest version (develop) from github.
9
+ allow_local = ENV['FAVOR_LOCAL_GEMS']
10
+
11
+ # Uncomment the extension, common measures, core gems if you need to test local development versions. Otherwise
12
+ # these are included in the model articulation and urbanopt gems
13
+ #
14
+ # if allow_local && File.exist?('../OpenStudio-extension-gem')
15
+ # gem 'openstudio-extension', path: '../OpenStudio-extension-gem'
16
+ # elsif allow_local
17
+ # gem 'openstudio-extension', github: 'NREL/OpenStudio-extension-gem', branch: 'develop'
18
+ # end
19
+ #
20
+ # if allow_local && File.exist?('../openstudio-common-measures-gem')
21
+ # gem 'openstudio-common-measures', path: '../openstudio-common-measures-gem'
22
+ # elsif allow_local
23
+ # gem 'openstudio-common-measures', github: 'NREL/openstudio-common-measures-gem', branch: 'develop'
24
+ # end
25
+ #
26
+ # if allow_local && File.exist?('../urbanopt-core-gem')
27
+ # gem 'urbanopt-core', path: '../urbanopt-core-gem'
28
+ # elsif allow_local
29
+ # gem 'urbanopt-core', github: 'URBANopt/urbanopt-core-gem', branch: 'develop'
30
+ # end
31
+ #
32
+ # if allow_local && File.exist?('../openstudio-model-articulation-gem')
33
+ # # gem 'openstudio-model-articulation', github: 'NREL/openstudio-model-articulation-gem', branch: 'develop'
34
+ # gem 'openstudio-model-articulation', path: '../openstudio-model-articulation-gem'
35
+ # elsif allow_local
36
+ # gem 'openstudio-model-articulation', github: 'NREL/openstudio-model-articulation-gem', branch: 'develop'
37
+ # else
38
+ # gem 'openstudio-model-articulation', '0.1.0'
39
+ # end
40
+
41
+ if allow_local && File.exist?('../urbanopt-scenario-gem')
42
+ gem 'urbanopt-scenario', path: '../urbanopt-scenario-gem'
43
+ elsif allow_local
44
+ gem 'urbanopt-scenario', github: 'URBANopt/urbanopt-scenario-gem', branch: 'post_process'
45
+ else
46
+ gem 'urbanopt-scenario', '0.1.1'
47
+ end
48
+
49
+ if allow_local && File.exists?('../urbanopt-geojson-gem')
50
+ # gem 'openstudio-extension', github: 'NREL/OpenStudio-extension-gem', branch: 'develop'
51
+ gem 'urbanopt-geojson', path: '../urbanopt-geojson-gem'
52
+ elsif allow_local
53
+ gem 'urbanopt-geojson', github: 'URBANopt/urbanopt-geojson-gem', branch: 'develop'
54
+ else
55
+ gem 'urbanopt-geojson', '0.1.0'
56
+ end
57
+
58
+ gem 'openstudio-standards', '0.2.10'
59
+ gem 'simplecov', github: 'NREL/simplecov'
@@ -0,0 +1,580 @@
1
+ {
2
+ "type": "FeatureCollection",
3
+ "features": [
4
+ {
5
+ "type": "Feature",
6
+ "properties": {
7
+ "id": "1",
8
+ "name": "Mixed_use 1",
9
+ "type": "Building",
10
+ "footprint_area": 188046,
11
+ "floor_area": 752184,
12
+ "number_of_stories": 4,
13
+ "building_type": "Mixed use",
14
+ "mixed_type_1_percentage": 50,
15
+ "mixed_type_2_percentage": 50,
16
+ "mixed_type_3_percentage": 0,
17
+ "mixed_type_4_percentage": 0,
18
+ "mixed_type_1": "Office",
19
+ "mixed_type_2": "Food service",
20
+ "mixed_type_3": "Strip shopping mall",
21
+ "mixed_type_4": "Lodging"
22
+ },
23
+ "geometry": {
24
+ "type": "Polygon",
25
+ "coordinates": [
26
+ [
27
+ [
28
+ -78.84650338745196,
29
+ 42.81331301863236
30
+ ],
31
+ [
32
+ -78.84652443964629,
33
+ 42.81463974371101
34
+ ],
35
+ [
36
+ -78.84680142363833,
37
+ 42.815293654042534
38
+ ],
39
+ [
40
+ -78.84744455124724,
41
+ 42.81514110006128
42
+ ],
43
+ [
44
+ -78.84728610028628,
45
+ 42.81478165791734
46
+ ],
47
+ [
48
+ -78.84786797764677,
49
+ 42.814643631760134
50
+ ],
51
+ [
52
+ -78.84721106637106,
53
+ 42.813153418927016
54
+ ],
55
+ [
56
+ -78.84650338745196,
57
+ 42.81331301863236
58
+ ]
59
+ ]
60
+ ]
61
+ }
62
+ },
63
+ {
64
+ "type": "Feature",
65
+ "properties": {
66
+ "id": "2",
67
+ "name": "Restaurant 1",
68
+ "type": "Building",
69
+ "footprint_area": 22313,
70
+ "floor_area": 22313,
71
+ "number_of_stories": 1,
72
+ "building_type": "Food service"
73
+ },
74
+ "geometry": {
75
+ "type": "Polygon",
76
+ "coordinates": [
77
+ [
78
+ [
79
+ -78.8500120420453,
80
+ 42.81812185529549
81
+ ],
82
+ [
83
+ -78.85038975191084,
84
+ 42.81803226424341
85
+ ],
86
+ [
87
+ -78.850630729414,
88
+ 42.81857888627522
89
+ ],
90
+ [
91
+ -78.85025301954843,
92
+ 42.81866847653532
93
+ ],
94
+ [
95
+ -78.8500120420453,
96
+ 42.81812185529549
97
+ ]
98
+ ]
99
+ ]
100
+ }
101
+ },
102
+ {
103
+ "type": "Feature",
104
+ "properties": {
105
+ "id": "3",
106
+ "name": "Residential 1",
107
+ "type": "Building",
108
+ "footprint_area": 41877,
109
+ "floor_area": 125631,
110
+ "number_of_stories": 3,
111
+ "building_type": "Multifamily (5 or more units)"
112
+ },
113
+ "geometry": {
114
+ "type": "Polygon",
115
+ "coordinates": [
116
+ [
117
+ [
118
+ -78.84962224800356,
119
+ 42.81329273502644
120
+ ],
121
+ [
122
+ -78.84929833482822,
123
+ 42.81337083838241
124
+ ],
125
+ [
126
+ -78.84983265832118,
127
+ 42.814563298664666
128
+ ],
129
+ [
130
+ -78.85015657149653,
131
+ 42.81448519681467
132
+ ],
133
+ [
134
+ -78.84962224800356,
135
+ 42.81329273502644
136
+ ]
137
+ ]
138
+ ]
139
+ }
140
+ },
141
+ {
142
+ "type": "Feature",
143
+ "properties": {
144
+ "id": "4",
145
+ "name": "Residential 2",
146
+ "type": "Building",
147
+ "footprint_area": 10541,
148
+ "floor_area": 31623,
149
+ "number_of_stories": 3,
150
+ "building_type": "Multifamily (5 or more units)"
151
+ },
152
+ "geometry": {
153
+ "type": "Polygon",
154
+ "coordinates": [
155
+ [
156
+ [
157
+ -78.84907318596754,
158
+ 42.81342719667407
159
+ ],
160
+ [
161
+ -78.84862090048105,
162
+ 42.81353625345659
163
+ ],
164
+ [
165
+ -78.84871721918239,
166
+ 42.813751210926796
167
+ ],
168
+ [
169
+ -78.84916950466888,
170
+ 42.81364215452331
171
+ ],
172
+ [
173
+ -78.84907318596754,
174
+ 42.81342719667407
175
+ ]
176
+ ]
177
+ ]
178
+ }
179
+ },
180
+ {
181
+ "type": "Feature",
182
+ "properties": {
183
+ "id": "5",
184
+ "name": "Residential 4 ",
185
+ "type": "Building",
186
+ "footprint_area": 8804,
187
+ "floor_area": 8804,
188
+ "number_of_stories": 1,
189
+ "building_type": "Multifamily (5 or more units)"
190
+ },
191
+ "geometry": {
192
+ "type": "Polygon",
193
+ "coordinates": [
194
+ [
195
+ [
196
+ -78.84809175426629,
197
+ 42.81367038997507
198
+ ],
199
+ [
200
+ -78.84848670778973,
201
+ 42.81357515750889
202
+ ],
203
+ [
204
+ -78.84857883872144,
205
+ 42.81378076888831
206
+ ],
207
+ [
208
+ -78.84818388519801,
209
+ 42.81387600103781
210
+ ],
211
+ [
212
+ -78.84809175426629,
213
+ 42.81367038997507
214
+ ]
215
+ ]
216
+ ]
217
+ }
218
+ },
219
+ {
220
+ "type": "Feature",
221
+ "properties": {
222
+ "id": "6",
223
+ "name": "Residential 5",
224
+ "type": "Building",
225
+ "footprint_area": 10689,
226
+ "floor_area": 10689,
227
+ "number_of_stories": 1,
228
+ "building_type": "Multifamily (2 to 4 units)"
229
+ },
230
+ "geometry": {
231
+ "type": "Polygon",
232
+ "coordinates": [
233
+ [
234
+ [
235
+ -78.84846106738529,
236
+ 42.814495803077364
237
+ ],
238
+ [
239
+ -78.8486903952376,
240
+ 42.81444050756261
241
+ ],
242
+ [
243
+ -78.8484977578349,
244
+ 42.81401059666683
245
+ ],
246
+ [
247
+ -78.84826842998261,
248
+ 42.81406589256599
249
+ ],
250
+ [
251
+ -78.84846106738529,
252
+ 42.814495803077364
253
+ ]
254
+ ]
255
+ ]
256
+ }
257
+ },
258
+ {
259
+ "type": "Feature",
260
+ "properties": {
261
+ "id": "7",
262
+ "name": "Office 1",
263
+ "type": "Building",
264
+ "footprint_area": 54284,
265
+ "floor_area": 325704,
266
+ "number_of_stories": 6,
267
+ "building_type": "Office"
268
+ },
269
+ "geometry": {
270
+ "type": "Polygon",
271
+ "coordinates": [
272
+ [
273
+ [
274
+ -78.84733878006863,
275
+ 42.816466983030836
276
+ ],
277
+ [
278
+ -78.84854275129324,
279
+ 42.81617669028003
280
+ ],
281
+ [
282
+ -78.848356395545,
283
+ 42.81576080994094
284
+ ],
285
+ [
286
+ -78.84715242432038,
287
+ 42.81605110464406
288
+ ],
289
+ [
290
+ -78.84733878006863,
291
+ 42.816466983030836
292
+ ]
293
+ ]
294
+ ]
295
+ }
296
+ },
297
+ {
298
+ "type": "Feature",
299
+ "properties": {
300
+ "id": "8",
301
+ "name": "Hospital 1",
302
+ "type": "Building",
303
+ "footprint_area": 40320,
304
+ "floor_area": 403200,
305
+ "number_of_stories": 10,
306
+ "building_type": "Outpatient health care"
307
+ },
308
+ "geometry": {
309
+ "type": "Polygon",
310
+ "coordinates": [
311
+ [
312
+ [
313
+ -78.84973966335251,
314
+ 42.8154441454509
315
+ ],
316
+ [
317
+ -78.85049562542395,
318
+ 42.81525669280299
319
+ ],
320
+ [
321
+ -78.85078257620685,
322
+ 42.81588131780643
323
+ ],
324
+ [
325
+ -78.8505086568277,
326
+ 42.81594736368234
327
+ ],
328
+ [
329
+ -78.85041233812638,
330
+ 42.815732413845666
331
+ ],
332
+ [
333
+ -78.84991755499783,
334
+ 42.81585689105046
335
+ ],
336
+ [
337
+ -78.84973966335251,
338
+ 42.8154441454509
339
+ ]
340
+ ]
341
+ ]
342
+ }
343
+ },
344
+ {
345
+ "type": "Feature",
346
+ "properties": {
347
+ "id": "9",
348
+ "name": "Hospital 2",
349
+ "type": "Building",
350
+ "footprint_area": 95657,
351
+ "floor_area": 286971,
352
+ "number_of_stories": 3,
353
+ "building_type": "Inpatient health care"
354
+ },
355
+ "geometry": {
356
+ "type": "Polygon",
357
+ "coordinates": [
358
+ [
359
+ [
360
+ -78.85083627755732,
361
+ 42.81600678613279
362
+ ],
363
+ [
364
+ -78.85056039001891,
365
+ 42.816076133580566
366
+ ],
367
+ [
368
+ -78.85072568130569,
369
+ 42.816450649528036
370
+ ],
371
+ [
372
+ -78.84940134236577,
373
+ 42.81677160705479
374
+ ],
375
+ [
376
+ -78.84958014898304,
377
+ 42.81716858994267
378
+ ],
379
+ [
380
+ -78.8507262115271,
381
+ 42.816890840117026
382
+ ],
383
+ [
384
+ -78.8508565789851,
385
+ 42.81719595796099
386
+ ],
387
+ [
388
+ -78.85132137101688,
389
+ 42.81708331517635
390
+ ],
391
+ [
392
+ -78.85083627755732,
393
+ 42.81600678613279
394
+ ]
395
+ ]
396
+ ]
397
+ }
398
+ },
399
+ {
400
+ "type": "Feature",
401
+ "properties": {
402
+ "id": "10",
403
+ "name": "Mixed use 2",
404
+ "type": "Building",
405
+ "footprint_area": 159798,
406
+ "floor_area": 1278384,
407
+ "number_of_stories": 8,
408
+ "building_type": "Mixed use",
409
+ "mixed_type_1_percentage": 25,
410
+ "mixed_type_2_percentage": 25,
411
+ "mixed_type_3_percentage": 15,
412
+ "mixed_type_4_percentage": 35,
413
+ "mixed_type_1": "Strip shopping mall",
414
+ "mixed_type_2": "Food service",
415
+ "mixed_type_3": "Office",
416
+ "mixed_type_4": "Lodging"
417
+ },
418
+ "geometry": {
419
+ "type": "Polygon",
420
+ "coordinates": [
421
+ [
422
+ [
423
+ -78.85115264550463,
424
+ 42.81786093060211
425
+ ],
426
+ [
427
+ -78.85163483958878,
428
+ 42.81774467026972
429
+ ],
430
+ [
431
+ -78.85246596719499,
432
+ 42.819583261120755
433
+ ],
434
+ [
435
+ -78.85082390085432,
436
+ 42.819979162017745
437
+ ],
438
+ [
439
+ -78.85060552295334,
440
+ 42.81947573727234
441
+ ],
442
+ [
443
+ -78.85174564783776,
444
+ 42.81920483484765
445
+ ],
446
+ [
447
+ -78.85115264550463,
448
+ 42.81786093060211
449
+ ]
450
+ ]
451
+ ]
452
+ }
453
+ },
454
+ {
455
+ "type": "Feature",
456
+ "properties": {
457
+ "id": "11",
458
+ "name": "Residential 3",
459
+ "type": "Building",
460
+ "footprint_area": 10837,
461
+ "floor_area": 32511,
462
+ "number_of_stories": 3,
463
+ "building_type": "Multifamily (5 or more units)"
464
+ },
465
+ "geometry": {
466
+ "type": "Polygon",
467
+ "coordinates": [
468
+ [
469
+ [
470
+ -78.84961163640645,
471
+ 42.81460851835703
472
+ ],
473
+ [
474
+ -78.84914661048371,
475
+ 42.81472064501696
476
+ ],
477
+ [
478
+ -78.84905029178236,
479
+ 42.81450569091638
480
+ ],
481
+ [
482
+ -78.84951531770513,
483
+ 42.81439356386673
484
+ ],
485
+ [
486
+ -78.84961163640645,
487
+ 42.81460851835703
488
+ ]
489
+ ]
490
+ ]
491
+ }
492
+ },
493
+ {
494
+ "type": "Feature",
495
+ "properties": {
496
+ "id": "12",
497
+ "name": "Mall 1",
498
+ "type": "Building",
499
+ "footprint_area": 124803,
500
+ "floor_area": 374409,
501
+ "number_of_stories": 3,
502
+ "building_type": "Strip shopping mall"
503
+ },
504
+ "geometry": {
505
+ "type": "Polygon",
506
+ "coordinates": [
507
+ [
508
+ [
509
+ -78.84768338040897,
510
+ 42.817161656757065
511
+ ],
512
+ [
513
+ -78.8482630702579,
514
+ 42.8170218879136
515
+ ],
516
+ [
517
+ -78.84915297130291,
518
+ 42.81900776764229
519
+ ],
520
+ [
521
+ -78.84857328145401,
522
+ 42.81914753199706
523
+ ],
524
+ [
525
+ -78.84768338040897,
526
+ 42.817161656757065
527
+ ]
528
+ ]
529
+ ]
530
+ }
531
+ },
532
+ {
533
+ "type": "Feature",
534
+ "properties": {
535
+ "id": "13",
536
+ "name": "Hotel 1",
537
+ "type": "Building",
538
+ "footprint_area": 31616,
539
+ "floor_area": 316160,
540
+ "number_of_stories": 10,
541
+ "building_type": "Lodging"
542
+ },
543
+ "geometry": {
544
+ "type": "Polygon",
545
+ "coordinates": [
546
+ [
547
+ [
548
+ -78.8494955083645,
549
+ 42.819748790984335
550
+ ],
551
+ [
552
+ -78.84891089471263,
553
+ 42.81989327725856
554
+ ],
555
+ [
556
+ -78.8491389243777,
557
+ 42.82038967009544
558
+ ],
559
+ [
560
+ -78.84972353802956,
561
+ 42.82024518498119
562
+ ],
563
+ [
564
+ -78.8494955083645,
565
+ 42.819748790984335
566
+ ]
567
+ ]
568
+ ]
569
+ }
570
+ }
571
+ ],
572
+ "mappers": [],
573
+ "scenarios": [
574
+ {
575
+ "id": "72301739-c6c3-4dd7-bf1a-f37c8eff40db",
576
+ "name": "New Scenario",
577
+ "feature_mappings": []
578
+ }
579
+ ]
580
+ }