feat: add lot area and build area relations

This commit is contained in:
Majid Rezaei 2024-12-04 14:32:17 -05:00
parent 65b04b60bf
commit f5a6141457
6 changed files with 125 additions and 69 deletions

View File

@ -27,7 +27,7 @@ class Building(CityObject):
"""
Building(CityObject) class
"""
def __init__(self, name, surfaces, year_of_construction, function, adjacency, terrains=None, city=None):
def __init__(self, name, surfaces, year_of_construction, function, adjacency, lot_area, build_area, terrains=None, city=None):
super().__init__(name, surfaces)
self._city = city
self._households = None
@ -37,6 +37,8 @@ class Building(CityObject):
self._year_of_construction = year_of_construction
self._function = function
self._adjacency = adjacency
self._lot_area = lot_area
self._build_area = build_area
self._average_storey_height = None
self._storeys_above_ground = None
self._floor_area = None
@ -280,6 +282,44 @@ class Building(CityObject):
else:
self._adjacency = None
@property
def lot_area(self):
"""
Get building lot area
:return: float
"""
return self._lot_area
@lot_area.setter
def lot_area(self, value):
"""
Set building lot area
:param value: float
"""
if value is not None:
self._lot_area = float(value)
else:
self._lot_area = None
@property
def build_area(self):
"""
Get building build area
:return: float
"""
return self._build_area
@build_area.setter
def build_area(self, value):
"""
Set building build area
:param value: float
"""
if value is not None:
self._build_area = float(value)
else:
self._build_area = None
@property
def average_storey_height(self) -> Union[None, float]:
"""

View File

@ -36,6 +36,8 @@ class Geojson:
function_field=None,
function_to_hub=None,
adjacency_field=None,
lot_area_field=None,
build_area_field=None,
hub_crs=None
):
self._hub_crs = hub_crs
@ -53,6 +55,8 @@ class Geojson:
self._year_of_construction_field = year_of_construction_field
self._function_field = function_field
self._adjacency_field = adjacency_field
self._lot_area_field = lot_area_field
self._build_area_field = build_area_field
self._function_to_hub = function_to_hub
with open(path, 'r', encoding='utf8') as json_file:
self._geojson = json.loads(json_file.read())
@ -129,6 +133,12 @@ class Geojson:
adjacency = None
if self._adjacency_field is not None:
adjacency = str(feature['properties'][self._adjacency_field])
lot_area = None
if self._lot_area_field is not None:
lot_area = float(feature['properties'][self._lot_area_field])
build_area = None
if self._build_area_field is not None:
build_area = float(feature['properties'][self._build_area_field])
function = None
if self._function_field is not None:
function = str(int(feature['properties'][self._function_field]))
@ -177,6 +187,8 @@ class Geojson:
function,
year_of_construction,
adjacency,
lot_area,
build_area,
extrusion_height))
elif str(geometry['type']).lower() == 'multipolygon':
@ -186,6 +198,8 @@ class Geojson:
function,
year_of_construction,
adjacency,
lot_area,
build_area,
extrusion_height))
else:
raise NotImplementedError(f'Geojson geometry type [{geometry["type"]}] unknown')
@ -210,7 +224,7 @@ class Geojson:
transformed_coordinates = f'{transformed_coordinates} {transformed[self._X]} {transformed[self._Y]} 0.0'
return transformed_coordinates.lstrip(' ')
def _parse_polygon(self, coordinates, building_name, building_aliases, function, year_of_construction, adjacency, extrusion_height):
def _parse_polygon(self, coordinates, building_name, building_aliases, function, year_of_construction, adjacency, lot_area, build_area, extrusion_height):
surfaces = []
for polygon_coordinates in coordinates:
points = igh.points_from_string(
@ -243,7 +257,7 @@ class Geojson:
polygon = Polygon(coordinates)
polygon.area = igh.ground_area(coordinates)
surfaces[-1] = Surface(polygon, polygon)
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency)
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency, lot_area, build_area)
for alias in building_aliases:
building.add_alias(alias)
if extrusion_height == 0:
@ -284,7 +298,7 @@ class Geojson:
building.volume = volume
return building
def _parse_multi_polygon(self, polygons_coordinates, building_name, building_aliases, function, year_of_construction, adjacency, extrusion_height):
def _parse_multi_polygon(self, polygons_coordinates, building_name, building_aliases, function, year_of_construction, adjacency, lot_area, build_area, extrusion_height):
surfaces = []
for coordinates in polygons_coordinates:
for polygon_coordinates in coordinates:
@ -317,7 +331,7 @@ class Geojson:
polygon = Polygon(coordinates)
polygon.area = igh.ground_area(coordinates)
surfaces[-1] = Surface(polygon, polygon)
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency)
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency, lot_area, build_area)
for alias in building_aliases:
building.add_alias(alias)
if extrusion_height == 0:
@ -352,7 +366,7 @@ class Geojson:
polygon = Polygon(wall_coordinates)
wall = Surface(polygon, polygon)
surfaces.append(wall)
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency)
building = Building(f'{building_name}', surfaces, year_of_construction, function, adjacency, lot_area, build_area)
for alias in building_aliases:
building.add_alias(alias)
building.volume = volume

View File

@ -29,12 +29,16 @@ class GeometryFactory:
function_field=None,
function_to_hub=None,
adjacency_field=None,
build_area_field=None,
lot_area_field=None,
hub_crs=None,
total_floor_area_field=None):
self._file_type = '_' + file_type.lower()
validate_import_export_type(GeometryFactory, file_type)
self._path = path
self._adjacency_field = adjacency_field
self._build_area_field = build_area_field
self._lot_area_field = lot_area_field
self._aliases_field = aliases_field
self._height_field = height_field
self._centroid_x_field = centroid_x_field
@ -79,6 +83,8 @@ class GeometryFactory:
self._function_field,
self._function_to_hub,
self._adjacency_field,
self._build_area_field,
self._lot_area_field,
self._hub_crs).city
@property

28
main.py
View File

@ -30,6 +30,8 @@ city = GeometryFactory(
year_of_construction_field="contr_year",
function_field="function_c",
adjacency_field="adjacency",
lot_area_field='lot_area',
build_area_field='build_area',
function_to_hub=Dictionaries().montreal_function_to_hub_function).city
ConstructionFactory('nrcan', city).enrich()
WeatherFactory('epw', city).enrich()
@ -70,53 +72,47 @@ for building in city.buildings:
csv_output=False,
output_path=pv_assessment_path).enrich()
r = []
for building in city.buildings:
r.append((building.build_area - building.lot_area) / building.thermal_zones_from_internal_zones[0].total_floor_area)
print("done")
# PLOTTING #
import geopandas as gpd
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize
# Load GeoJSON file
gdf = gpd.read_file(input_file)
# Extract self-sufficiency values
self_sufficiency_values = [building.self_sufficiency['year'] / 1000 for building in city.buildings]
# Add self-sufficiency values to GeoDataFrame
gdf['self_sufficiency'] = self_sufficiency_values
# Determine the color normalization range
vmin = min(0, gdf['self_sufficiency'].min()) # Include 0 if min is positive
vmax = max(0, gdf['self_sufficiency'].max()) # Include 0 if max is negative
vmin = min(0, gdf['self_sufficiency'].min())
vmax = max(0, gdf['self_sufficiency'].max())
# Set up the figure and axis
fig, ax = plt.subplots(1, 1, figsize=(14, 10))
# Define a colormap and normalize the values
cmap = plt.cm.viridis
norm = Normalize(vmin=vmin, vmax=vmax)
# Plot the GeoDataFrame
gdf.plot(column='self_sufficiency',
cmap=cmap,
linewidth=0.8,
edgecolor='grey', # Add edges for better distinction
legend=False, # Turn off the built-in legend
edgecolor='grey',
legend=False,
ax=ax)
# Add a custom colorbar
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
sm._A = [] # Needed for ScalarMappable with no data
sm._A = []
cbar = fig.colorbar(sm, ax=ax, fraction=0.03, pad=0.04)
cbar.set_label('Self-Sufficiency (kWh/year)', fontsize=12)
# Add gridlines and axis labels
ax.grid(color='lightgrey', linestyle='--', linewidth=0.5, alpha=0.7)
ax.set_title('Building Self-Sufficiency Levels', fontsize=16, fontweight='bold', pad=20)
ax.set_xlabel('Longitude', fontsize=12)
ax.set_ylabel('Latitude', fontsize=12)
# Improve layout
plt.tight_layout()
plt.show()

View File

@ -4,7 +4,7 @@
<Climate location="C:\Users\ab_reza\Majid\Concordia\Repositories\hub\out_files\sra_outputs\Cote-Saint-Luc.cli" city="Montreal Int'l"/>
<District>
<FarFieldObstructions/>
<Building Name="1bf8e6c5-2c0e-4c57-93c9-48c2800f5c85" id="0" key="1bf8e6c5-2c0e-4c57-93c9-48c2800f5c85" Simulate="true">
<Building Name="b23f32c4-1c76-4216-9f86-27296382da7f" id="0" key="b23f32c4-1c76-4216-9f86-27296382da7f" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="252.8418025788851" y="145.27913990989327" z="0.0"/>
<V1 x="253.3381420248188" y="138.13906684331596" z="0.0"/>
@ -58,7 +58,7 @@
<V5 x="252.8418025788851" y="145.27913990989327" z="0.0"/>
</Floor>
</Building>
<Building Name="15551f8a-ef7e-41df-9b7a-03cda868b05e" id="1" key="15551f8a-ef7e-41df-9b7a-03cda868b05e" Simulate="true">
<Building Name="5531917c-0c62-47e5-9803-0704a9817a9b" id="1" key="5531917c-0c62-47e5-9803-0704a9817a9b" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="270.578862213064" y="134.87987110204995" z="0.0"/>
<V1 x="254.0689794565551" y="133.55688273441046" z="0.0"/>
@ -112,7 +112,7 @@
<V5 x="270.578862213064" y="134.87987110204995" z="0.0"/>
</Floor>
</Building>
<Building Name="e11ee0cb-cffa-4330-af7d-6e2c652450f8" id="2" key="e11ee0cb-cffa-4330-af7d-6e2c652450f8" Simulate="true">
<Building Name="a6c06392-895e-4b36-b2aa-2118ea15cc9c" id="2" key="a6c06392-895e-4b36-b2aa-2118ea15cc9c" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="250.8321075150743" y="170.1839821897447" z="0.0"/>
<V1 x="251.39264970831573" y="163.01171941123903" z="0.0"/>
@ -166,7 +166,7 @@
<V5 x="250.8321075150743" y="170.1839821897447" z="0.0"/>
</Floor>
</Building>
<Building Name="37f7a7b9-6296-41de-863e-05dd0c840fe3" id="3" key="37f7a7b9-6296-41de-863e-05dd0c840fe3" Simulate="true">
<Building Name="8bb4e50e-2567-4e60-8d47-9f26c285c04b" id="3" key="8bb4e50e-2567-4e60-8d47-9f26c285c04b" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="230.2969871191308" y="57.582884550094604" z="0.0"/>
<V1 x="222.83410140452906" y="56.97401947900653" z="0.0"/>
@ -220,7 +220,7 @@
<V5 x="230.2969871191308" y="57.582884550094604" z="0.0"/>
</Floor>
</Building>
<Building Name="c0dac5c2-582a-4a78-931f-a70f46f26cc0" id="4" key="c0dac5c2-582a-4a78-931f-a70f46f26cc0" Simulate="true">
<Building Name="f6603391-ae30-409c-8bfc-a41e253557b0" id="4" key="f6603391-ae30-409c-8bfc-a41e253557b0" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="257.04113928135484" y="43.77400845102966" z="0.0"/>
<V1 x="255.26565298205242" y="59.80467318370938" z="0.0"/>
@ -274,7 +274,7 @@
<V5 x="257.04113928135484" y="43.77400845102966" z="0.0"/>
</Floor>
</Building>
<Building Name="864dabcb-807e-4142-bd9e-b37e564573f8" id="5" key="864dabcb-807e-4142-bd9e-b37e564573f8" Simulate="true">
<Building Name="6f71edd9-d178-4b85-b8ea-ff9e57783caa" id="5" key="6f71edd9-d178-4b85-b8ea-ff9e57783caa" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="161.94040444353595" y="46.68048408906907" z="0.0"/>
<V1 x="155.8381583476439" y="46.162260512821376" z="0.0"/>
@ -360,7 +360,7 @@
<V9 x="161.94040444353595" y="46.68048408906907" z="0.0"/>
</Floor>
</Building>
<Building Name="e5bd2f77-d174-4e54-b5a6-3b46d9631824" id="6" key="e5bd2f77-d174-4e54-b5a6-3b46d9631824" Simulate="true">
<Building Name="10ab592a-6afd-4836-9a50-e24c232c8986" id="6" key="10ab592a-6afd-4836-9a50-e24c232c8986" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="142.55380115052685" y="49.16670080833137" z="0.0"/>
<V1 x="135.28164442814887" y="48.563829503022134" z="0.0"/>
@ -414,7 +414,7 @@
<V5 x="142.55380115052685" y="49.16670080833137" z="0.0"/>
</Floor>
</Building>
<Building Name="e8e60e6b-dda2-48e1-8253-0e7718c4fbfe" id="7" key="e8e60e6b-dda2-48e1-8253-0e7718c4fbfe" Simulate="true">
<Building Name="294872dd-06a4-4e0f-b052-31d8084a92a1" id="7" key="294872dd-06a4-4e0f-b052-31d8084a92a1" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="40.47238557226956" y="116.77790292073041" z="0.0"/>
<V1 x="42.913086648099124" y="117.01612604223192" z="0.0"/>
@ -500,7 +500,7 @@
<V9 x="40.47238557226956" y="116.77790292073041" z="0.0"/>
</Floor>
</Building>
<Building Name="ebcfb31a-1404-480e-98f5-c0f620455c36" id="8" key="ebcfb31a-1404-480e-98f5-c0f620455c36" Simulate="true">
<Building Name="abbd5a33-8aa4-47ec-9e76-bdc761f9012f" id="8" key="abbd5a33-8aa4-47ec-9e76-bdc761f9012f" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="296.6744439410977" y="155.11623749695718" z="0.0"/>
<V1 x="284.9478677478619" y="154.35616981890053" z="0.0"/>
@ -586,7 +586,7 @@
<V9 x="296.6744439410977" y="155.11623749695718" z="0.0"/>
</Floor>
</Building>
<Building Name="5c9f6c15-ecfe-4d85-9ef9-ca65c5941f87" id="9" key="5c9f6c15-ecfe-4d85-9ef9-ca65c5941f87" Simulate="true">
<Building Name="431297b8-95d8-47dd-b69d-8ad53a03cf6d" id="9" key="431297b8-95d8-47dd-b69d-8ad53a03cf6d" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="292.7744867946021" y="112.32210690993816" z="0.0"/>
<V1 x="294.4589671883732" y="96.12307637743652" z="0.0"/>
@ -640,7 +640,7 @@
<V5 x="292.7744867946021" y="112.32210690993816" z="0.0"/>
</Floor>
</Building>
<Building Name="c7c24408-1054-4f7d-aa77-bae2bdd5aa7f" id="10" key="c7c24408-1054-4f7d-aa77-bae2bdd5aa7f" Simulate="true">
<Building Name="776006af-e60f-41a9-885c-5259037b3b08" id="10" key="776006af-e60f-41a9-885c-5259037b3b08" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="303.16726066498086" y="137.51073548011482" z="0.0"/>
<V1 x="286.6108673112467" y="136.38574585784227" z="0.0"/>
@ -694,7 +694,7 @@
<V5 x="303.16726066498086" y="137.51073548011482" z="0.0"/>
</Floor>
</Building>
<Building Name="51672c1d-4530-4599-81cd-bbf6bd62ae7a" id="11" key="51672c1d-4530-4599-81cd-bbf6bd62ae7a" Simulate="true">
<Building Name="aeae21ad-4f23-40bd-929e-8b5e8d7e84e3" id="11" key="aeae21ad-4f23-40bd-929e-8b5e8d7e84e3" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="286.40124527877197" y="111.75790410116315" z="0.0"/>
<V1 x="272.7985890493728" y="110.60445892624557" z="0.0"/>
@ -748,7 +748,7 @@
<V5 x="286.40124527877197" y="111.75790410116315" z="0.0"/>
</Floor>
</Building>
<Building Name="bbfd956c-08da-4222-ab4a-89d411da1fe8" id="12" key="bbfd956c-08da-4222-ab4a-89d411da1fe8" Simulate="true">
<Building Name="9e484fdc-ec57-40fb-8437-01436b0cac5d" id="12" key="9e484fdc-ec57-40fb-8437-01436b0cac5d" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="43.80990503076464" y="107.2875590370968" z="0.0"/>
<V1 x="45.04905711021274" y="93.15399473905563" z="0.0"/>
@ -802,7 +802,7 @@
<V5 x="43.80990503076464" y="107.2875590370968" z="0.0"/>
</Floor>
</Building>
<Building Name="b02726b7-d4c0-49f3-8c76-80332dab1915" id="13" key="b02726b7-d4c0-49f3-8c76-80332dab1915" Simulate="true">
<Building Name="a39dcb02-3339-455c-8e8e-d5a121e27e78" id="13" key="a39dcb02-3339-455c-8e8e-d5a121e27e78" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="298.9377388032153" y="174.1576697267592" z="0.0"/>
<V1 x="283.49676595814526" y="172.6676832586527" z="0.0"/>
@ -856,7 +856,7 @@
<V5 x="298.9377388032153" y="174.1576697267592" z="0.0"/>
</Floor>
</Building>
<Building Name="b744c38d-ab05-43ff-b92b-55903fbca2c8" id="14" key="b744c38d-ab05-43ff-b92b-55903fbca2c8" Simulate="true">
<Building Name="d624fdaa-2c20-4e64-880e-b19006941018" id="14" key="d624fdaa-2c20-4e64-880e-b19006941018" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="125.93713739328086" y="105.8988503003493" z="0.0"/>
<V1 x="127.28732038382441" y="91.81687696278095" z="0.0"/>
@ -910,7 +910,7 @@
<V5 x="125.93713739328086" y="105.8988503003493" z="0.0"/>
</Floor>
</Building>
<Building Name="58facb44-b91f-4ac1-aa96-1e5c66b2575d" id="15" key="58facb44-b91f-4ac1-aa96-1e5c66b2575d" Simulate="true">
<Building Name="17843d4d-3214-4923-8bc0-79d5dd19fd8d" id="15" key="17843d4d-3214-4923-8bc0-79d5dd19fd8d" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="98.4712375276722" y="96.095612809062" z="0.0"/>
<V1 x="99.0164845706895" y="89.29334461782128" z="0.0"/>
@ -964,7 +964,7 @@
<V5 x="98.4712375276722" y="96.095612809062" z="0.0"/>
</Floor>
</Building>
<Building Name="bf056c35-0a6a-4152-804b-75d6e64d6d26" id="16" key="bf056c35-0a6a-4152-804b-75d6e64d6d26" Simulate="true">
<Building Name="3abafab9-b4a0-4cb1-a404-91f6b0c9fbfd" id="16" key="3abafab9-b4a0-4cb1-a404-91f6b0c9fbfd" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="140.6616774983704" y="122.77136287558824" z="0.0"/>
<V1 x="137.80999981379136" y="122.42402574419975" z="0.0"/>
@ -1018,7 +1018,7 @@
<V5 x="140.6616774983704" y="122.77136287558824" z="0.0"/>
</Floor>
</Building>
<Building Name="37822b6c-0c10-4608-a49f-3941080443f4" id="17" key="37822b6c-0c10-4608-a49f-3941080443f4" Simulate="true">
<Building Name="5ab172af-292c-421f-a54d-fed7587b5abc" id="17" key="5ab172af-292c-421f-a54d-fed7587b5abc" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="144.18880078056827" y="88.20479937829077" z="0.0"/>
<V1 x="140.19795685261488" y="87.83892779797316" z="0.0"/>
@ -1072,7 +1072,7 @@
<V5 x="144.18880078056827" y="88.20479937829077" z="0.0"/>
</Floor>
</Building>
<Building Name="d309abdf-9915-498b-a1b6-248eadce3776" id="18" key="d309abdf-9915-498b-a1b6-248eadce3776" Simulate="true">
<Building Name="02d89af0-7e64-4760-9c8b-314645592e1c" id="18" key="02d89af0-7e64-4760-9c8b-314645592e1c" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="235.28080077655613" y="27.29358737077564" z="0.0"/>
<V1 x="219.56258505024016" y="26.081432830542326" z="0.0"/>
@ -1110,7 +1110,7 @@
<V3 x="235.28080077655613" y="27.29358737077564" z="0.0"/>
</Floor>
</Building>
<Building Name="7d83cac9-06e5-442d-827a-d0f28b13624b" id="19" key="7d83cac9-06e5-442d-827a-d0f28b13624b" Simulate="true">
<Building Name="4f911860-6560-4f23-9308-754157e631b4" id="19" key="4f911860-6560-4f23-9308-754157e631b4" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="182.71344033209607" y="6.228593356907368" z="0.0"/>
<V1 x="198.75047450652346" y="8.043766552582383" z="0.0"/>
@ -1148,7 +1148,7 @@
<V3 x="182.71344033209607" y="6.228593356907368" z="0.0"/>
</Floor>
</Building>
<Building Name="12fb65b7-c4ab-4d4b-a388-e91f10ee9d65" id="20" key="12fb65b7-c4ab-4d4b-a388-e91f10ee9d65" Simulate="true">
<Building Name="48edd03b-9e9c-4d70-b168-416edd67420c" id="20" key="48edd03b-9e9c-4d70-b168-416edd67420c" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="268.1755224764347" y="110.04401918128133" z="0.0"/>
<V1 x="254.96527183707803" y="108.77242698986083" z="0.0"/>
@ -1202,7 +1202,7 @@
<V5 x="268.1755224764347" y="110.04401918128133" z="0.0"/>
</Floor>
</Building>
<Building Name="f1294edc-716e-457e-911e-e7e445c11b38" id="21" key="f1294edc-716e-457e-911e-e7e445c11b38" Simulate="true">
<Building Name="931de8dc-1cd4-4863-8d84-9de81eda1691" id="21" key="931de8dc-1cd4-4863-8d84-9de81eda1691" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="103.23020217986777" y="0.0" z="0.0"/>
<V1 x="119.48931491049007" y="0.8167491620406508" z="0.0"/>
@ -1240,7 +1240,7 @@
<V3 x="103.23020217986777" y="0.0" z="0.0"/>
</Floor>
</Building>
<Building Name="6188d371-d972-4849-a706-c5347c82bb22" id="22" key="6188d371-d972-4849-a706-c5347c82bb22" Simulate="true">
<Building Name="cbeb0460-1e82-4d29-baa7-63974cc9fbec" id="22" key="cbeb0460-1e82-4d29-baa7-63974cc9fbec" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="102.8413198562339" y="45.28462457936257" z="0.0"/>
<V1 x="103.3680181959644" y="41.80345819145441" z="0.0"/>
@ -1294,7 +1294,7 @@
<V5 x="102.8413198562339" y="45.28462457936257" z="0.0"/>
</Floor>
</Building>
<Building Name="0b46ef1a-973b-4ded-8d92-f2222acdc10b" id="23" key="0b46ef1a-973b-4ded-8d92-f2222acdc10b" Simulate="true">
<Building Name="3f49bfb3-db6d-46d0-8077-8b9021e17380" id="23" key="3f49bfb3-db6d-46d0-8077-8b9021e17380" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="123.08897100854665" y="0.6125756837427616" z="0.0"/>
<V1 x="139.1994163529016" y="2.0641534524038434" z="0.0"/>
@ -1332,7 +1332,7 @@
<V3 x="123.08897100854665" y="0.6125756837427616" z="0.0"/>
</Floor>
</Building>
<Building Name="a9048949-287f-4d61-92be-421306b719f5" id="24" key="a9048949-287f-4d61-92be-421306b719f5" Simulate="true">
<Building Name="cedc5cba-2ac7-474a-b4ff-92e692cee94b" id="24" key="cedc5cba-2ac7-474a-b4ff-92e692cee94b" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="192.7265291819349" y="181.77622536942363" z="0.0"/>
<V1 x="185.50249281479046" y="180.65373811591417" z="0.0"/>
@ -1386,7 +1386,7 @@
<V5 x="192.7265291819349" y="181.77622536942363" z="0.0"/>
</Floor>
</Building>
<Building Name="b9aa7d60-15d1-4e18-bc33-49c2f443a4fd" id="25" key="b9aa7d60-15d1-4e18-bc33-49c2f443a4fd" Simulate="true">
<Building Name="6e11f9e9-2eba-48b5-8ec2-a8c8794456ea" id="25" key="6e11f9e9-2eba-48b5-8ec2-a8c8794456ea" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="173.38094454118982" y="175.19476821552962" z="0.0"/>
<V1 x="166.99390063714236" y="174.68341152742505" z="0.0"/>
@ -1440,7 +1440,7 @@
<V5 x="173.38094454118982" y="175.19476821552962" z="0.0"/>
</Floor>
</Building>
<Building Name="b3a264a8-d55e-4fc9-ae18-ae4cb8b503f5" id="26" key="b3a264a8-d55e-4fc9-ae18-ae4cb8b503f5" Simulate="true">
<Building Name="150d424f-b415-425e-8195-dc46d98b0f68" id="26" key="150d424f-b415-425e-8195-dc46d98b0f68" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="171.4377039419487" y="146.03789254836738" z="0.0"/>
<V1 x="171.69056517304853" y="139.0847764769569" z="0.0"/>
@ -1494,7 +1494,7 @@
<V5 x="171.4377039419487" y="146.03789254836738" z="0.0"/>
</Floor>
</Building>
<Building Name="5cc176ad-e925-4f23-b281-a242b4327604" id="27" key="5cc176ad-e925-4f23-b281-a242b4327604" Simulate="true">
<Building Name="58b1cda3-ca0e-4da3-9670-58f216b6d388" id="27" key="58b1cda3-ca0e-4da3-9670-58f216b6d388" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="56.65284207742661" y="152.1312268320471" z="0.0"/>
<V1 x="52.45622698077932" y="151.6878424808383" z="0.0"/>
@ -1548,7 +1548,7 @@
<V5 x="56.65284207742661" y="152.1312268320471" z="0.0"/>
</Floor>
</Building>
<Building Name="352716eb-9fbf-4c6f-8dc9-147121191574" id="28" key="352716eb-9fbf-4c6f-8dc9-147121191574" Simulate="true">
<Building Name="202cf9bc-21ac-4509-b2a7-d8da756eaeec" id="28" key="202cf9bc-21ac-4509-b2a7-d8da756eaeec" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="26.105375934392214" y="165.79280115570873" z="0.0"/>
<V1 x="18.860310770571232" y="165.08516912069172" z="0.0"/>
@ -1602,7 +1602,7 @@
<V5 x="26.105375934392214" y="165.79280115570873" z="0.0"/>
</Floor>
</Building>
<Building Name="ce14c9d7-39fa-44bb-9d95-e9444d71af55" id="29" key="ce14c9d7-39fa-44bb-9d95-e9444d71af55" Simulate="true">
<Building Name="bb8fca73-40fc-463b-8757-701b30b41daf" id="29" key="bb8fca73-40fc-463b-8757-701b30b41daf" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="40.640232062898576" y="138.289224088192" z="0.0"/>
<V1 x="41.87146586552262" y="124.3089344855398" z="0.0"/>
@ -1656,7 +1656,7 @@
<V5 x="40.640232062898576" y="138.289224088192" z="0.0"/>
</Floor>
</Building>
<Building Name="2e4bf6e9-f07b-4a6d-98b7-a822abbeb6a3" id="30" key="2e4bf6e9-f07b-4a6d-98b7-a822abbeb6a3" Simulate="true">
<Building Name="8c46e6bb-dcc4-4e11-bdc0-81b6ac4e3d49" id="30" key="8c46e6bb-dcc4-4e11-bdc0-81b6ac4e3d49" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="158.69041680265218" y="3.605831961147487" z="0.0"/>
<V1 x="157.29599809460342" y="17.84460875764489" z="0.0"/>
@ -1694,7 +1694,7 @@
<V3 x="158.69041680265218" y="3.605831961147487" z="0.0"/>
</Floor>
</Building>
<Building Name="d37f28da-94ad-46c4-abe5-73a656dc95d7" id="31" key="d37f28da-94ad-46c4-abe5-73a656dc95d7" Simulate="true">
<Building Name="5ea282c2-c56e-4e8f-80e1-baf4812afec6" id="31" key="5ea282c2-c56e-4e8f-80e1-baf4812afec6" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="314.173139271792" y="34.186089124530554" z="0.0"/>
<V1 x="294.6644852575846" y="32.81448222976178" z="0.0"/>
@ -1748,7 +1748,7 @@
<V5 x="314.173139271792" y="34.186089124530554" z="0.0"/>
</Floor>
</Building>
<Building Name="bda7735e-098f-4f19-bdf3-5e5c063a97c0" id="32" key="bda7735e-098f-4f19-bdf3-5e5c063a97c0" Simulate="true">
<Building Name="c691be6f-455a-494c-82b0-43bc61618f13" id="32" key="c691be6f-455a-494c-82b0-43bc61618f13" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="291.22722493717447" y="31.70701546035707" z="0.0"/>
<V1 x="272.7032928704284" y="28.966235221363604" z="0.0"/>
@ -1786,7 +1786,7 @@
<V3 x="291.22722493717447" y="31.70701546035707" z="0.0"/>
</Floor>
</Building>
<Building Name="47d9aa84-47a7-4d63-b213-bf453081ca8b" id="33" key="47d9aa84-47a7-4d63-b213-bf453081ca8b" Simulate="true">
<Building Name="a288d5b1-c637-488b-b9de-07708b60fc23" id="33" key="a288d5b1-c637-488b-b9de-07708b60fc23" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="106.09180145524442" y="147.80015710834414" z="0.0"/>
<V1 x="104.87396091967821" y="159.6595618519932" z="0.0"/>
@ -1840,7 +1840,7 @@
<V5 x="106.09180145524442" y="147.80015710834414" z="0.0"/>
</Floor>
</Building>
<Building Name="71c849c1-7e7c-4c98-b0bb-845751e301b7" id="34" key="71c849c1-7e7c-4c98-b0bb-845751e301b7" Simulate="true">
<Building Name="0e8e2bde-9ca3-45be-beca-264e6b82e9df" id="34" key="0e8e2bde-9ca3-45be-beca-264e6b82e9df" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="94.70581825589761" y="130.792430896312" z="0.0"/>
<V1 x="95.3922145976685" y="123.9156803227961" z="0.0"/>
@ -1942,7 +1942,7 @@
<V11 x="94.70581825589761" y="130.792430896312" z="0.0"/>
</Floor>
</Building>
<Building Name="355f1c86-cb37-4998-b0f1-dbc9e9ae7501" id="35" key="355f1c86-cb37-4998-b0f1-dbc9e9ae7501" Simulate="true">
<Building Name="329b5d80-5e31-444e-abcc-ac897e93e191" id="35" key="329b5d80-5e31-444e-abcc-ac897e93e191" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="133.68293505441397" y="157.30510208569467" z="0.0"/>
<V1 x="133.27703123539686" y="162.1950120460242" z="0.0"/>
@ -1996,7 +1996,7 @@
<V5 x="133.68293505441397" y="157.30510208569467" z="0.0"/>
</Floor>
</Building>
<Building Name="927fc3c0-53bb-4c04-912c-0af51ad75ac0" id="36" key="927fc3c0-53bb-4c04-912c-0af51ad75ac0" Simulate="true">
<Building Name="5fec1291-607e-43e4-89b9-fb40740ac36b" id="36" key="5fec1291-607e-43e4-89b9-fb40740ac36b" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="86.73493772139773" y="172.17876095697284" z="0.0"/>
<V1 x="87.44805078301579" y="165.24625734891742" z="0.0"/>
@ -2050,7 +2050,7 @@
<V5 x="86.73493772139773" y="172.17876095697284" z="0.0"/>
</Floor>
</Building>
<Building Name="315f1b46-b66d-4aa3-884a-13af0ef59cf5" id="37" key="315f1b46-b66d-4aa3-884a-13af0ef59cf5" Simulate="true">
<Building Name="71bf70cb-c0cc-4716-aefa-b819e09cfcca" id="37" key="71bf70cb-c0cc-4716-aefa-b819e09cfcca" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="270.04081647330895" y="28.961183870211244" z="0.0"/>
<V1 x="253.07060858560726" y="27.26723333168775" z="0.0"/>
@ -2088,7 +2088,7 @@
<V3 x="270.04081647330895" y="28.961183870211244" z="0.0"/>
</Floor>
</Building>
<Building Name="736976bb-8b64-4397-ac98-5e62201d2520" id="38" key="736976bb-8b64-4397-ac98-5e62201d2520" Simulate="true">
<Building Name="045ae2b1-2804-4b1d-b634-1eaf250aa09d" id="38" key="045ae2b1-2804-4b1d-b634-1eaf250aa09d" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="218.4297827826813" y="119.01233381498605" z="0.0"/>
<V1 x="206.43092924635857" y="118.11396356951445" z="0.0"/>
@ -2142,7 +2142,7 @@
<V5 x="218.4297827826813" y="119.01233381498605" z="0.0"/>
</Floor>
</Building>
<Building Name="853c23dd-a366-4048-b743-438c0a82185c" id="39" key="853c23dd-a366-4048-b743-438c0a82185c" Simulate="true">
<Building Name="f1421899-916e-468d-b19c-4ef36559caad" id="39" key="f1421899-916e-468d-b19c-4ef36559caad" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="1.6098596770316362" y="147.3981438195333" z="0.0"/>
<V1 x="15.217196955345571" y="148.71815025806427" z="0.0"/>
@ -2196,7 +2196,7 @@
<V5 x="1.6098596770316362" y="147.3981438195333" z="0.0"/>
</Floor>
</Building>
<Building Name="2477a92e-85bb-4b9b-97e7-7c4464a6b1f9" id="40" key="2477a92e-85bb-4b9b-97e7-7c4464a6b1f9" Simulate="true">
<Building Name="cd67bc34-9e39-4ee6-b128-8686ab47ae81" id="40" key="cd67bc34-9e39-4ee6-b128-8686ab47ae81" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="212.41115822130814" y="182.8532010242343" z="0.0"/>
<V1 x="205.41073146369308" y="182.30983972549438" z="0.0"/>
@ -2250,7 +2250,7 @@
<V5 x="212.41115822130814" y="182.8532010242343" z="0.0"/>
</Floor>
</Building>
<Building Name="42753ba4-d0f3-4999-95c3-dd6d8babb3b7" id="41" key="42753ba4-d0f3-4999-95c3-dd6d8babb3b7" Simulate="true">
<Building Name="f46623ec-bd96-425b-81d4-45b784c8c19b" id="41" key="f46623ec-bd96-425b-81d4-45b784c8c19b" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="215.29329879162833" y="156.3347719591111" z="0.0"/>
<V1 x="203.0281209377572" y="155.24067481886595" z="0.0"/>
@ -2304,7 +2304,7 @@
<V5 x="215.29329879162833" y="156.3347719591111" z="0.0"/>
</Floor>
</Building>
<Building Name="983b2870-08d2-47cc-9c88-ffaeba96e87f" id="42" key="983b2870-08d2-47cc-9c88-ffaeba96e87f" Simulate="true">
<Building Name="19882f64-3c2d-4ff1-972e-e5f5b91af1d2" id="42" key="19882f64-3c2d-4ff1-972e-e5f5b91af1d2" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="221.1843020725064" y="138.1693693548441" z="0.0"/>
<V1 x="205.09280527196825" y="136.97576061077416" z="0.0"/>
@ -2358,7 +2358,7 @@
<V5 x="221.1843020725064" y="138.1693693548441" z="0.0"/>
</Floor>
</Building>
<Building Name="f70dd3c1-7b53-4da9-be22-37274ce6a6e2" id="43" key="f70dd3c1-7b53-4da9-be22-37274ce6a6e2" Simulate="true">
<Building Name="93d429e3-0928-44c4-a186-8ff88edae365" id="43" key="93d429e3-0928-44c4-a186-8ff88edae365" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="99.42549244500697" y="84.18990346044302" z="0.0"/>
<V1 x="95.00459082284942" y="83.87207418587059" z="0.0"/>
@ -2444,7 +2444,7 @@
<V9 x="99.42549244500697" y="84.18990346044302" z="0.0"/>
</Floor>
</Building>
<Building Name="7253f14d-efb2-49c9-8630-dde59d350c99" id="44" key="7253f14d-efb2-49c9-8630-dde59d350c99" Simulate="true">
<Building Name="cdc951b2-b860-4bcc-9dd7-53a9b80c6623" id="44" key="cdc951b2-b860-4bcc-9dd7-53a9b80c6623" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="92.60565218282863" y="111.51006636023521" z="0.0"/>
<V1 x="109.35519357491285" y="113.17880994919688" z="0.0"/>
@ -2498,7 +2498,7 @@
<V5 x="92.60565218282863" y="111.51006636023521" z="0.0"/>
</Floor>
</Building>
<Building Name="5e927312-bb5f-4737-829f-4d678a9db6e4" id="45" key="5e927312-bb5f-4737-829f-4d678a9db6e4" Simulate="true">
<Building Name="ed891db7-8753-4893-be99-b4066b17edb6" id="45" key="ed891db7-8753-4893-be99-b4066b17edb6" Simulate="true">
<Wall id="2" ShortWaveReflectance="0.3">
<V0 x="122.31837747106329" y="140.26624751836061" z="0.0"/>
<V1 x="123.94154656957835" y="126.46405025944114" z="0.0"/>

File diff suppressed because one or more lines are too long