urbanopt-geojson 0.3.0 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.github/pull_request_template.md +2 -2
  3. data/CHANGELOG.md +54 -4
  4. data/CONTRIBUTING.md +1 -1
  5. data/LICENSE.md +1 -1
  6. data/RDOC_MAIN.md +26 -22
  7. data/README.md +2 -2
  8. data/Rakefile +1 -1
  9. data/doc_templates/LICENSE.md +1 -1
  10. data/doc_templates/copyright_erb.txt +1 -1
  11. data/doc_templates/copyright_js.txt +1 -1
  12. data/doc_templates/copyright_ruby.txt +1 -1
  13. data/docs/.vuepress/components/InnerJsonSchema.vue +7 -11
  14. data/docs/.vuepress/config.js +11 -1
  15. data/docs/.vuepress/highlight.js +1 -1
  16. data/docs/.vuepress/json-schema-deref-loader.js +22 -0
  17. data/docs/README.md +3 -4
  18. data/docs/package-lock.json +5205 -6885
  19. data/docs/package.json +13 -9
  20. data/lib/measures/.rubocop.yml +1 -1
  21. data/lib/measures/urban_geometry_creation/LICENSE.md +1 -1
  22. data/lib/measures/urban_geometry_creation/README.md +8 -0
  23. data/lib/measures/urban_geometry_creation/measure.rb +21 -4
  24. data/lib/measures/urban_geometry_creation/measure.xml +34 -20
  25. data/lib/measures/urban_geometry_creation_zoning/LICENSE.md +1 -1
  26. data/lib/measures/urban_geometry_creation_zoning/measure.rb +3 -3
  27. data/lib/measures/urban_geometry_creation_zoning/measure.xml +8 -13
  28. data/lib/urbanopt-geojson.rb +1 -1
  29. data/lib/urbanopt/geojson.rb +2 -1
  30. data/lib/urbanopt/geojson/building.rb +61 -10
  31. data/lib/urbanopt/geojson/derived_extension.rb +1 -1
  32. data/lib/urbanopt/geojson/district_system.rb +1 -1
  33. data/lib/urbanopt/geojson/feature.rb +117 -3
  34. data/lib/urbanopt/geojson/geo_file.rb +3 -4
  35. data/lib/urbanopt/geojson/helper.rb +46 -3
  36. data/lib/urbanopt/geojson/logging.rb +1 -1
  37. data/lib/urbanopt/geojson/mapper_classes.rb +1 -1
  38. data/lib/urbanopt/geojson/model.rb +1 -1
  39. data/lib/urbanopt/geojson/region.rb +1 -1
  40. data/lib/urbanopt/geojson/scale_area.rb +95 -0
  41. data/lib/urbanopt/geojson/schema/building_properties.json +57 -7
  42. data/lib/urbanopt/geojson/schema/electrical_connector_properties.json +9 -9
  43. data/lib/urbanopt/geojson/schema/electrical_junction_properties.json +4 -5
  44. data/lib/urbanopt/geojson/schema/thermal_connector_properties.json +1 -1
  45. data/lib/urbanopt/geojson/schema/thermal_junction_properties.json +1 -1
  46. data/lib/urbanopt/geojson/update_areas.rb +1 -1
  47. data/lib/urbanopt/geojson/validate_geojson.rb +1 -1
  48. data/lib/urbanopt/geojson/version.rb +2 -2
  49. data/lib/urbanopt/geojson/zoning.rb +21 -16
  50. data/urbanopt-geojson-gem.gemspec +4 -8
  51. metadata +12 -23
data/docs/package.json CHANGED
@@ -10,20 +10,24 @@
10
10
  },
11
11
  "author": "Brian Schiller",
12
12
  "dependencies": {
13
- "highlight.js": "^9.15.6",
14
- "json-schema-ref-parser": "^6.1.0",
13
+ "highlight.js": "^10.4.1",
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": "^0.14.10",
16
+ "vuepress": "^1.5.4",
17
17
  "webpack-dev-middleware": "^3.6.0"
18
18
  },
19
19
  "devDependencies": {
20
- "braces": ">=2.3.1",
21
- "gh-pages": "^2.0.1",
20
+ "braces": "^3.0.2",
21
+ "dot-prop": ">=5.1.1",
22
+ "gh-pages": "^3.1.0",
22
23
  "js-yaml": ">=3.13.1",
23
- "lodash": ">=4.17.12",
24
+ "lodash": ">=4.17.19",
24
25
  "lodash.template": ">=4.5.0",
25
- "mixin-deep": ">=1.3.2",
26
- "serialize-javascript": ">=2.1.1",
27
- "set-value": ">=2.0.1"
26
+ "minimist": ">=1.2.3",
27
+ "mixin-deep": "^2.0.1",
28
+ "serialize-javascript": "^5.0.1",
29
+ "set-value": "^3.0.2",
30
+ "yargs-parser": "^20.2.3",
31
+ "ini": "^2.0.0"
28
32
  }
29
33
  }
@@ -2,4 +2,4 @@ AllCops:
2
2
  Exclude:
3
3
  - 'spec/test_measures/**/*'
4
4
  inherit_from:
5
- - http://s3.amazonaws.com/openstudio-resources/styles/rubocop.yml
5
+ - http://s3.amazonaws.com/openstudio-resources/styles/rubocop_v3.yml
@@ -1,4 +1,4 @@
1
- URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
1
+ URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
2
  contributors. All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
@@ -43,6 +43,14 @@ Select which surrounding buildings to include.
43
43
  **Required:** true,
44
44
  **Model Dependent:** false
45
45
 
46
+ ### Scale Footprint Area by the Floor Area?
47
+ If true, the footprint area from GeoJSON will be scaled by the floor_area provided by the user in URBANopt.
48
+ **Name:** scale_footprint_area_by_floor_area,
49
+ **Type:** Boolean,
50
+ **Units:** ,
51
+ **Required:** false,
52
+ **Model Dependent:** false
53
+
46
54
 
47
55
 
48
56
 
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # *********************************************************************************
2
- # URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
4
+ # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
3
5
  # contributors. All rights reserved.
4
6
  #
5
7
  # Redistribution and use in source and binary forms, with or without modification,
@@ -73,13 +75,17 @@ class UrbanGeometryCreation < OpenStudio::Measure::ModelMeasure
73
75
  surrounding_buildings.setDescription('Select which surrounding buildings to include.')
74
76
  surrounding_buildings.setDefaultValue('ShadingOnly')
75
77
  args << surrounding_buildings
78
+ # not a required argument
79
+ scale_footprint_area_by_floor_area = OpenStudio::Ruleset::OSArgument.makeBoolArgument('scale_footprint_area_by_floor_area', false)
80
+ scale_footprint_area_by_floor_area.setDisplayName('Scale Footprint Area by the Floor Area?')
81
+ scale_footprint_area_by_floor_area.setDescription('If true, the footprint area from GeoJSON will be scaled by the floor_area provided by the user in URBANopt.')
82
+ scale_footprint_area_by_floor_area.setDefaultValue(false)
83
+ args << scale_footprint_area_by_floor_area
76
84
  return args
77
85
  end
78
86
 
79
87
  # define what happens when the measure is run
80
- # rubocop:disable Metrics/AbcSize
81
88
  def run(model, runner, user_arguments)
82
- # rubocop:enable Metrics/AbcSize
83
89
  super(model, runner, user_arguments)
84
90
  # use the built-in error checking
85
91
  if !runner.validateUserArguments(arguments(model), user_arguments)
@@ -90,6 +96,7 @@ class UrbanGeometryCreation < OpenStudio::Measure::ModelMeasure
90
96
  geojson_file = runner.getStringArgumentValue('geojson_file', user_arguments)
91
97
  feature_id = runner.getStringArgumentValue('feature_id', user_arguments)
92
98
  surrounding_buildings = runner.getStringArgumentValue('surrounding_buildings', user_arguments)
99
+ scale_footprint_area_by_floor_area = runner.getBoolArgumentValue('scale_footprint_area_by_floor_area', user_arguments)
93
100
 
94
101
  default_construction_set = URBANopt::GeoJSON::Model.create_construction_set(model, runner)
95
102
 
@@ -133,7 +140,17 @@ class UrbanGeometryCreation < OpenStudio::Measure::ModelMeasure
133
140
 
134
141
  if feature.type == 'Building'
135
142
  # make requested building
136
- spaces = feature.create_building(:space_per_floor, model, @origin_lat_lon, @runner)
143
+ # pass in scaled_footprint_area (calculated from floor_area / number_of_stories)
144
+ scaled_footprint_area = 0
145
+ if scale_footprint_area_by_floor_area
146
+ building_hash = feature.to_hash
147
+ if building_hash[:number_of_stories] && building_hash[:floor_area]
148
+ scaled_footprint_area = building_hash[:floor_area].to_f / building_hash[:number_of_stories].to_f
149
+ @runner.registerInfo("Desired footprint area in ft2: #{scaled_footprint_area}")
150
+ end
151
+ end
152
+
153
+ spaces = feature.create_building(:space_per_floor, model, @origin_lat_lon, @runner, false, scaled_footprint_area)
137
154
  if spaces.nil?
138
155
  @runner.registerError("Failed to create spaces for building '#{name}'")
139
156
  return false
@@ -1,9 +1,10 @@
1
+ <?xml version="1.0"?>
1
2
  <measure>
2
3
  <schema_version>3.0</schema_version>
3
4
  <name>urban_geometry_creation</name>
4
5
  <uid>5ab85d6b-c9af-4361-8ab9-613ee99a5666</uid>
5
- <version_id>cf023329-6ef3-43b3-a316-b08fabb47cd2</version_id>
6
- <version_modified>20200327T211951Z</version_modified>
6
+ <version_id>2e224aaa-0d77-486f-b8ef-c25121fabd91</version_id>
7
+ <version_modified>20201208T232103Z</version_modified>
7
8
  <xml_checksum>D254E772</xml_checksum>
8
9
  <class_name>UrbanGeometryCreation</class_name>
9
10
  <display_name>UrbanGeometryCreation</display_name>
@@ -45,9 +46,28 @@
45
46
  </choice>
46
47
  </choices>
47
48
  </argument>
49
+ <argument>
50
+ <name>scale_footprint_area_by_floor_area</name>
51
+ <display_name>Scale Footprint Area by the Floor Area?</display_name>
52
+ <description>If true, the footprint area from GeoJSON will be scaled by the floor_area provided by the user in URBANopt.</description>
53
+ <type>Boolean</type>
54
+ <required>false</required>
55
+ <model_dependent>false</model_dependent>
56
+ <default_value>false</default_value>
57
+ <choices>
58
+ <choice>
59
+ <value>true</value>
60
+ <display_name>true</display_name>
61
+ </choice>
62
+ <choice>
63
+ <value>false</value>
64
+ <display_name>false</display_name>
65
+ </choice>
66
+ </choices>
67
+ </argument>
48
68
  </arguments>
49
- <outputs/>
50
- <provenances/>
69
+ <outputs />
70
+ <provenances />
51
71
  <tags>
52
72
  <tag>Envelope.Form</tag>
53
73
  </tags>
@@ -90,29 +110,29 @@
90
110
  <usage_type>readmeerb</usage_type>
91
111
  <checksum>703C9964</checksum>
92
112
  </file>
93
- <file>
94
- <filename>LICENSE.md</filename>
95
- <filetype>md</filetype>
96
- <usage_type>license</usage_type>
97
- <checksum>EA283B74</checksum>
98
- </file>
99
113
  <file>
100
114
  <filename>nrel_stm_footprints.geojson</filename>
101
115
  <filetype>geojson</filetype>
102
116
  <usage_type>test</usage_type>
103
117
  <checksum>40290298</checksum>
104
118
  </file>
119
+ <file>
120
+ <filename>LICENSE.md</filename>
121
+ <filetype>md</filetype>
122
+ <usage_type>license</usage_type>
123
+ <checksum>D8541540</checksum>
124
+ </file>
105
125
  <file>
106
126
  <filename>shadowed_tests.rb</filename>
107
127
  <filetype>rb</filetype>
108
128
  <usage_type>test</usage_type>
109
- <checksum>861137CF</checksum>
129
+ <checksum>F656F8DE</checksum>
110
130
  </file>
111
131
  <file>
112
132
  <filename>urban_geometry_creation_test.rb</filename>
113
133
  <filetype>rb</filetype>
114
134
  <usage_type>test</usage_type>
115
- <checksum>6DED5C96</checksum>
135
+ <checksum>B4A7376B</checksum>
116
136
  </file>
117
137
  <file>
118
138
  <version>
@@ -123,19 +143,13 @@
123
143
  <filename>measure.rb</filename>
124
144
  <filetype>rb</filetype>
125
145
  <usage_type>script</usage_type>
126
- <checksum>1A6BAAFA</checksum>
127
- </file>
128
- <file>
129
- <filename>out.txt</filename>
130
- <filetype>txt</filetype>
131
- <usage_type>test</usage_type>
132
- <checksum>C5B18B73</checksum>
146
+ <checksum>791A977E</checksum>
133
147
  </file>
134
148
  <file>
135
149
  <filename>README.md</filename>
136
150
  <filetype>md</filetype>
137
151
  <usage_type>readme</usage_type>
138
- <checksum>A09F345D</checksum>
152
+ <checksum>74F54DC5</checksum>
139
153
  </file>
140
154
  </files>
141
155
  </measure>
@@ -1,4 +1,4 @@
1
- URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
1
+ URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
2
  contributors. All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # *********************************************************************************
2
- # URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
4
+ # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
3
5
  # contributors. All rights reserved.
4
6
  #
5
7
  # Redistribution and use in source and binary forms, with or without modification,
@@ -81,9 +83,7 @@ class UrbanGeometryCreationZoning < OpenStudio::Measure::ModelMeasure
81
83
  end
82
84
 
83
85
  # define what happens when the measure is run
84
- # rubocop:disable Metrics/AbcSize
85
86
  def run(model, runner, user_arguments)
86
- # rubocop:enable Metrics/AbcSize
87
87
  super(model, runner, user_arguments)
88
88
  # use the built-in error checking
89
89
  if !runner.validateUserArguments(arguments(model), user_arguments)
@@ -1,9 +1,10 @@
1
+ <?xml version="1.0"?>
1
2
  <measure>
2
3
  <schema_version>3.0</schema_version>
3
4
  <name>urban_geometry_creation_zoning</name>
4
5
  <uid>96ea1317-76ac-4670-b51d-71ee3f4fdd65</uid>
5
- <version_id>5109b19e-6300-4068-900e-8a989b9762c8</version_id>
6
- <version_modified>20200327T211951Z</version_modified>
6
+ <version_id>0c0d1135-a50f-40c6-82fb-fc357e46dd02</version_id>
7
+ <version_modified>20201208T232103Z</version_modified>
7
8
  <xml_checksum>D254E772</xml_checksum>
8
9
  <class_name>UrbanGeometryCreationZoning</class_name>
9
10
  <display_name>UrbanGeometryCreationZoning</display_name>
@@ -46,8 +47,8 @@
46
47
  </choices>
47
48
  </argument>
48
49
  </arguments>
49
- <outputs/>
50
- <provenances/>
50
+ <outputs />
51
+ <provenances />
51
52
  <tags>
52
53
  <tag>Envelope.Form</tag>
53
54
  </tags>
@@ -100,7 +101,7 @@
100
101
  <filename>LICENSE.md</filename>
101
102
  <filetype>md</filetype>
102
103
  <usage_type>license</usage_type>
103
- <checksum>EA283B74</checksum>
104
+ <checksum>D8541540</checksum>
104
105
  </file>
105
106
  <file>
106
107
  <version>
@@ -111,19 +112,13 @@
111
112
  <filename>measure.rb</filename>
112
113
  <filetype>rb</filetype>
113
114
  <usage_type>script</usage_type>
114
- <checksum>EF1B3E84</checksum>
115
- </file>
116
- <file>
117
- <filename>out.txt</filename>
118
- <filetype>txt</filetype>
119
- <usage_type>test</usage_type>
120
- <checksum>7FAF05F3</checksum>
115
+ <checksum>3E6D4653</checksum>
121
116
  </file>
122
117
  <file>
123
118
  <filename>urban_geometry_creation_zoning_test.rb</filename>
124
119
  <filetype>rb</filetype>
125
120
  <usage_type>test</usage_type>
126
- <checksum>60BFE46B</checksum>
121
+ <checksum>D609CD4C</checksum>
127
122
  </file>
128
123
  <file>
129
124
  <filename>README.md</filename>
@@ -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,
@@ -39,3 +39,4 @@ require 'urbanopt/geojson/zoning'
39
39
  require 'urbanopt/geojson/model'
40
40
  require 'urbanopt/geojson/derived_extension'
41
41
  require 'urbanopt/geojson/logging'
42
+ require 'urbanopt/geojson/scale_area'
@@ -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,
@@ -87,9 +87,11 @@ module URBANopt
87
87
  # * +origin_lat_lon+ - _Type:Float_ - An instance of +OpenStudio::PointLatLon+ indicating the latitude and longitude of the origin.
88
88
  # * +runner+ - _Type:String_ - An instance of +OpenStudio::Measure::OSRunner+ for the measure run.
89
89
  # * +zoning+ - _Type:Boolean_ - Value is +true+ if utilizing detailed zoning, else
90
- # +false+. Zoning is set to False by default.
90
+ # +false+ Zoning is set to False by default.
91
+ # * +scaled_footprint_area+ - Used to scale the footprint area using the floor area. 0 by
92
+ # default (no scaling).
91
93
  # * +other_building+ - _Type:URBANopt::GeoJSON::Feature - Optional, allow the user to pass in a different building to process. This is used for creating the other buildings for shading.
92
- def create_building(create_method, model, origin_lat_lon, runner, zoning = false, other_building = @feature_json)
94
+ def create_building(create_method, model, origin_lat_lon, runner, zoning = false, scaled_footprint_area = 0, other_building = @feature_json)
93
95
  number_of_stories = other_building[:properties][:number_of_stories]
94
96
  number_of_stories_above_ground = other_building[:properties][:number_of_stories_above_ground]
95
97
  number_of_stories_below_ground = other_building[:properties][:number_of_stories_below_ground]
@@ -128,7 +130,7 @@ module URBANopt
128
130
  spaces = []
129
131
  if create_method == :space_per_floor || create_method == :spaces_per_floor
130
132
  (-number_of_stories_below_ground + 1..number_of_stories_above_ground).each do |story_number|
131
- new_spaces = create_space_per_floor(story_number, floor_to_floor_height, model, origin_lat_lon, runner, zoning)
133
+ new_spaces = create_space_per_floor(story_number, floor_to_floor_height, model, origin_lat_lon, runner, zoning, scaled_footprint_area)
132
134
  spaces.concat(new_spaces)
133
135
  end
134
136
  elsif create_method == :space_per_building
@@ -248,9 +250,50 @@ module URBANopt
248
250
  end
249
251
 
250
252
  ##
251
- # Convert to a Hash equivalent for JSON serialization
253
+ # Used to calculate the perimeter from the floor polygon of a Feature. Returns the perimeter
254
+ # value.
255
+ #
256
+ # [Parameters]
257
+ # * +feature+ - An instance of URBANopt::GeoJSON::Feature
258
+ #
259
+ def calculate_perimeter(feature)
260
+ model = OpenStudio::Model::Model.new
261
+ runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
262
+ origin_lat_lon = nil
263
+ origin_lat_lon = feature.create_origin_lat_lon(runner)
264
+ spaces = feature.create_building(:space_per_building, model, origin_lat_lon, runner)
265
+ surfaces = spaces[0].surfaces
266
+ ground_surface = nil
267
+ surfaces.each do |surface|
268
+ boundary_condition = surface.outsideBoundaryCondition
269
+ if boundary_condition == 'Ground'
270
+ ground_surface = surface
271
+ end
272
+ end
273
+ vertices = ground_surface.vertices
274
+ n = vertices.size
275
+ perimeter = 0
276
+ for i in (0..n - 1) do i
277
+ vertex_1 = nil
278
+ vertex_2 = nil
279
+ if i == n - 1
280
+ vertex_1 = vertices[n - 1]
281
+ vertex_2 = vertices[0]
282
+ else
283
+ vertex_1 = vertices[i]
284
+ vertex_2 = vertices[i + 1]
285
+ end
286
+ length = OpenStudio::Vector3d.new(vertex_2 - vertex_1).length
287
+ perimeter += length
288
+ end
289
+ perimeter = OpenStudio.convert(perimeter, 'm', 'ft').get
290
+ perimeter = perimeter.round(4)
291
+ return perimeter
292
+ end
293
+
252
294
  ##
253
- # - Exclude attributes with nil values.
295
+ # Convert to a Hash equivalent for JSON serialization.
296
+ # Excludes attributes with nil value.
254
297
  ##
255
298
  def to_hash
256
299
  result = {}
@@ -354,10 +397,18 @@ module URBANopt
354
397
  # * +zoning+ - _Type:Boolean_ - Value is +true+ if utilizing detailed zoning, else
355
398
  # +false+. Zoning is set to False by default.
356
399
  # rubocop:disable Style/CommentedKeyword
357
- def create_space_per_floor(story_number, floor_to_floor_height, model, origin_lat_lon, runner, zoning = false) #:doc:
400
+ def create_space_per_floor(story_number, floor_to_floor_height, model, origin_lat_lon, runner, zoning = false, scaled_footprint_area) #:doc:
358
401
  # rubocop:enable Style/CommentedKeyword
359
- geometry = @feature_json[:geometry]
360
- properties = @feature_json[:properties]
402
+ begin
403
+ if other_building
404
+ geometry = other_building[:geometry]
405
+ properties = other_building[:properties]
406
+ else
407
+ geometry = @feature_json[:geometry]
408
+ properties = @feature_json[:properties]
409
+ end
410
+ rescue StandardError
411
+ end
361
412
  floor_prints = []
362
413
  multi_polygons = get_multi_polygons
363
414
  multi_polygons.each do |multi_polygon|
@@ -366,7 +417,7 @@ module URBANopt
366
417
  end
367
418
  multi_polygon.each do |polygon|
368
419
  elevation = (story_number - 1) * floor_to_floor_height
369
- floor_print = URBANopt::GeoJSON::Helper.floor_print_from_polygon(polygon, elevation, origin_lat_lon, runner, zoning)
420
+ floor_print = URBANopt::GeoJSON::Helper.floor_print_from_polygon(polygon, elevation, origin_lat_lon, runner, zoning, scaled_footprint_area)
370
421
  if floor_print
371
422
  if zoning
372
423
  this_floor_prints = URBANopt::GeoJSON::Zoning.divide_floor_print(floor_print, 4.0, runner)
@@ -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,