urbanopt-geojson 0.5.3 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -3
- data/CHANGELOG.md +34 -0
- data/Gemfile +1 -1
- data/LICENSE.md +0 -2
- data/doc_templates/copyright_js.txt +1 -1
- data/docs/package-lock.json +2519 -1570
- data/docs/package.json +9 -4
- data/lib/measures/urban_geometry_creation/measure.xml +12 -12
- data/lib/measures/urban_geometry_creation_zoning/measure.xml +27 -9
- data/lib/urbanopt/geojson/feature.rb +6 -3
- data/lib/urbanopt/geojson/helper.rb +34 -34
- data/lib/urbanopt/geojson/model.rb +16 -6
- data/lib/urbanopt/geojson/region.rb +16 -6
- data/lib/urbanopt/geojson/scale_area.rb +16 -6
- data/lib/urbanopt/geojson/schema/building_properties.json +2 -1
- data/lib/urbanopt/geojson/schema/district_system_properties.json +2 -0
- data/lib/urbanopt/geojson/schema/electrical_connector_properties.json +4 -1
- data/lib/urbanopt/geojson/schema/site_properties.json +8 -0
- data/lib/urbanopt/geojson/update_areas.rb +16 -6
- data/lib/urbanopt/geojson/validate_geojson.rb +16 -6
- data/lib/urbanopt/geojson/version.rb +17 -7
- data/lib/urbanopt/geojson/zoning.rb +16 -6
- data/urbanopt-geojson-gem.gemspec +3 -3
- metadata +9 -9
data/docs/package.json
CHANGED
@@ -13,21 +13,26 @@
|
|
13
13
|
"highlight.js": "^10.4.1",
|
14
14
|
"json-schema-ref-parser": "^9.0.6",
|
15
15
|
"json-schema-view-js": "git+https://git@github.com/bgschiller/json-schema-view-js.git",
|
16
|
-
"vuepress": "^1.
|
16
|
+
"vuepress": "^1.8.2",
|
17
17
|
"webpack-dev-middleware": "^3.6.0"
|
18
18
|
},
|
19
19
|
"devDependencies": {
|
20
20
|
"braces": "^3.0.2",
|
21
|
+
"chokidar": "^3.5.1",
|
21
22
|
"dot-prop": ">=5.1.1",
|
23
|
+
"fsevents": "^2.3.2",
|
22
24
|
"gh-pages": "^3.1.0",
|
25
|
+
"ini": "^2.0.0",
|
26
|
+
"is-svg": "^4.3.1",
|
23
27
|
"js-yaml": ">=3.13.1",
|
24
|
-
"lodash": ">=4.17.
|
28
|
+
"lodash": ">=4.17.21",
|
25
29
|
"lodash.template": ">=4.5.0",
|
26
30
|
"minimist": ">=1.2.3",
|
27
31
|
"mixin-deep": "^2.0.1",
|
28
32
|
"serialize-javascript": "^5.0.1",
|
29
33
|
"set-value": "^3.0.2",
|
30
|
-
"
|
31
|
-
"
|
34
|
+
"ssri": "^8.0.1",
|
35
|
+
"webpack": "^4.46.0",
|
36
|
+
"yargs-parser": "^20.2.3"
|
32
37
|
}
|
33
38
|
}
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<schema_version>3.0</schema_version>
|
4
4
|
<name>urban_geometry_creation</name>
|
5
5
|
<uid>5ab85d6b-c9af-4361-8ab9-613ee99a5666</uid>
|
6
|
-
<version_id>
|
7
|
-
<version_modified>
|
6
|
+
<version_id>9eeca0c7-ef9d-4829-aa2c-b2c138a963c1</version_id>
|
7
|
+
<version_modified>20210602T203055Z</version_modified>
|
8
8
|
<xml_checksum>D254E772</xml_checksum>
|
9
9
|
<class_name>UrbanGeometryCreation</class_name>
|
10
10
|
<display_name>UrbanGeometryCreation</display_name>
|
@@ -116,23 +116,29 @@
|
|
116
116
|
<usage_type>test</usage_type>
|
117
117
|
<checksum>40290298</checksum>
|
118
118
|
</file>
|
119
|
+
<file>
|
120
|
+
<filename>README.md</filename>
|
121
|
+
<filetype>md</filetype>
|
122
|
+
<usage_type>readme</usage_type>
|
123
|
+
<checksum>74F54DC5</checksum>
|
124
|
+
</file>
|
119
125
|
<file>
|
120
126
|
<filename>LICENSE.md</filename>
|
121
127
|
<filetype>md</filetype>
|
122
128
|
<usage_type>license</usage_type>
|
123
|
-
<checksum>
|
129
|
+
<checksum>03523BF4</checksum>
|
124
130
|
</file>
|
125
131
|
<file>
|
126
132
|
<filename>shadowed_tests.rb</filename>
|
127
133
|
<filetype>rb</filetype>
|
128
134
|
<usage_type>test</usage_type>
|
129
|
-
<checksum>
|
135
|
+
<checksum>682820CD</checksum>
|
130
136
|
</file>
|
131
137
|
<file>
|
132
138
|
<filename>urban_geometry_creation_test.rb</filename>
|
133
139
|
<filetype>rb</filetype>
|
134
140
|
<usage_type>test</usage_type>
|
135
|
-
<checksum>
|
141
|
+
<checksum>FD5181F7</checksum>
|
136
142
|
</file>
|
137
143
|
<file>
|
138
144
|
<version>
|
@@ -143,13 +149,7 @@
|
|
143
149
|
<filename>measure.rb</filename>
|
144
150
|
<filetype>rb</filetype>
|
145
151
|
<usage_type>script</usage_type>
|
146
|
-
<checksum>
|
147
|
-
</file>
|
148
|
-
<file>
|
149
|
-
<filename>README.md</filename>
|
150
|
-
<filetype>md</filetype>
|
151
|
-
<usage_type>readme</usage_type>
|
152
|
-
<checksum>74F54DC5</checksum>
|
152
|
+
<checksum>3667C98F</checksum>
|
153
153
|
</file>
|
154
154
|
</files>
|
155
155
|
</measure>
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<schema_version>3.0</schema_version>
|
4
4
|
<name>urban_geometry_creation_zoning</name>
|
5
5
|
<uid>96ea1317-76ac-4670-b51d-71ee3f4fdd65</uid>
|
6
|
-
<version_id>
|
7
|
-
<version_modified>
|
6
|
+
<version_id>c115c875-0e04-4ac9-990b-011811df23bb</version_id>
|
7
|
+
<version_modified>20210602T203056Z</version_modified>
|
8
8
|
<xml_checksum>D254E772</xml_checksum>
|
9
9
|
<class_name>UrbanGeometryCreationZoning</class_name>
|
10
10
|
<display_name>UrbanGeometryCreationZoning</display_name>
|
@@ -97,11 +97,17 @@
|
|
97
97
|
<usage_type>test</usage_type>
|
98
98
|
<checksum>40290298</checksum>
|
99
99
|
</file>
|
100
|
+
<file>
|
101
|
+
<filename>README.md</filename>
|
102
|
+
<filetype>md</filetype>
|
103
|
+
<usage_type>readme</usage_type>
|
104
|
+
<checksum>0458EE16</checksum>
|
105
|
+
</file>
|
100
106
|
<file>
|
101
107
|
<filename>LICENSE.md</filename>
|
102
108
|
<filetype>md</filetype>
|
103
109
|
<usage_type>license</usage_type>
|
104
|
-
<checksum>
|
110
|
+
<checksum>03523BF4</checksum>
|
105
111
|
</file>
|
106
112
|
<file>
|
107
113
|
<version>
|
@@ -112,19 +118,31 @@
|
|
112
118
|
<filename>measure.rb</filename>
|
113
119
|
<filetype>rb</filetype>
|
114
120
|
<usage_type>script</usage_type>
|
115
|
-
<checksum>
|
121
|
+
<checksum>290A59E6</checksum>
|
116
122
|
</file>
|
117
123
|
<file>
|
118
124
|
<filename>urban_geometry_creation_zoning_test.rb</filename>
|
119
125
|
<filetype>rb</filetype>
|
120
126
|
<usage_type>test</usage_type>
|
121
|
-
<checksum>
|
127
|
+
<checksum>20775652</checksum>
|
122
128
|
</file>
|
123
129
|
<file>
|
124
|
-
<filename>
|
125
|
-
<filetype>
|
126
|
-
<usage_type>
|
127
|
-
<checksum>
|
130
|
+
<filename>example_project_combined.json</filename>
|
131
|
+
<filetype>json</filetype>
|
132
|
+
<usage_type>test</usage_type>
|
133
|
+
<checksum>9BC47B41</checksum>
|
134
|
+
</file>
|
135
|
+
<file>
|
136
|
+
<filename>out.txt</filename>
|
137
|
+
<filetype>txt</filetype>
|
138
|
+
<usage_type>test</usage_type>
|
139
|
+
<checksum>7FAF05F3</checksum>
|
140
|
+
</file>
|
141
|
+
<file>
|
142
|
+
<filename>OV_Buildings_Update_090420_res_eui_test.json</filename>
|
143
|
+
<filetype>json</filetype>
|
144
|
+
<usage_type>test</usage_type>
|
145
|
+
<checksum>F611B1E8</checksum>
|
128
146
|
</file>
|
129
147
|
</files>
|
130
148
|
</measure>
|
@@ -261,10 +261,12 @@ module URBANopt
|
|
261
261
|
end
|
262
262
|
|
263
263
|
##
|
264
|
-
# Used to determine the centroid for the feature's coordinates.
|
264
|
+
# Used to determine the centroid for the feature's geojson coordinates.
|
265
265
|
#
|
266
266
|
# [Parameters]
|
267
267
|
# * +vertices+ - The first set polygon vertices in the array of feature coordinates.
|
268
|
+
# [Returns]
|
269
|
+
# Returns Feature centroid coordinates [long, lat]
|
268
270
|
def find_feature_center(vertices)
|
269
271
|
number_of_locations = vertices.length
|
270
272
|
|
@@ -288,8 +290,9 @@ module URBANopt
|
|
288
290
|
central_square_root = Math.sqrt(x * x + y * y)
|
289
291
|
central_latitude = Math.atan2(z, central_square_root)
|
290
292
|
|
291
|
-
[
|
292
|
-
|
293
|
+
[central_longitude * 180 / Math::PI,
|
294
|
+
central_latitude * 180 / Math::PI]
|
295
|
+
|
293
296
|
end
|
294
297
|
|
295
298
|
private
|
@@ -308,8 +308,11 @@ module URBANopt
|
|
308
308
|
# find the polygon of the other_building by passing it to the get_multi_polygons method
|
309
309
|
other_building_points = building.other_points(other_building, other_height, origin_lat_lon, runner, zoning)
|
310
310
|
shadowed = URBANopt::GeoJSON::Helper.is_shadowed(feature_points, other_building_points, origin_lat_lon)
|
311
|
+
if shadowed
|
312
|
+
runner.registerInfo("Feature #{other_building[:properties][:id]} is acting as shading object for #{building.id}")
|
313
|
+
end
|
311
314
|
next unless shadowed
|
312
|
-
new_building = building.create_other_building(:space_per_building, model, origin_lat_lon, runner, zoning, other_building)
|
315
|
+
new_building = building.create_other_building(:space_per_building, model, origin_lat_lon, runner, zoning, 0, other_building)
|
313
316
|
if new_building.nil? || new_building.empty?
|
314
317
|
runner.registerWarning("Failed to create spaces for other building '#{name}'")
|
315
318
|
end
|
@@ -331,23 +334,27 @@ module URBANopt
|
|
331
334
|
# * +origin_lat_lon+ _Type:Float_ - An instance of OpenStudio::PointLatLon indicating the origin's
|
332
335
|
# latitude and longitude.
|
333
336
|
def self.is_shadowed(potentially_shaded, potential_shader, origin_lat_lon)
|
334
|
-
|
337
|
+
# not using origin_lat_lon but have not removed it yet
|
338
|
+
min_distance = nil
|
339
|
+
min_pair = nil
|
335
340
|
potentially_shaded.each do |building_point|
|
336
341
|
potential_shader.each do |other_building_point|
|
337
342
|
vector = other_building_point - building_point
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
343
|
+
distance = Math.sqrt(vector.x * vector.x + vector.y * vector.y)
|
344
|
+
if min_distance.nil? || distance < min_distance
|
345
|
+
min_distance = distance
|
346
|
+
min_pair = {
|
347
|
+
building_point: building_point,
|
348
|
+
other_building_point: other_building_point,
|
349
|
+
vector: vector,
|
350
|
+
distance: vector.length
|
351
|
+
}
|
352
|
+
end
|
344
353
|
end
|
345
354
|
end
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
return true
|
350
|
-
end
|
355
|
+
|
356
|
+
if is_shaded(min_pair[:building_point], min_pair[:other_building_point], origin_lat_lon)
|
357
|
+
return true
|
351
358
|
end
|
352
359
|
return false
|
353
360
|
end
|
@@ -361,34 +368,27 @@ module URBANopt
|
|
361
368
|
# * +origin_lat_lon+ - _Type:Float_ - An instance of +OpenStudio::PointLatLon+ indicating the
|
362
369
|
# origin's latitude and longitude.
|
363
370
|
def self.is_shaded(building_point, other_building_point, origin_lat_lon)
|
371
|
+
# not using origin_lat_lon but have not removed it yet
|
364
372
|
vector = other_building_point - building_point
|
365
|
-
height = vector.z
|
366
373
|
distance = Math.sqrt(vector.x * vector.x + vector.y * vector.y)
|
367
374
|
if distance < 1
|
368
375
|
return true
|
369
376
|
end
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
elevation_angle = 90 - zenith_angle
|
379
|
-
apparent_angle_rad = Math.atan2(height, distance)
|
380
|
-
apparent_angle = OpenStudio.radToDeg(apparent_angle_rad)
|
381
|
-
if elevation_angle > 0 && elevation_angle < apparent_angle
|
382
|
-
result = true
|
383
|
-
break
|
384
|
-
end
|
377
|
+
elevation_angle = 2.5 #not sure of best value maybe allow as project level argument
|
378
|
+
height = vector.z
|
379
|
+
apparent_angle_rad = Math.atan2(height, distance)
|
380
|
+
apparent_angle = OpenStudio.radToDeg(apparent_angle_rad)
|
381
|
+
if elevation_angle < apparent_angle
|
382
|
+
result = true
|
383
|
+
else
|
384
|
+
result = false
|
385
385
|
end
|
386
386
|
return result
|
387
387
|
end
|
388
388
|
|
389
|
-
|
390
|
-
|
389
|
+
class << self
|
390
|
+
private :is_shaded
|
391
|
+
end
|
392
|
+
end
|
393
|
+
end
|
391
394
|
end
|
392
|
-
end
|
393
|
-
end
|
394
|
-
end
|
@@ -1,21 +1,31 @@
|
|
1
1
|
# *********************************************************************************
|
2
|
-
# URBANopt
|
2
|
+
# URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
|
3
3
|
# contributors. All rights reserved.
|
4
|
-
|
4
|
+
|
5
5
|
# Redistribution and use in source and binary forms, with or without modification,
|
6
6
|
# are permitted provided that the following conditions are met:
|
7
|
-
|
7
|
+
|
8
8
|
# Redistributions of source code must retain the above copyright notice, this list
|
9
9
|
# of conditions and the following disclaimer.
|
10
|
-
|
10
|
+
|
11
11
|
# Redistributions in binary form must reproduce the above copyright notice, this
|
12
12
|
# list of conditions and the following disclaimer in the documentation and/or other
|
13
13
|
# materials provided with the distribution.
|
14
|
-
|
14
|
+
|
15
15
|
# Neither the name of the copyright holder nor the names of its contributors may be
|
16
16
|
# used to endorse or promote products derived from this software without specific
|
17
17
|
# prior written permission.
|
18
|
-
|
18
|
+
|
19
|
+
# Redistribution of this software, without modification, must refer to the software
|
20
|
+
# by the same designation. Redistribution of a modified version of this software
|
21
|
+
# (i) may not refer to the modified version by the same designation, or by any
|
22
|
+
# confusingly similar designation, and (ii) must refer to the underlying software
|
23
|
+
# originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
|
24
|
+
# the term “URBANopt”, or any confusingly similar designation may not be used to
|
25
|
+
# refer to any modified version of this software or any modified version of the
|
26
|
+
# underlying software originally provided by Alliance without the prior written
|
27
|
+
# consent of Alliance.
|
28
|
+
|
19
29
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
20
30
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
21
31
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
@@ -1,21 +1,31 @@
|
|
1
1
|
# *********************************************************************************
|
2
|
-
# URBANopt
|
2
|
+
# URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
|
3
3
|
# contributors. All rights reserved.
|
4
|
-
|
4
|
+
|
5
5
|
# Redistribution and use in source and binary forms, with or without modification,
|
6
6
|
# are permitted provided that the following conditions are met:
|
7
|
-
|
7
|
+
|
8
8
|
# Redistributions of source code must retain the above copyright notice, this list
|
9
9
|
# of conditions and the following disclaimer.
|
10
|
-
|
10
|
+
|
11
11
|
# Redistributions in binary form must reproduce the above copyright notice, this
|
12
12
|
# list of conditions and the following disclaimer in the documentation and/or other
|
13
13
|
# materials provided with the distribution.
|
14
|
-
|
14
|
+
|
15
15
|
# Neither the name of the copyright holder nor the names of its contributors may be
|
16
16
|
# used to endorse or promote products derived from this software without specific
|
17
17
|
# prior written permission.
|
18
|
-
|
18
|
+
|
19
|
+
# Redistribution of this software, without modification, must refer to the software
|
20
|
+
# by the same designation. Redistribution of a modified version of this software
|
21
|
+
# (i) may not refer to the modified version by the same designation, or by any
|
22
|
+
# confusingly similar designation, and (ii) must refer to the underlying software
|
23
|
+
# originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
|
24
|
+
# the term “URBANopt”, or any confusingly similar designation may not be used to
|
25
|
+
# refer to any modified version of this software or any modified version of the
|
26
|
+
# underlying software originally provided by Alliance without the prior written
|
27
|
+
# consent of Alliance.
|
28
|
+
|
19
29
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
20
30
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
21
31
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
@@ -1,21 +1,31 @@
|
|
1
1
|
# *********************************************************************************
|
2
|
-
# URBANopt
|
2
|
+
# URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
|
3
3
|
# contributors. All rights reserved.
|
4
|
-
|
4
|
+
|
5
5
|
# Redistribution and use in source and binary forms, with or without modification,
|
6
6
|
# are permitted provided that the following conditions are met:
|
7
|
-
|
7
|
+
|
8
8
|
# Redistributions of source code must retain the above copyright notice, this list
|
9
9
|
# of conditions and the following disclaimer.
|
10
|
-
|
10
|
+
|
11
11
|
# Redistributions in binary form must reproduce the above copyright notice, this
|
12
12
|
# list of conditions and the following disclaimer in the documentation and/or other
|
13
13
|
# materials provided with the distribution.
|
14
|
-
|
14
|
+
|
15
15
|
# Neither the name of the copyright holder nor the names of its contributors may be
|
16
16
|
# used to endorse or promote products derived from this software without specific
|
17
17
|
# prior written permission.
|
18
|
-
|
18
|
+
|
19
|
+
# Redistribution of this software, without modification, must refer to the software
|
20
|
+
# by the same designation. Redistribution of a modified version of this software
|
21
|
+
# (i) may not refer to the modified version by the same designation, or by any
|
22
|
+
# confusingly similar designation, and (ii) must refer to the underlying software
|
23
|
+
# originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
|
24
|
+
# the term “URBANopt”, or any confusingly similar designation may not be used to
|
25
|
+
# refer to any modified version of this software or any modified version of the
|
26
|
+
# underlying software originally provided by Alliance without the prior written
|
27
|
+
# consent of Alliance.
|
28
|
+
|
19
29
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
20
30
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
21
31
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
@@ -75,6 +75,14 @@
|
|
75
75
|
"description": "Name of utility tariff file in IDF or URDB format.",
|
76
76
|
"type": "string"
|
77
77
|
},
|
78
|
+
"underground_cables_ratio": {
|
79
|
+
"description": "Ratio of overall cables that are underground vs. overhead for RNM analysis.",
|
80
|
+
"type": "number"
|
81
|
+
},
|
82
|
+
"only_lv_consumers": {
|
83
|
+
"description": "If true, only low voltage consumers will be considered in the RNM analysis.",
|
84
|
+
"type": "boolean"
|
85
|
+
},
|
78
86
|
"user_data": {
|
79
87
|
"description": "Arbitrary user data"
|
80
88
|
}
|