urbanopt-cli 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aff17fbc8bc992bae6f6996722aaffe1c5c6da618808eb3da7c65e38091531f2
4
- data.tar.gz: 8cc4327c2e5d9d81937c76fc3371795673b1a3f46783bb1794f00b687bf3ec1e
3
+ metadata.gz: fc3f2e38d0e23b0b01add165d3459f4abf5b37482018d148e89ffeaa024db9b9
4
+ data.tar.gz: 763bfe69e81be0763235196abb1e2749483fc1f9c6a6718e5a97222cbbd0c5fc
5
5
  SHA512:
6
- metadata.gz: 4a46b6736438e5ffa779321ee1fa9e20a4bdb5b7fe067891f763da4d650da66e576ecaf2e9ab9a984cb2212f2b8316c6a47d25e1fe2eecc8c3e141bb094fafef
7
- data.tar.gz: f1aca2e9be941ba1c8a21a2072c9110de9837f5d2128139f0c7e9fa175865ff1269c29e03c7f9e3883cbe64c27672873a4a5f7d6fcc6d2e75bcf7d07a473b688
6
+ metadata.gz: fd2a7ff86a5ba8442b9b03836c0b299d55ddad8175e9757049cfccab1877efc1cb153b9653b3725735e5d13fc161412e0d62d8d6c9a250e911dc246ef4cff4bc
7
+ data.tar.gz: 526a186e149cce00eee2ee85694a6d3b84d903d42cf94d6c214698f13c7db05aab04cc8cfef57d6f5ce0f244b55a8ee811cbcba7b3ae63c7105328b4230b5905
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## Version 0.6.2
4
+
5
+ Date Range 7/2/21 - 7/22/21
6
+
7
+ - Fixed [#246]( https://github.com/urbanopt/urbanopt-cli/issues/246 ), Fix Visualizations for other fuels
8
+ - Fixed [#250]( https://github.com/urbanopt/urbanopt-cli/issues/250 ), Integrate RNM functionality
9
+ - Fixed [#252]( https://github.com/urbanopt/urbanopt-cli/issues/252 ), Utilize ASHRAE 90.1 Laboratory prototype model
10
+
3
11
  ## Version 0.6.1
4
12
 
5
13
  Date Range 5/1/21 - 7/1/21
data/CMakeLists.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  cmake_minimum_required(VERSION 3.10.2)
2
2
  cmake_policy(SET CMP0048 NEW)
3
3
 
4
- project(UrbanOptCLI VERSION 0.6.0)
4
+ project(UrbanOptCLI VERSION 0.6.1)
5
5
 
6
6
  include(FindOpenStudioSDK.cmake)
7
7
 
@@ -89,16 +89,16 @@ option(BUILD_PACKAGE "Build package" OFF)
89
89
  # need to update the MD5sum for each platform and url below
90
90
  if(UNIX)
91
91
  if(APPLE)
92
- set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-20210608-darwin.tar.gz")
93
- set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "c169a00c4b01e4a7e69321d0def3f72d")
92
+ set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-20210709-darwin.tar.gz")
93
+ set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "87513383adca79de074cca2ea4ffc4a8")
94
94
  else()
95
- set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-20210514-linux.tar.gz")
96
- set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "5dd39375b9b5d3a947ef761f5dd2333a")
95
+ set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-20210709-linux.tar.gz")
96
+ set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "93ce8920db98344a44abd691567c2c77")
97
97
  endif()
98
98
  elseif(WIN32)
99
99
  if(CMAKE_CL_64)
100
- set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-20210514-windows.tar.gz")
101
- set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "2f403a31d7192fdb457e6fcfd0d47156")
100
+ set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-20210709-windows.tar.gz")
101
+ set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "487e0668e92cc44e46a59693ccb910a3")
102
102
  endif()
103
103
  endif()
104
104
 
data/Gemfile CHANGED
@@ -42,13 +42,13 @@ allow_local = ENV['FAVOR_LOCAL_GEMS']
42
42
  # if allow_local && File.exist?('../urbanopt-geojson-gem')
43
43
  # gem 'urbanopt-geojson', path: '../urbanopt-geojson-gem'
44
44
  # elsif allow_local
45
- # gem 'urbanopt-geojson', github: 'URBANopt/urbanopt-geojson-gem', branch: 'develop'
45
+ # gem 'urbanopt-geojson', github: 'URBANopt/urbanopt-geojson-gem', branch: 'develop'
46
46
  # end
47
47
 
48
48
  # if allow_local && File.exist?('../urbanopt-reopt-gem')
49
49
  # gem 'urbanopt-reopt', path: '../urbanopt-reopt-gem'
50
50
  # elsif allow_local
51
- gem 'urbanopt-reopt', github: 'URBANopt/urbanopt-reopt-gem', branch: 'develop'
51
+ # gem 'urbanopt-reopt', github: 'URBANopt/urbanopt-reopt-gem', branch: 'develop'
52
52
  # end
53
53
 
54
54
  # if allow_local && File.exist?('../openstudio-load-flexibility-measures')
@@ -62,3 +62,9 @@ gem 'urbanopt-reopt', github: 'URBANopt/urbanopt-reopt-gem', branch: 'develop'
62
62
  # elsif allow_local
63
63
  # gem 'urbanopt-reporting', github: 'URBANopt/urbanopt-reporting-gem', branch: 'develop'
64
64
  # end
65
+
66
+ # if allow_local && File.exist?('../urbanopt-rnm-us-gem')
67
+ # gem 'urbanopt-rnm-us', path: '../urbanopt-rnm-us-gem'
68
+ # elsif allow_local
69
+ # gem 'urbanopt-rnm-us', github: 'URBANopt/urbanopt-rnm-us-gem', branch: 'develop'
70
+ # end
@@ -0,0 +1,826 @@
1
+ {
2
+ "type": "FeatureCollection",
3
+ "project": {
4
+ "id": "7c33a001-bccb-413e-ac87-67558b5d4b07",
5
+ "name": "New Project",
6
+ "surface_elevation": null,
7
+ "import_surrounding_buildings_as_shading": null,
8
+ "weather_filename": "USA_NY_Buffalo-Greater.Buffalo.Intl.AP.725280_TMY3.epw",
9
+ "tariff_filename": null,
10
+ "climate_zone": "6A",
11
+ "cec_climate_zone": null,
12
+ "begin_date": "2017-01-01T07:00:00.000Z",
13
+ "end_date": "2017-12-31T07:00:00.000Z",
14
+ "timesteps_per_hour": 1,
15
+ "default_template": "90.1-2013",
16
+ "underground_cables_ratio": "0.9",
17
+ "only_lv_consumers": false,
18
+ "max_number_of_lv_nodes_per_building": 1
19
+ },
20
+ "features": [
21
+ {
22
+ "type": "Feature",
23
+ "properties": {
24
+ "id": "53340c2c-ab20-40db-aba1-11ac607c52a7",
25
+ "begin_date": "2017-01-01T07:00:00.000Z",
26
+ "cec_climate_zone": null,
27
+ "climate_zone": "6A",
28
+ "default_template": "90.1-2013",
29
+ "end_date": "2017-12-31T07:00:00.000Z",
30
+ "import_surrounding_buildings_as_shading": null,
31
+ "name": "Site Origin",
32
+ "surface_elevation": null,
33
+ "tariff_filename": null,
34
+ "timesteps_per_hour": 1,
35
+ "type": "Site Origin",
36
+ "weather_filename": "USA_NY_Buffalo-Greater.Buffalo.Intl.AP.725280_TMY3.epw"
37
+ },
38
+ "geometry": {
39
+ "coordinates": [
40
+ -78.84948467732347,
41
+ 42.81677154451123
42
+ ],
43
+ "type": "Point"
44
+ }
45
+ },
46
+ {
47
+ "type": "Feature",
48
+ "properties": {
49
+ "id": "1",
50
+ "building_type": "Mixed use",
51
+ "floor_area": 752184,
52
+ "footprint_area": 188046,
53
+ "mixed_type_1": "Office",
54
+ "mixed_type_1_percentage": 50,
55
+ "mixed_type_2": "Food service",
56
+ "mixed_type_2_percentage": 50,
57
+ "mixed_type_3": "Strip shopping mall",
58
+ "mixed_type_3_percentage": 0,
59
+ "mixed_type_4": "Lodging",
60
+ "mixed_type_4_percentage": 0,
61
+ "name": "Mixed_use 1",
62
+ "number_of_stories": 4,
63
+ "type": "Building"
64
+ },
65
+ "geometry": {
66
+ "coordinates": [
67
+ [
68
+ [
69
+ -78.84650338745196,
70
+ 42.81331301863236
71
+ ],
72
+ [
73
+ -78.84652443964629,
74
+ 42.81463974371101
75
+ ],
76
+ [
77
+ -78.84680142363833,
78
+ 42.815293654042534
79
+ ],
80
+ [
81
+ -78.84744455124724,
82
+ 42.81514110006128
83
+ ],
84
+ [
85
+ -78.84728610028628,
86
+ 42.81478165791734
87
+ ],
88
+ [
89
+ -78.84786797764677,
90
+ 42.814643631760134
91
+ ],
92
+ [
93
+ -78.84721106637106,
94
+ 42.813153418927016
95
+ ],
96
+ [
97
+ -78.84650338745196,
98
+ 42.81331301863236
99
+ ]
100
+ ]
101
+ ],
102
+ "type": "Polygon"
103
+ }
104
+ },
105
+ {
106
+ "type": "Feature",
107
+ "properties": {
108
+ "id": "2",
109
+ "building_type": "Food service",
110
+ "floor_area": 22313,
111
+ "footprint_area": 22313,
112
+ "name": "Restaurant 1",
113
+ "number_of_stories": 1,
114
+ "type": "Building"
115
+ },
116
+ "geometry": {
117
+ "coordinates": [
118
+ [
119
+ [
120
+ -78.8500120420453,
121
+ 42.81812185529549
122
+ ],
123
+ [
124
+ -78.85038975191084,
125
+ 42.81803226424341
126
+ ],
127
+ [
128
+ -78.850630729414,
129
+ 42.81857888627522
130
+ ],
131
+ [
132
+ -78.85025301954843,
133
+ 42.81866847653532
134
+ ],
135
+ [
136
+ -78.8500120420453,
137
+ 42.81812185529549
138
+ ]
139
+ ]
140
+ ],
141
+ "type": "Polygon"
142
+ }
143
+ },
144
+ {
145
+ "type": "Feature",
146
+ "properties": {
147
+ "id": "3",
148
+ "name": "Restaurant 10",
149
+ "type": "Building",
150
+ "footprint_area": 41877,
151
+ "floor_area": 125631,
152
+ "number_of_stories": 3,
153
+ "building_type": "Food service"
154
+ },
155
+ "geometry": {
156
+ "type": "Polygon",
157
+ "coordinates": [
158
+ [
159
+ [
160
+ -78.84962224800356,
161
+ 42.81329273502644
162
+ ],
163
+ [
164
+ -78.84929833482822,
165
+ 42.81337083838241
166
+ ],
167
+ [
168
+ -78.84983265832118,
169
+ 42.814563298664666
170
+ ],
171
+ [
172
+ -78.85015657149653,
173
+ 42.81448519681467
174
+ ],
175
+ [
176
+ -78.84962224800356,
177
+ 42.81329273502644
178
+ ]
179
+ ]
180
+ ]
181
+ }
182
+ },
183
+ {
184
+ "type": "Feature",
185
+ "properties": {
186
+ "id": "4",
187
+ "name": "Restaurant 12",
188
+ "type": "Building",
189
+ "footprint_area": 10541,
190
+ "floor_area": 31623,
191
+ "number_of_stories": 3,
192
+ "building_type": "Food service"
193
+ },
194
+ "geometry": {
195
+ "type": "Polygon",
196
+ "coordinates": [
197
+ [
198
+ [
199
+ -78.84907318596754,
200
+ 42.81342719667407
201
+ ],
202
+ [
203
+ -78.84862090048105,
204
+ 42.81353625345659
205
+ ],
206
+ [
207
+ -78.84871721918239,
208
+ 42.813751210926796
209
+ ],
210
+ [
211
+ -78.84916950466888,
212
+ 42.81364215452331
213
+ ],
214
+ [
215
+ -78.84907318596754,
216
+ 42.81342719667407
217
+ ]
218
+ ]
219
+ ]
220
+ }
221
+ },
222
+ {
223
+ "type": "Feature",
224
+ "properties": {
225
+ "id": "5",
226
+ "name": "Restaurant 14",
227
+ "type": "Building",
228
+ "footprint_area": 8804,
229
+ "floor_area": 8804,
230
+ "number_of_stories": 1,
231
+ "building_type": "Food service"
232
+ },
233
+ "geometry": {
234
+ "type": "Polygon",
235
+ "coordinates": [
236
+ [
237
+ [
238
+ -78.84809175426629,
239
+ 42.81367038997507
240
+ ],
241
+ [
242
+ -78.84848670778973,
243
+ 42.81357515750889
244
+ ],
245
+ [
246
+ -78.84857883872144,
247
+ 42.81378076888831
248
+ ],
249
+ [
250
+ -78.84818388519801,
251
+ 42.81387600103781
252
+ ],
253
+ [
254
+ -78.84809175426629,
255
+ 42.81367038997507
256
+ ]
257
+ ]
258
+ ]
259
+ }
260
+ },
261
+ {
262
+ "type": "Feature",
263
+ "properties": {
264
+ "id": "6",
265
+ "name": "Restaurant 15",
266
+ "type": "Building",
267
+ "footprint_area": 10689,
268
+ "floor_area": 10689,
269
+ "number_of_stories": 1,
270
+ "building_type": "Food service"
271
+ },
272
+ "geometry": {
273
+ "type": "Polygon",
274
+ "coordinates": [
275
+ [
276
+ [
277
+ -78.84846106738529,
278
+ 42.814495803077364
279
+ ],
280
+ [
281
+ -78.8486903952376,
282
+ 42.81444050756261
283
+ ],
284
+ [
285
+ -78.8484977578349,
286
+ 42.81401059666683
287
+ ],
288
+ [
289
+ -78.84826842998261,
290
+ 42.81406589256599
291
+ ],
292
+ [
293
+ -78.84846106738529,
294
+ 42.814495803077364
295
+ ]
296
+ ]
297
+ ]
298
+ }
299
+ },
300
+ {
301
+ "type": "Feature",
302
+ "properties": {
303
+ "id": "7",
304
+ "building_type": "Office",
305
+ "detailed_model_filename": "7.osm",
306
+ "number_of_stories": 6,
307
+ "name": "Office 1",
308
+ "type": "Building"
309
+ },
310
+ "geometry": {
311
+ "coordinates": [
312
+ [
313
+ [
314
+ -78.84733878006863,
315
+ 42.816466983030836
316
+ ],
317
+ [
318
+ -78.84854275129324,
319
+ 42.81617669028003
320
+ ],
321
+ [
322
+ -78.848356395545,
323
+ 42.81576080994094
324
+ ],
325
+ [
326
+ -78.84715242432038,
327
+ 42.81605110464406
328
+ ],
329
+ [
330
+ -78.84733878006863,
331
+ 42.816466983030836
332
+ ]
333
+ ]
334
+ ],
335
+ "type": "Polygon"
336
+ }
337
+ },
338
+ {
339
+ "type": "Feature",
340
+ "properties": {
341
+ "id": "8",
342
+ "building_type": "Outpatient health care",
343
+ "name": "Hospital 1",
344
+ "detailed_model_filename": "8.osm",
345
+ "number_of_stories": 10,
346
+ "type": "Building"
347
+ },
348
+ "geometry": {
349
+ "coordinates": [
350
+ [
351
+ [
352
+ -78.84973966335251,
353
+ 42.8154441454509
354
+ ],
355
+ [
356
+ -78.85049562542395,
357
+ 42.81525669280299
358
+ ],
359
+ [
360
+ -78.85078257620685,
361
+ 42.81588131780643
362
+ ],
363
+ [
364
+ -78.8505086568277,
365
+ 42.81594736368234
366
+ ],
367
+ [
368
+ -78.85041233812638,
369
+ 42.815732413845666
370
+ ],
371
+ [
372
+ -78.84991755499783,
373
+ 42.81585689105046
374
+ ],
375
+ [
376
+ -78.84973966335251,
377
+ 42.8154441454509
378
+ ]
379
+ ]
380
+ ],
381
+ "type": "Polygon"
382
+ }
383
+ },
384
+ {
385
+ "type": "Feature",
386
+ "properties": {
387
+ "id": "9",
388
+ "building_type": "Inpatient health care",
389
+ "detailed_model_filename": "9.osm",
390
+ "name": "Hospital 2",
391
+ "number_of_stories": 3,
392
+ "type": "Building"
393
+ },
394
+ "geometry": {
395
+ "coordinates": [
396
+ [
397
+ [
398
+ -78.85083627755732,
399
+ 42.81600678613279
400
+ ],
401
+ [
402
+ -78.85056039001891,
403
+ 42.816076133580566
404
+ ],
405
+ [
406
+ -78.85072568130569,
407
+ 42.816450649528036
408
+ ],
409
+ [
410
+ -78.84940134236577,
411
+ 42.81677160705479
412
+ ],
413
+ [
414
+ -78.84958014898304,
415
+ 42.81716858994267
416
+ ],
417
+ [
418
+ -78.8507262115271,
419
+ 42.816890840117026
420
+ ],
421
+ [
422
+ -78.8508565789851,
423
+ 42.81719595796099
424
+ ],
425
+ [
426
+ -78.85132137101688,
427
+ 42.81708331517635
428
+ ],
429
+ [
430
+ -78.85083627755732,
431
+ 42.81600678613279
432
+ ]
433
+ ]
434
+ ],
435
+ "type": "Polygon"
436
+ }
437
+ },
438
+ {
439
+ "type": "Feature",
440
+ "properties": {
441
+ "id": "10",
442
+ "building_type": "Mixed use",
443
+ "floor_area": 1278384,
444
+ "footprint_area": 159798,
445
+ "mixed_type_1": "Strip shopping mall",
446
+ "mixed_type_1_percentage": 25,
447
+ "mixed_type_2": "Food service",
448
+ "mixed_type_2_percentage": 25,
449
+ "mixed_type_3": "Office",
450
+ "mixed_type_3_percentage": 15,
451
+ "mixed_type_4": "Lodging",
452
+ "mixed_type_4_percentage": 35,
453
+ "name": "Mixed use 2",
454
+ "number_of_stories": 8,
455
+ "type": "Building"
456
+ },
457
+ "geometry": {
458
+ "coordinates": [
459
+ [
460
+ [
461
+ -78.85115264550463,
462
+ 42.81786093060211
463
+ ],
464
+ [
465
+ -78.85163483958878,
466
+ 42.81774467026972
467
+ ],
468
+ [
469
+ -78.85246596719499,
470
+ 42.819583261120755
471
+ ],
472
+ [
473
+ -78.85082390085432,
474
+ 42.819979162017745
475
+ ],
476
+ [
477
+ -78.85060552295334,
478
+ 42.81947573727234
479
+ ],
480
+ [
481
+ -78.85174564783776,
482
+ 42.81920483484765
483
+ ],
484
+ [
485
+ -78.85115264550463,
486
+ 42.81786093060211
487
+ ]
488
+ ]
489
+ ],
490
+ "type": "Polygon"
491
+ }
492
+ },
493
+ {
494
+ "type": "Feature",
495
+ "properties": {
496
+ "id": "11",
497
+ "name": "Restaurant 13",
498
+ "type": "Building",
499
+ "footprint_area": 10837,
500
+ "floor_area": 32511,
501
+ "number_of_stories": 3,
502
+ "building_type": "Food service"
503
+ },
504
+ "geometry": {
505
+ "type": "Polygon",
506
+ "coordinates": [
507
+ [
508
+ [
509
+ -78.84961163640645,
510
+ 42.81460851835703
511
+ ],
512
+ [
513
+ -78.84914661048371,
514
+ 42.81472064501696
515
+ ],
516
+ [
517
+ -78.84905029178236,
518
+ 42.81450569091638
519
+ ],
520
+ [
521
+ -78.84951531770513,
522
+ 42.81439356386673
523
+ ],
524
+ [
525
+ -78.84961163640645,
526
+ 42.81460851835703
527
+ ]
528
+ ]
529
+ ]
530
+ }
531
+ },
532
+ {
533
+ "type": "Feature",
534
+ "properties": {
535
+ "id": "12",
536
+ "building_type": "Strip shopping mall",
537
+ "floor_area": 374409,
538
+ "footprint_area": 124803,
539
+ "name": "Mall 1",
540
+ "number_of_stories": 3,
541
+ "type": "Building"
542
+ },
543
+ "geometry": {
544
+ "coordinates": [
545
+ [
546
+ [
547
+ -78.84768338040897,
548
+ 42.817161656757065
549
+ ],
550
+ [
551
+ -78.8482630702579,
552
+ 42.8170218879136
553
+ ],
554
+ [
555
+ -78.84915297130291,
556
+ 42.81900776764229
557
+ ],
558
+ [
559
+ -78.84857328145401,
560
+ 42.81914753199706
561
+ ],
562
+ [
563
+ -78.84768338040897,
564
+ 42.817161656757065
565
+ ]
566
+ ]
567
+ ],
568
+ "type": "Polygon"
569
+ }
570
+ },
571
+ {
572
+ "type": "Feature",
573
+ "properties": {
574
+ "id": "13",
575
+ "building_type": "Lodging",
576
+ "floor_area": 316160,
577
+ "footprint_area": 31616,
578
+ "name": "Hotel 1",
579
+ "number_of_stories": 10,
580
+ "type": "Building"
581
+ },
582
+ "geometry": {
583
+ "coordinates": [
584
+ [
585
+ [
586
+ -78.8494955083645,
587
+ 42.819748790984335
588
+ ],
589
+ [
590
+ -78.84891089471263,
591
+ 42.81989327725856
592
+ ],
593
+ [
594
+ -78.8491389243777,
595
+ 42.82038967009544
596
+ ],
597
+ [
598
+ -78.84972353802956,
599
+ 42.82024518498119
600
+ ],
601
+ [
602
+ -78.8494955083645,
603
+ 42.819748790984335
604
+ ]
605
+ ]
606
+ ],
607
+ "type": "Polygon"
608
+ }
609
+ },
610
+ {
611
+ "geometry": {
612
+ "type": "LineString",
613
+ "coordinates": [
614
+ [
615
+ -78.8489681482315,
616
+ 42.82123330461977
617
+ ],
618
+ [
619
+ -78.84544909000398,
620
+ 42.812979756818265
621
+ ]
622
+ ]
623
+ },
624
+ "type": "Feature",
625
+ "properties": {
626
+ "type": "Road",
627
+ "id": "26956ab1-6006-410f-8761-8c5336af7478",
628
+ "total_length": 3155
629
+ }
630
+ },
631
+ {
632
+ "geometry": {
633
+ "type": "LineString",
634
+ "coordinates": [
635
+ [
636
+ -78.84535253047943,
637
+ 42.813213901246286
638
+ ],
639
+ [
640
+ -78.84992837905885,
641
+ 42.81208842580139
642
+ ]
643
+ ]
644
+ },
645
+ "type": "Feature",
646
+ "properties": {
647
+ "type": "Road",
648
+ "id": "a23de270-6f78-4b8c-a94f-c33066027738",
649
+ "total_length": 1292
650
+ }
651
+ },
652
+ {
653
+ "geometry": {
654
+ "type": "LineString",
655
+ "coordinates": [
656
+ [
657
+ -78.8494884967804,
658
+ 42.811915273915076
659
+ ],
660
+ [
661
+ -78.85327577590942,
662
+ 42.82022601764069
663
+ ]
664
+ ]
665
+ },
666
+ "type": "Feature",
667
+ "properties": {
668
+ "type": "Road",
669
+ "id": "edb9ec8c-1c0d-4127-bbb5-74c4694c5dfc",
670
+ "total_length": 3197
671
+ }
672
+ },
673
+ {
674
+ "geometry": {
675
+ "type": "LineString",
676
+ "coordinates": [
677
+ [
678
+ -78.85342597961424,
679
+ 42.81980106352452
680
+ ],
681
+ [
682
+ -78.84859800338745,
683
+ 42.82096574561655
684
+ ]
685
+ ]
686
+ },
687
+ "type": "Feature",
688
+ "properties": {
689
+ "type": "Road",
690
+ "id": "79f54743-f060-4b70-b111-00fa146c9ed1",
691
+ "total_length": 1360
692
+ }
693
+ },
694
+ {
695
+ "geometry": {
696
+ "type": "LineString",
697
+ "coordinates": [
698
+ [
699
+ -78.85085105895996,
700
+ 42.82085557392571
701
+ ],
702
+ [
703
+ -78.84721398353577,
704
+ 42.812592137623426
705
+ ]
706
+ ]
707
+ },
708
+ "type": "Feature",
709
+ "properties": {
710
+ "type": "Road",
711
+ "id": "46d5a837-c737-4ccc-bcd6-9ed019a559e5",
712
+ "total_length": 3168
713
+ }
714
+ },
715
+ {
716
+ "geometry": {
717
+ "type": "LineString",
718
+ "coordinates": [
719
+ [
720
+ -78.84607672691344,
721
+ 42.815755983691304
722
+ ],
723
+ [
724
+ -78.85104417800902,
725
+ 42.814496760865865
726
+ ]
727
+ ]
728
+ },
729
+ "type": "Feature",
730
+ "properties": {
731
+ "type": "Road",
732
+ "id": "bb98d362-6e28-4968-9ca5-67f1c3232f10",
733
+ "total_length": 1406
734
+ }
735
+ },
736
+ {
737
+ "geometry": {
738
+ "type": "LineString",
739
+ "coordinates": [
740
+ [
741
+ -78.84950324892998,
742
+ 42.817851352339574
743
+ ],
744
+ [
745
+ -78.85200977325438,
746
+ 42.817239472684264
747
+ ]
748
+ ]
749
+ },
750
+ "type": "Feature",
751
+ "properties": {
752
+ "type": "Road",
753
+ "id": "97b60c2e-f4d8-4375-9636-fb3622f4d746",
754
+ "total_length": 707
755
+ }
756
+ },
757
+ {
758
+ "geometry": {
759
+ "type": "LineString",
760
+ "coordinates": [
761
+ [
762
+ -78.85010808706282,
763
+ 42.81902394080427
764
+ ],
765
+ [
766
+ -78.84816884994507,
767
+ 42.81950595478102
768
+ ]
769
+ ]
770
+ },
771
+ "type": "Feature",
772
+ "properties": {
773
+ "type": "Road",
774
+ "id": "316f45e4-c14a-44ee-b92f-b5521aa1a86b",
775
+ "total_length": 548
776
+ }
777
+ },
778
+ {
779
+ "type": "Feature",
780
+ "properties": {
781
+ "id": "5840ecc6-7f2b-400c-a683-528d02f140f6",
782
+ "geometryType": "Rectangle",
783
+ "name": "New District System_1",
784
+ "type": "District System",
785
+ "footprint_area": 24983,
786
+ "footprint_perimeter": 689,
787
+ "district_system_type": "Electrical Substation"
788
+ },
789
+ "geometry": {
790
+ "type": "Polygon",
791
+ "coordinates": [
792
+ [
793
+ [
794
+ -78.85567193142118,
795
+ 42.81641251053426
796
+ ],
797
+ [
798
+ -78.85530837052585,
799
+ 42.81650816115567
800
+ ],
801
+ [
802
+ -78.85561262989047,
803
+ 42.81713042140092
804
+ ],
805
+ [
806
+ -78.85597619078581,
807
+ 42.817034771742016
808
+ ],
809
+ [
810
+ -78.85567193142118,
811
+ 42.81641251053426
812
+ ]
813
+ ]
814
+ ]
815
+ }
816
+ }
817
+ ],
818
+ "mappers": [],
819
+ "scenarios": [
820
+ {
821
+ "feature_mappings": [],
822
+ "id": "72301739-c6c3-4dd7-bf1a-f37c8eff40db",
823
+ "name": "New Scenario"
824
+ }
825
+ ]
826
+ }
@@ -158,7 +158,7 @@ module URBANopt
158
158
  when "Inpatient health care"
159
159
  return "Hospital"
160
160
  when "Laboratory"
161
- return "Hospital"
161
+ return "Laboratory"
162
162
  when "Lodging"
163
163
  if number_of_stories
164
164
  if number_of_stories.to_i > 3
@@ -387,6 +387,9 @@
387
387
 
388
388
  var endUseKeys = ['Heating:Electricity', 'Cooling:Electricity', 'InteriorLights:Electricity', 'ExteriorLights:Electricity', 'ExteriorEquipment:Electricity', 'InteriorEquipment:Electricity', 'Fans:Electricity', 'Pumps:Electricity', 'HeatRejection:Electricity', 'WaterSystems:Electricity'];
389
389
 
390
+ var kbtu_datasets = ['NaturalGas:Facility', 'Propane:Facility', 'FuelOilNo2:Facility', 'OtherFuels:Facility'];
391
+ var changeToKbtu = false;
392
+
390
393
 
391
394
  var applicableEndUseKeys = [];
392
395
 
@@ -449,8 +452,7 @@
449
452
 
450
453
  // monthly fuel use
451
454
  $scope.monthlyFuelChartData[feature.name] = [];
452
- var changeToKbtu = false;
453
- var kbtu_datasets = ['NaturalGas:Facility', 'Propane:Facility', 'FuelOilNo2:Facility', 'OtherFuels:Facility'];
455
+
454
456
  // first iterate through all kbtu datasets to see if you'll need to change to kBtu units
455
457
  _.forEach(kbtu_datasets, function (kbtu_dataset) {
456
458
  var values = feature.monthly_values[kbtu_dataset];
@@ -530,29 +532,26 @@
530
532
  // monthly net use
531
533
  if(feature['complete_simulation'] == true){
532
534
  $scope.monthlyNetChartData[feature.name] = [];
533
- var values = feature.monthly_values['NaturalGas:Facility'];
534
- var changeToKbtu = false;
535
- if (!(values.every(item => item === 0))) {
536
- changeToKbtu = true
537
- }
535
+ var unit = ' (kWh)'
538
536
  if (changeToKbtu){
539
- var unit = ' (kBtu)'
540
- }
541
- else {
542
- var unit = ' (kWh)'
537
+ unit = ' (kBtu)'
543
538
  }
544
539
 
545
540
  $scope.annualNetChartData[feature.name] = 0;
546
541
  $scope.monthlyNetChartData[feature.name].push({
547
542
  key: 'Net Energy Use' + unit,
548
543
  values: _.map(months, function (month, i) {
544
+ var value = 0;
549
545
  if (changeToKbtu){
550
- var value = feature.monthly_values['Electricity:Facility'][i]*3.41 - feature.monthly_values['ElectricityProduced:Facility'][i]*3.41 + feature.monthly_values['NaturalGas:Facility'][i]; //Values are in kBtu
546
+ value = feature.monthly_values['Electricity:Facility'][i]*3.41 - feature.monthly_values['ElectricityProduced:Facility'][i]*3.41;
547
+ _.forEach(kbtu_datasets, function(ds){
548
+ value += feature.monthly_values[ds][i];
549
+ });
551
550
  }
552
551
  else {
553
- var value = feature.monthly_values['Electricity:Facility'][i] - feature.monthly_values['ElectricityProduced:Facility'][i]; //Values are in kWh
552
+ value = feature.monthly_values['Electricity:Facility'][i] - feature.monthly_values['ElectricityProduced:Facility'][i]; //Values are in kWh
554
553
  }
555
- value;
554
+
556
555
  $scope.annualNetChartData[feature.name] += value;
557
556
  // global
558
557
  monthlyNetYMin = _.min([monthlyNetYMin, value]);
@@ -377,6 +377,9 @@
377
377
 
378
378
  var endUseKeys = ['Heating:Electricity', 'Cooling:Electricity', 'InteriorLights:Electricity', 'ExteriorLights:Electricity', 'InteriorEquipment:Electricity', 'ExteriorEquipment:Electricity', 'Fans:Electricity', 'Pumps:Electricity', 'HeatRejection:Electricity', 'WaterSystems:Electricity'];
379
379
 
380
+ var kbtu_datasets = ['NaturalGas:Facility', 'Propane:Facility', 'FuelOilNo2:Facility', 'OtherFuels:Facility'];
381
+ var changeToKbtu = false;
382
+
380
383
  var applicableEndUseKeys = [];
381
384
 
382
385
  $scope.monthlyFuelChartData = {};
@@ -422,8 +425,7 @@
422
425
 
423
426
  // monthly fuel use
424
427
  $scope.monthlyFuelChartData[scenario.name] = [];
425
- var changeToKbtu = false;
426
- var kbtu_datasets = ['NaturalGas:Facility', 'Propane:Facility', 'FuelOilNo2:Facility', 'OtherFuels:Facility'];
428
+
427
429
  // first iterate through all kbtu datasets to see if you'll need to change to kBtu units
428
430
  _.forEach(kbtu_datasets, function (kbtu_dataset) {
429
431
  var values = scenario.monthly_values[kbtu_dataset];
@@ -502,24 +504,27 @@
502
504
  if (!(values.every(item => item === 0))) {
503
505
  changeToKbtu = true
504
506
  }
507
+ var unit = ' (kWh)'
505
508
  if (changeToKbtu){
506
- var unit = ' (kBtu)'
507
- }
508
- else {
509
- var unit = ' (kWh)'
509
+ unit = ' (kBtu)'
510
510
  }
511
511
 
512
512
  $scope.annualNetChartData[scenario.name] = 0;
513
513
  $scope.monthlyNetChartData[scenario.name].push({
514
514
  key: 'Net Energy Use' + unit,
515
515
  values: _.map(months, function (month, i) {
516
+ var value = 0;
516
517
  if (changeToKbtu){
517
- var value = scenario.monthly_values['Electricity:Facility'][i]*3.41 - scenario.monthly_values['ElectricityProduced:Facility'][i]*3.41 + scenario.monthly_values['NaturalGas:Facility'][i]; //Values are in kBtu
518
+ value = scenario.monthly_values['Electricity:Facility'][i]*3.41 - scenario.monthly_values['ElectricityProduced:Facility'][i]*3.41 + scenario.monthly_values['NaturalGas:Facility'][i]; //Values are in kBtu
519
+
520
+ _.forEach(kbtu_datasets, function(ds){
521
+ value += scenario.monthly_values[ds][i];
522
+ });
518
523
  }
519
524
  else {
520
- var value = scenario.monthly_values['Electricity:Facility'][i] - scenario.monthly_values['ElectricityProduced:Facility'][i]; //Values are in kWh
525
+ value = scenario.monthly_values['Electricity:Facility'][i] - scenario.monthly_values['ElectricityProduced:Facility'][i]; //Values are in kWh
521
526
  }
522
- value;
527
+ // value;
523
528
  $scope.annualNetChartData[scenario.name] += value;
524
529
  monthlyNetYMin = _.min([monthlyNetYMin, value]);
525
530
  monthlyNetYMax = _.max([monthlyNetYMax, value]);
data/lib/uo_cli.rb CHANGED
@@ -46,6 +46,7 @@ require 'urbanopt/geojson'
46
46
  require 'urbanopt/scenario'
47
47
  require 'urbanopt/reopt'
48
48
  require 'urbanopt/reopt_scenario'
49
+ require 'urbanopt/rnm'
49
50
  require 'csv'
50
51
  require 'fileutils'
51
52
  require 'json'
@@ -59,10 +60,11 @@ module URBANopt
59
60
  COMMAND_MAP = {
60
61
  'create' => 'Make new things - project directory or files',
61
62
  'run' => 'Use files in your directory to simulate district energy use',
62
- 'opendss' => 'Run OpenDSS simulation',
63
63
  'process' => 'Post-process URBANopt simulations for additional insights',
64
64
  'visualize' => 'Visualize and compare results for features and scenarios',
65
65
  'validate' => 'Validate results with custom rules',
66
+ 'opendss' => 'Run OpenDSS simulation',
67
+ 'rnm' => 'Run RNM simulation',
66
68
  'delete' => 'Delete simulations for a specified scenario',
67
69
  'des_params' => 'Make a DES system parameters config file',
68
70
  'des_create' => 'Create a Modelica model',
@@ -106,9 +108,6 @@ module URBANopt
106
108
  "Add additional tags to specify the method for creating geometry, or use the default urban geometry creation method to create building geometry from geojson coordinates with core and perimeter zoning\n" \
107
109
  'Example: uo create --project-folder urbanopt_example_project', type: String, short: :p
108
110
 
109
- opt :electric, "\nCreate default project with FeatureFile containing electrical network\n" \
110
- "Example: uo create --project-folder urbanopt_example_project --electric", short: :l
111
-
112
111
  opt :create_bar, "\nCreate building geometry and add space types using the create bar from building type ratios measure\n" \
113
112
  "Refer to https://docs.urbanopt.net/ for more details about the workflow\n" \
114
113
  "Used with --project-folder\n" \
@@ -123,6 +122,12 @@ module URBANopt
123
122
  "This functionality has not been exhaustively tested and currently supports the Single-Family Detached building type and the Baseline Scenario only\n" \
124
123
  "Used with --project-folder\n" \
125
124
  "Example: uo create --project-folder urbanopt_example_project --combined\n", short: :d
125
+
126
+ opt :electric, "\nCreate default project with FeatureFile containing electrical network, used for OpenDSS analysis\n" \
127
+ "Example: uo create --project-folder urbanopt_example_project --electric", short: :l
128
+
129
+ opt :streets, "\nCreate default project wiht FeatureFile containing streets, used for RNM analysis\n" \
130
+ "Example: uo create --project-folder urbanopt_example_project --streets", short: :t
126
131
 
127
132
  opt :empty, "\nUse with --project-folder argument to create an empty project folder\n" \
128
133
  "Then add your own Feature file in the project directory you created,\n" \
@@ -173,11 +178,11 @@ module URBANopt
173
178
 
174
179
  opt :scenario, "\nRun OpenDSS simulations for <scenario>\n" \
175
180
  "Requires --feature also be specified\n" \
176
- 'Example: uo opendss --scenario baseline_scenario-2.csv --feature example_project.json', default: 'baseline_scenario.csv', short: :s
181
+ 'Example: uo opendss --scenario baseline_scenario-2.csv --feature example_project.json', default: 'baseline_scenario.csv', required: true, short: :s
177
182
 
178
183
  opt :feature, "\nRun OpenDSS simulations according to <featurefile>\n" \
179
184
  "Requires --scenario also be specified\n" \
180
- 'Example: uo opendss --scenario baseline_scenario.csv --feature example_project.json', default: 'example_project_with_electric_network.json', short: :f
185
+ 'Example: uo opendss --scenario baseline_scenario.csv --feature example_project.json', default: 'example_project_with_electric_network.json', required: true, short: :f
181
186
 
182
187
  opt :equipment, "\nRun OpenDSS simulations using <equipmentfile>. If not specified, the electrical_database.json from urbanopt-ditto-reader will be used.\n" \
183
188
  'Example: uo opendss --scenario baseline_scenario.csv --feature example_project.json', type: String, short: :e
@@ -204,6 +209,33 @@ module URBANopt
204
209
  end
205
210
  end
206
211
 
212
+ # Define RNM commands
213
+ def opt_rnm
214
+ @subopts = Optimist.options do
215
+ banner "\nURBANopt #{@command}:\n\n"
216
+
217
+ opt :scenario, "\nRun RNM simulation for <scenario>. Scenario must be run and post-processed prior to calling the rnm command.\n" \
218
+ "Requires --feature also be specified\n" \
219
+ 'Example: uo rnm --scenario baseline_scenario-2.csv --feature example_project.json', default: 'baseline_scenario.csv', required: true, short: :s
220
+
221
+ opt :feature, "\nRun RNM simulation according to <featurefile>\n" \
222
+ "Requires --scenario also be specified\n" \
223
+ 'Example: uo rnm --scenario baseline_scenario.csv --feature example_project.json', default: 'example_project_with_streets.json', required: true, short: :f
224
+
225
+ opt :reopt, "\nInclude processed REopt optimization results in the simulation.\n" \
226
+ "Example: uo rnm --scenario baseline_scenario.csv --feature example_project.json --reopt", short: :r
227
+
228
+ opt :extended_catalog, "\nUse this option to specify the extended electrical catalog path.\n" \
229
+ "If this option is not included, the default catalog will be used", short: :c
230
+
231
+ opt :average_peak_catalog, "\nUse this option to specify the average peak catalog path.\n" \
232
+ "If this option is not included, the default catalog will be used", short: :a
233
+
234
+ opt :opendss, "\n If this option is specified, an OpenDSS-compatible electrical database will be created \n" \
235
+ "Example: uo rnm --scenario baseline_scenario.csv --feature example_project_with_streets.json --opendss", short: :o
236
+ end
237
+ end
238
+
207
239
  # Define post-processing commands
208
240
  def opt_process
209
241
  @subopts = Optimist.options do
@@ -350,7 +382,7 @@ module URBANopt
350
382
  @scenario_name = File.basename(@scenario_file_name, File.extname(@scenario_file_name))
351
383
  end
352
384
 
353
- # Simulate energy usage as defined by ScenarioCSV\
385
+ # Simulate energy usage as defined by ScenarioCSV
354
386
  def self.run_func
355
387
  run_dir = File.join(@root_dir, 'run', @scenario_name.downcase)
356
388
  csv_file = File.join(@root_dir, @scenario_file_name)
@@ -499,11 +531,13 @@ module URBANopt
499
531
 
500
532
  if @opthash.subopts[:electric] == true
501
533
  FileUtils.cp(File.join(path_item, 'example_project_with_electric_network.json'), dir_name)
534
+ elsif @opthash.subopts[:streets] == true
535
+ FileUtils.cp(File.join(path_item, 'example_project_with_streets.json'), dir_name)
502
536
  end
503
537
 
504
538
  if @opthash.subopts[:floorspace] == false
505
539
 
506
- if @opthash.subopts[:electric] != true
540
+ if @opthash.subopts[:electric] != true && @opthash.subopts[:streets] != true
507
541
  # copy feature file
508
542
  FileUtils.cp(File.join(path_item, 'example_project.json'), dir_name)
509
543
  end
@@ -734,6 +768,7 @@ module URBANopt
734
768
  puts "\nDone\n"
735
769
  end
736
770
 
771
+ # Run OpenDSS simulation
737
772
  if @opthash.command == 'opendss'
738
773
 
739
774
  # first check python
@@ -803,9 +838,43 @@ module URBANopt
803
838
  begin
804
839
  system(ditto_cli_root + ditto_cli_addition)
805
840
  rescue FileNotFoundError
806
- abort("\nMust post-process results before running opendss. We recommend 'process --default'." \
807
- "Once opendss is run, you may then 'process --opendss'")
841
+ abort("\nMust post-process results before running OpenDSS. We recommend 'process --default'." \
842
+ "Once OpenDSS is run, you may then 'process --opendss'")
843
+ end
844
+ end
845
+
846
+ # Run RNM Simulation
847
+ if @opthash.command == 'rnm'
848
+
849
+ run_dir = File.join(@root_dir, 'run', @scenario_name.downcase)
850
+ # check if project has been post-processed appropriately
851
+ if !File.exist?(File.join(run_dir, 'default_scenario_report.json'))
852
+ abort("\nYou must first post-process the scenario before running RNM. We recommend 'process --default'.")
808
853
  end
854
+
855
+ puts 'Preparing RNM inputs'
856
+ # prep arguments
857
+ reopt = @opthash.subopts[:reopt] ? true : false
858
+ opendss_catalog = @opthash.subopts[:opendss] ? true : false
859
+
860
+ # if paths below are nil, default paths will be used
861
+ extended_catalog_path = @opthash.subopts[:extended_catalog] ? @opthash.subopts[:extended_catalog] : nil
862
+ average_peak_catalog_path = @opthash.subopts[:average_peak_catalog] ? @opthash.subopts[:average_peak_catalog] : nil
863
+
864
+ # create inputs, run sim and get results
865
+ begin
866
+ runner = URBANopt::RNM::Runner.new(@scenario_name, run_dir, @opthash.subopts[:scenario], @opthash.subopts[:feature], extended_catalog_path:extended_catalog_path, average_peak_catalog_path:average_peak_catalog_path, reopt:reopt, opendss_catalog:opendss_catalog)
867
+ runner.create_simulation_files
868
+ runner.run
869
+ runner.post_process
870
+ rescue => error
871
+ abort("\nError: #{error.message}")
872
+ end
873
+
874
+ # TODO: aggregate back into scenario reports and geojson file
875
+ puts "\nRNM Results saved to: #{File.join(run_dir, 'rnm-us', 'results')}"
876
+ puts "\nDone\n"
877
+
809
878
  end
810
879
 
811
880
  # Post-process the scenario
@@ -835,7 +904,7 @@ module URBANopt
835
904
  results << { "process_type": 'default', "status": 'Complete', "timestamp": Time.now.strftime('%Y-%m-%dT%k:%M:%S.%L') }
836
905
  elsif @opthash.subopts[:opendss] == true
837
906
  puts "\nPost-processing OpenDSS results\n"
838
- opendss_folder = File.join(@root_dir, 'run', @scenario_name, 'opendss')
907
+ opendss_folder = File.join(@root_dir, 'run', @scenario_name.downcase, 'opendss')
839
908
  if File.directory?(opendss_folder)
840
909
  opendss_folder_name = File.basename(opendss_folder)
841
910
  opendss_post_processor = URBANopt::Scenario::OpenDSSPostProcessor.new(scenario_report, opendss_results_dir_name = opendss_folder_name)
@@ -965,7 +1034,7 @@ module URBANopt
965
1034
  end
966
1035
  end
967
1036
  end
968
- html_out_path = File.join(@root_dir, 'run', @scenario_name, 'feature_comparison.html')
1037
+ html_out_path = File.join(@root_dir, 'run', @scenario_name.downcase, 'feature_comparison.html')
969
1038
  FileUtils.cp(html_in_path, html_out_path)
970
1039
  puts "\nDone\n"
971
1040
  end
@@ -987,8 +1056,8 @@ module URBANopt
987
1056
  feature_ids = CSV.read(@opthash.subopts[:scenario], headers: true)
988
1057
  feature_list = []
989
1058
  feature_ids['Feature Id'].each do |feature|
990
- if Dir.exist?(File.join(@root_dir, 'run', @scenario_name, feature))
991
- feature_list << File.join(@root_dir, 'run', @scenario_name, feature)
1059
+ if Dir.exist?(File.join(@root_dir, 'run', @scenario_name.downcase, feature))
1060
+ feature_list << File.join(@root_dir, 'run', @scenario_name.downcase, feature)
992
1061
  else
993
1062
  puts "Warning: did not find a directory for FeatureID: #{feature} ...skipping"
994
1063
  end
@@ -40,6 +40,6 @@
40
40
 
41
41
  module URBANopt
42
42
  module CLI
43
- VERSION = '0.6.1'.freeze
43
+ VERSION = '0.6.2'.freeze
44
44
  end
45
45
  end
data/uo_cli.gemspec CHANGED
@@ -34,10 +34,11 @@ Gem::Specification.new do |spec|
34
34
 
35
35
  # use specific versions of urbanopt and openstudio dependencies while under heavy development
36
36
  spec.add_runtime_dependency 'optimist', '~> 3'
37
- spec.add_runtime_dependency 'urbanopt-geojson', '~> 0.6.3'
37
+ spec.add_runtime_dependency 'urbanopt-geojson', '~> 0.6.5'
38
38
  spec.add_runtime_dependency 'urbanopt-reporting', '~> 0.4.1'
39
39
  spec.add_runtime_dependency 'urbanopt-scenario', '~> 0.6.2'
40
40
  spec.add_runtime_dependency 'urbanopt-reopt', '~> 0.6.1'
41
+ spec.add_runtime_dependency 'urbanopt-rnm-us', '~> 0.1.0'
41
42
 
42
43
  spec.add_development_dependency 'bundler', '>= 2.1.0'
43
44
  spec.add_development_dependency 'rake', '~> 13.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: urbanopt-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Moore
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-02 00:00:00.000000000 Z
11
+ date: 2021-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: optimist
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.6.3
33
+ version: 0.6.5
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.6.3
40
+ version: 0.6.5
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: urbanopt-reporting
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.6.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: urbanopt-rnm-us
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.1.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.1.0
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: bundler
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -196,6 +210,7 @@ files:
196
210
  - example_files/example_project.json
197
211
  - example_files/example_project_combined.json
198
212
  - example_files/example_project_with_electric_network.json
213
+ - example_files/example_project_with_streets.json
199
214
  - example_files/mappers/Baseline.rb
200
215
  - example_files/mappers/CreateBar.rb
201
216
  - example_files/mappers/EvCharging.rb