urbanopt-geojson 0.3.1 → 0.4.0
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/CHANGELOG.md +16 -0
- data/CONTRIBUTING.md +1 -1
- data/LICENSE.md +1 -1
- data/RDOC_MAIN.md +1 -1
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/doc_templates/LICENSE.md +1 -1
- data/doc_templates/copyright_erb.txt +1 -1
- data/doc_templates/copyright_js.txt +1 -1
- data/doc_templates/copyright_ruby.txt +1 -1
- data/docs/README.md +1 -1
- data/docs/package-lock.json +5232 -6909
- data/docs/package.json +9 -8
- data/lib/measures/urban_geometry_creation/LICENSE.md +1 -1
- data/lib/measures/urban_geometry_creation/README.md +1 -1
- data/lib/measures/urban_geometry_creation/measure.rb +19 -4
- data/lib/measures/urban_geometry_creation_zoning/LICENSE.md +1 -1
- data/lib/measures/urban_geometry_creation_zoning/README.md +1 -1
- data/lib/measures/urban_geometry_creation_zoning/measure.rb +1 -3
- data/lib/urbanopt-geojson.rb +1 -1
- data/lib/urbanopt/geojson.rb +2 -1
- data/lib/urbanopt/geojson/building.rb +53 -8
- data/lib/urbanopt/geojson/derived_extension.rb +1 -1
- data/lib/urbanopt/geojson/district_system.rb +1 -1
- data/lib/urbanopt/geojson/feature.rb +80 -2
- data/lib/urbanopt/geojson/geo_file.rb +2 -2
- data/lib/urbanopt/geojson/helper.rb +30 -2
- data/lib/urbanopt/geojson/logging.rb +1 -1
- data/lib/urbanopt/geojson/mapper_classes.rb +1 -1
- data/lib/urbanopt/geojson/model.rb +1 -1
- data/lib/urbanopt/geojson/region.rb +1 -1
- data/lib/urbanopt/geojson/scale_area.rb +91 -0
- data/lib/urbanopt/geojson/schema/building_properties.json +12 -7
- data/lib/urbanopt/geojson/schema/electrical_connector_properties.json +1 -1
- data/lib/urbanopt/geojson/update_areas.rb +1 -1
- data/lib/urbanopt/geojson/validate_geojson.rb +1 -1
- data/lib/urbanopt/geojson/version.rb +2 -2
- data/lib/urbanopt/geojson/zoning.rb +21 -16
- data/urbanopt-geojson-gem.gemspec +5 -8
- metadata +15 -14
@@ -1,5 +1,5 @@
|
|
1
1
|
# *********************************************************************************
|
2
|
-
# URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
|
2
|
+
# URBANopt (tm), Copyright (c) 2019-2020, 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,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *********************************************************************************
|
2
|
-
# URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
|
2
|
+
# URBANopt (tm), Copyright (c) 2019-2020, 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,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *********************************************************************************
|
2
|
-
# URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
|
2
|
+
# URBANopt (tm), Copyright (c) 2019-2020, 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,
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# *********************************************************************************
|
2
|
+
# URBANopt (tm), Copyright (c) 2019-2020, 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
|
+
require 'json'
|
31
|
+
require 'net/http'
|
32
|
+
require 'uri'
|
33
|
+
require 'openssl'
|
34
|
+
require 'bigdecimal/newton'
|
35
|
+
|
36
|
+
module Newton
|
37
|
+
def self.jacobian(f, fx, x)
|
38
|
+
Jacobian.jacobian(f, fx, x)
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.ludecomp(a, n, zero = 0, one = 1)
|
42
|
+
LUSolve.ludecomp(a, n, zero, one)
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.lusolve(a, b, ps, zero = 0.0)
|
46
|
+
LUSolve.lusolve(a, b, ps, zero)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
module URBANopt
|
51
|
+
module GeoJSON
|
52
|
+
class ScaleArea
|
53
|
+
def initialize(vertices, desired_area, runner, eps)
|
54
|
+
@vertices = vertices
|
55
|
+
@centroid = OpenStudio.getCentroid(vertices)
|
56
|
+
raise "Cannot compute centroid for '#{vertices}'" if @centroid.empty?
|
57
|
+
@centroid = @centroid.get
|
58
|
+
@desired_area = desired_area
|
59
|
+
@new_vertices = vertices
|
60
|
+
@runner = runner
|
61
|
+
@zero = BigDecimal('0.0')
|
62
|
+
@one = BigDecimal('1.0')
|
63
|
+
@two = BigDecimal('2.0')
|
64
|
+
@ten = BigDecimal('10.0')
|
65
|
+
@eps = eps # BigDecimal::new(eps)
|
66
|
+
end
|
67
|
+
|
68
|
+
attr_reader :zero
|
69
|
+
|
70
|
+
attr_reader :one
|
71
|
+
|
72
|
+
attr_reader :two
|
73
|
+
|
74
|
+
attr_reader :ten
|
75
|
+
|
76
|
+
attr_reader :eps
|
77
|
+
|
78
|
+
# compute value
|
79
|
+
def values(x)
|
80
|
+
@new_vertices = URBANopt::GeoJSON::Zoning.divide_floor_print(@vertices, x[0].to_f, @runner, scale = true)
|
81
|
+
new_area = OpenStudio.getArea(@new_vertices)
|
82
|
+
raise "Cannot compute area for '#{@new_vertices}'" if new_area.empty?
|
83
|
+
new_area = new_area.get
|
84
|
+
|
85
|
+
return [new_area - @desired_area]
|
86
|
+
end
|
87
|
+
|
88
|
+
attr_reader :new_vertices
|
89
|
+
end # ScaleArea
|
90
|
+
end # GeoJSON
|
91
|
+
end # URBANopt
|
@@ -87,7 +87,7 @@
|
|
87
87
|
"type": "string"
|
88
88
|
},
|
89
89
|
"floor_area": {
|
90
|
-
"description": "Usable floor area (ft^2).",
|
90
|
+
"description": "Usable floor area (ft^2). Required for residential buildings, this represents conditioned floor area.",
|
91
91
|
"type": "number"
|
92
92
|
},
|
93
93
|
"number_of_stories": {
|
@@ -95,7 +95,7 @@
|
|
95
95
|
"type": "integer"
|
96
96
|
},
|
97
97
|
"number_of_stories_above_ground": {
|
98
|
-
"description": "The number of building stories above ground. Defaults to number_of_stories.",
|
98
|
+
"description": "The number of building stories above ground. Defaults to number_of_stories. Required for residential buildings.",
|
99
99
|
"type": "integer"
|
100
100
|
},
|
101
101
|
"maximum_roof_height": {
|
@@ -194,7 +194,7 @@
|
|
194
194
|
"maximum": 100
|
195
195
|
},
|
196
196
|
"number_of_residential_units": {
|
197
|
-
"description": "Total number of residential units in the building. Required for single-family attached
|
197
|
+
"description": "Total number of residential units in the building. Required for single-family attached and multifamily residential buildings.",
|
198
198
|
"type": "integer"
|
199
199
|
},
|
200
200
|
"number_of_bedrooms": {
|
@@ -241,8 +241,8 @@
|
|
241
241
|
"type",
|
242
242
|
"name",
|
243
243
|
"floor_area",
|
244
|
+
"number_of_stories_above_ground",
|
244
245
|
"number_of_stories",
|
245
|
-
"footprint_area",
|
246
246
|
"building_type",
|
247
247
|
"number_of_bedrooms",
|
248
248
|
"foundation_type",
|
@@ -262,8 +262,8 @@
|
|
262
262
|
"type",
|
263
263
|
"name",
|
264
264
|
"floor_area",
|
265
|
+
"number_of_stories_above_ground",
|
265
266
|
"number_of_stories",
|
266
|
-
"footprint_area",
|
267
267
|
"building_type",
|
268
268
|
"number_of_residential_units",
|
269
269
|
"number_of_bedrooms",
|
@@ -284,8 +284,8 @@
|
|
284
284
|
"type",
|
285
285
|
"name",
|
286
286
|
"floor_area",
|
287
|
+
"number_of_stories_above_ground",
|
287
288
|
"number_of_stories",
|
288
|
-
"footprint_area",
|
289
289
|
"building_type",
|
290
290
|
"number_of_residential_units",
|
291
291
|
"number_of_bedrooms",
|
@@ -519,7 +519,12 @@
|
|
519
519
|
"DEER 2060",
|
520
520
|
"DEER 2065",
|
521
521
|
"DEER 2070",
|
522
|
-
"DEER 2075"
|
522
|
+
"DEER 2075",
|
523
|
+
"Residential IECC 2006 - Customizable Template Sep 2020",
|
524
|
+
"Residential IECC 2009 - Customizable Template Sep 2020",
|
525
|
+
"Residential IECC 2012 - Customizable Template Sep 2020",
|
526
|
+
"Residential IECC 2015 - Customizable Template Sep 2020",
|
527
|
+
"Residential IECC 2018 - Customizable Template Sep 2020"
|
523
528
|
]
|
524
529
|
},
|
525
530
|
"foundationType": {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *********************************************************************************
|
2
|
-
# URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
|
2
|
+
# URBANopt (tm), Copyright (c) 2019-2020, 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,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *********************************************************************************
|
2
|
-
# URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
|
2
|
+
# URBANopt (tm), Copyright (c) 2019-2020, 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,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *********************************************************************************
|
2
|
-
# URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
|
2
|
+
# URBANopt (tm), Copyright (c) 2019-2020, 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,
|
@@ -30,6 +30,6 @@
|
|
30
30
|
|
31
31
|
module URBANopt
|
32
32
|
module GeoJSON
|
33
|
-
VERSION = '0.
|
33
|
+
VERSION = '0.4.0'.freeze
|
34
34
|
end
|
35
35
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *********************************************************************************
|
2
|
-
# URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
|
2
|
+
# URBANopt (tm), Copyright (c) 2019-2020, 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,
|
@@ -41,7 +41,8 @@ module URBANopt
|
|
41
41
|
# * +floor_print+ - _Type:Array_ - An instance of +OpenStudio::Point3dVector.new+ .
|
42
42
|
# * +perimeter_depth+ - _Type:Float_ - Represents perimeter depth.
|
43
43
|
# * +runner+ - _Type:String_ - Measure run's instance of +OpenStudio::Measure::OSRunner+ .
|
44
|
-
|
44
|
+
# * +scale+ - _Type:Boolean_ - Checks whether floor print is to be scaled. Default is false.
|
45
|
+
def self.divide_floor_print(floor_print, perimeter_depth, runner, scale = false)
|
45
46
|
result = []
|
46
47
|
t_inv = OpenStudio::Transformation.alignFace(floor_print)
|
47
48
|
t = t_inv.inverse
|
@@ -86,21 +87,25 @@ module URBANopt
|
|
86
87
|
if self_intersects
|
87
88
|
runner.registerWarning('Self intersecting surface result, will not divide')
|
88
89
|
end
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
perim_vertices
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
90
|
+
if scale == true
|
91
|
+
result = t_inv * new_vertices
|
92
|
+
else
|
93
|
+
result << t_inv * new_vertices
|
94
|
+
(0...n).each do |i|
|
95
|
+
perim_vertices = OpenStudio::Point3dVector.new
|
96
|
+
if i == (n - 1)
|
97
|
+
perim_vertices << vertices[i]
|
98
|
+
perim_vertices << vertices[0]
|
99
|
+
perim_vertices << new_vertices[0]
|
100
|
+
perim_vertices << new_vertices[i]
|
101
|
+
else
|
102
|
+
perim_vertices << vertices[i]
|
103
|
+
perim_vertices << vertices[i + 1]
|
104
|
+
perim_vertices << new_vertices[i + 1]
|
105
|
+
perim_vertices << new_vertices[i]
|
106
|
+
end
|
107
|
+
result << t_inv * perim_vertices
|
102
108
|
end
|
103
|
-
result << t_inv * perim_vertices
|
104
109
|
end
|
105
110
|
return result
|
106
111
|
end
|
@@ -9,9 +9,10 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ['Tanushree Charan', 'Nicholas Long', 'Dan Macumber']
|
10
10
|
spec.email = ['tanushree.charan@nrel.gov', 'nicholas.long@nrel.gov', 'daniel.macumber@nrel.gov']
|
11
11
|
|
12
|
-
spec.summary = '
|
12
|
+
spec.summary = 'Translate URBANopt GeoJSON format to OpenStudio'
|
13
13
|
spec.description = 'Library and measures to translate URBANopt GeoJSON format to OpenStudio'
|
14
14
|
spec.homepage = 'https://github.com/urbanopt/urbanopt-geojson-gem'
|
15
|
+
spec.licenses = 'Nonstandard'
|
15
16
|
|
16
17
|
# Specify which files should be added to the gem when it is released.
|
17
18
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -28,11 +29,7 @@ Gem::Specification.new do |spec|
|
|
28
29
|
spec.add_development_dependency 'rake', '~> 13.0'
|
29
30
|
spec.add_development_dependency 'rspec', '~> 3.7'
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
# other dependencies
|
35
|
-
spec.add_dependency 'json-schema'
|
36
|
-
spec.add_dependency 'openstudio-extension', '~> 0.2.3'
|
37
|
-
spec.add_dependency 'urbanopt-core', '~> 0.3.0'
|
32
|
+
spec.add_runtime_dependency 'json-schema', '~> 2.8'
|
33
|
+
spec.add_runtime_dependency 'openstudio-extension', '~> 0.2.5'
|
34
|
+
spec.add_runtime_dependency 'urbanopt-core', '~> 0.4.0'
|
38
35
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: urbanopt-geojson
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tanushree Charan
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2020-
|
13
|
+
date: 2020-09-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -58,44 +58,44 @@ dependencies:
|
|
58
58
|
name: json-schema
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- - "
|
61
|
+
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '
|
63
|
+
version: '2.8'
|
64
64
|
type: :runtime
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- - "
|
68
|
+
- - "~>"
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: '
|
70
|
+
version: '2.8'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: openstudio-extension
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
75
|
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 0.2.
|
77
|
+
version: 0.2.5
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 0.2.
|
84
|
+
version: 0.2.5
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: urbanopt-core
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
89
|
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: 0.
|
91
|
+
version: 0.4.0
|
92
92
|
type: :runtime
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
96
|
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: 0.
|
98
|
+
version: 0.4.0
|
99
99
|
description: Library and measures to translate URBANopt GeoJSON format to OpenStudio
|
100
100
|
email:
|
101
101
|
- tanushree.charan@nrel.gov
|
@@ -179,6 +179,7 @@ files:
|
|
179
179
|
- lib/urbanopt/geojson/mapper_classes.rb
|
180
180
|
- lib/urbanopt/geojson/model.rb
|
181
181
|
- lib/urbanopt/geojson/region.rb
|
182
|
+
- lib/urbanopt/geojson/scale_area.rb
|
182
183
|
- lib/urbanopt/geojson/schema/building_properties.json
|
183
184
|
- lib/urbanopt/geojson/schema/district_system_properties.json
|
184
185
|
- lib/urbanopt/geojson/schema/electrical_connector_properties.json
|
@@ -199,7 +200,8 @@ files:
|
|
199
200
|
- package-lock.json
|
200
201
|
- urbanopt-geojson-gem.gemspec
|
201
202
|
homepage: https://github.com/urbanopt/urbanopt-geojson-gem
|
202
|
-
licenses:
|
203
|
+
licenses:
|
204
|
+
- Nonstandard
|
203
205
|
metadata: {}
|
204
206
|
post_install_message:
|
205
207
|
rdoc_options: []
|
@@ -216,9 +218,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
218
|
- !ruby/object:Gem::Version
|
217
219
|
version: '0'
|
218
220
|
requirements: []
|
219
|
-
|
220
|
-
rubygems_version: 2.7.6
|
221
|
+
rubygems_version: 3.1.4
|
221
222
|
signing_key:
|
222
223
|
specification_version: 4
|
223
|
-
summary:
|
224
|
+
summary: Translate URBANopt GeoJSON format to OpenStudio
|
224
225
|
test_files: []
|