recreate the repository
This commit is contained in:
parent
770889efac
commit
6985d2445c
84
README.md
84
README.md
|
@ -1,3 +1,85 @@
|
||||||
# MonthlyEnergyBalance
|
# MonthlyEnergyBalance
|
||||||
|
|
||||||
Monthly energy balance project
|
This tool calculates the monthly energy balance for a given region.
|
||||||
|
|
||||||
|
The current version can only use NYC CityGml at LOD1, but we will increase the regions and the level of detail in future releases.
|
||||||
|
|
||||||
|
#### dependencies
|
||||||
|
|
||||||
|
You will need to install the following dependencies in your computer order to run the software; please take a look at the [install process](#installation) for your system-specific details
|
||||||
|
|
||||||
|
##### External software
|
||||||
|
+ INSEL 8 (https://insel4d.ca/en/download.html)
|
||||||
|
+ Simplified Radiosity Algorithm (mail to: guillermo.gutierrezmorote@concordia.ca)
|
||||||
|
|
||||||
|
After installing these tools you should include their paths in Path.
|
||||||
|
|
||||||
|
##### Python libraries
|
||||||
|
+ Shapely (1.7.0)
|
||||||
|
+ cycler (0.10.0)
|
||||||
|
+ geographiclib (1.50)
|
||||||
|
+ geopy (1.21.0)
|
||||||
|
+ kiwisolver (1.2.0)
|
||||||
|
+ matplotlib (3.2.1)
|
||||||
|
+ numpy (1.18.3)
|
||||||
|
+ numpy-stl (2.11.2)
|
||||||
|
+ pandas (1.0.3)
|
||||||
|
+ pip (20.0.2)
|
||||||
|
+ pyny3d (0.2)
|
||||||
|
+ pyparsing (2.4.7)
|
||||||
|
+ pyproj (2.6.0)
|
||||||
|
+ python-dateutil (2.8.1)
|
||||||
|
+ python-utils (2.4.0)
|
||||||
|
+ pytz (2019.3)
|
||||||
|
+ scipy (1.4.1)
|
||||||
|
+ setuptools (46.1.3)
|
||||||
|
+ six (1.14.0)
|
||||||
|
+ stl (0.0.3)
|
||||||
|
+ xmltodict (0.12.0)
|
||||||
|
|
||||||
|
## installation
|
||||||
|
|
||||||
|
##### Linux / Mac
|
||||||
|
|
||||||
|
Open a terminal and run the following commands.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ mkdir MonthlyEnergyBalance
|
||||||
|
$ cd MonthlyEnergyBalance
|
||||||
|
$ git clone https://binarycat.org/git/PMAU/MonthlyEnergyBalance.git
|
||||||
|
$ python -m pip install requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Windows
|
||||||
|
|
||||||
|
Open a terminal and run the following commands.
|
||||||
|
|
||||||
|
```
|
||||||
|
c:\> mkdir MonthlyEnergyBalance
|
||||||
|
c:\> cd MonthlyEnergyBalance
|
||||||
|
c:\> git clone https://binarycat.org/git/PMAU/MonthlyEnergyBalance.git
|
||||||
|
c:\> python.exe -m pip install requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### usage
|
||||||
|
|
||||||
|
##### Linux / Mac
|
||||||
|
|
||||||
|
Open a terminal and run the following command
|
||||||
|
|
||||||
|
```
|
||||||
|
$ python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Windows
|
||||||
|
|
||||||
|
Open a terminal and run the following command.
|
||||||
|
|
||||||
|
```
|
||||||
|
c:\> python.exe main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
|
9
helpers/assumptions.py
Normal file
9
helpers/assumptions.py
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# These values are intended as configurable assumptions
|
||||||
|
# ToDo: these values need to be changed into configurable parameters
|
||||||
|
|
||||||
|
# convective fluxes
|
||||||
|
h_i = 10 # W/m2K
|
||||||
|
h_e = 25 # W/m2K
|
||||||
|
|
||||||
|
# windows' default values
|
||||||
|
frame_ratio = 0
|
19
helpers/geometry.py
Normal file
19
helpers/geometry.py
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
import math
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
|
class Geometry:
|
||||||
|
def __init__(self, delta=0.5):
|
||||||
|
self._delta = delta
|
||||||
|
|
||||||
|
def almost_equal(self, v1, v2):
|
||||||
|
delta = math.sqrt(pow((v1[0]-v2[0]), 2) + pow((v1[1]-v2[1]), 2) + pow((v1[2]-v2[2]), 2))
|
||||||
|
return delta <= self._delta
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def to_points_matrix(points, remove_last=False):
|
||||||
|
rows = points.size//3
|
||||||
|
points = points.reshape(rows, 3)
|
||||||
|
if remove_last:
|
||||||
|
points = np.delete(points, rows-1, 0)
|
||||||
|
return points
|
13
helpers/library_codes.py
Normal file
13
helpers/library_codes.py
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
class LibraryCodes(object):
|
||||||
|
construction_code = {
|
||||||
|
'Wall': '1',
|
||||||
|
'Ground': '2',
|
||||||
|
'Roof': '3',
|
||||||
|
'interior wall': '5',
|
||||||
|
'ground wall': '6',
|
||||||
|
'attic floor': '7',
|
||||||
|
'interior slab': '8'
|
||||||
|
}
|
||||||
|
|
||||||
|
def construction_types_to_code(self, construction_type):
|
||||||
|
return self.construction_code[construction_type]
|
46
helpers/monthly_values.py
Normal file
46
helpers/monthly_values.py
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
"""
|
||||||
|
Monthly values
|
||||||
|
SPDX - License - Identifier: LGPL - 3.0 - or -later
|
||||||
|
Copyright © 2020 Project Author Pilar Monsalvete pilar_monsalvete@yahoo.es
|
||||||
|
"""
|
||||||
|
|
||||||
|
import pandas as pd
|
||||||
|
import numpy as np
|
||||||
|
import helpers.constants as cte
|
||||||
|
|
||||||
|
|
||||||
|
class MonthlyValues:
|
||||||
|
def __init__(self):
|
||||||
|
self._month_hour = None
|
||||||
|
|
||||||
|
def get_mean_values(self, values):
|
||||||
|
out = None
|
||||||
|
if values is not None:
|
||||||
|
if 'month' not in values.columns:
|
||||||
|
values = pd.concat([self.month_hour, pd.DataFrame(values)], axis=1)
|
||||||
|
out = values.groupby('month', as_index=False).mean()
|
||||||
|
del out['month']
|
||||||
|
return out
|
||||||
|
|
||||||
|
def get_total_month(self, values):
|
||||||
|
out = None
|
||||||
|
if values is not None:
|
||||||
|
if 'month' not in values.columns:
|
||||||
|
values = pd.concat([self.month_hour, pd.DataFrame(values)], axis=1)
|
||||||
|
out = pd.DataFrame(values).groupby('month', as_index=False).sum()
|
||||||
|
del out['month']
|
||||||
|
return out
|
||||||
|
|
||||||
|
@property
|
||||||
|
def month_hour(self):
|
||||||
|
"""
|
||||||
|
returns a DataFrame that has x values of the month number (January = 1, February = 2...),
|
||||||
|
being x the number of hours of the corresponding month
|
||||||
|
:return: DataFrame(int)
|
||||||
|
"""
|
||||||
|
array = []
|
||||||
|
for i in range(0, 12):
|
||||||
|
total_hours = cte.days_of_month[i] * 24
|
||||||
|
array = np.concatenate((array, np.full(total_hours, i + 1)))
|
||||||
|
self._month_hour = pd.DataFrame(array, columns=['month'])
|
||||||
|
return self._month_hour
|
60
insel/insel.py
Normal file
60
insel/insel.py
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
class Insel:
|
||||||
|
def __init__(self, path, name, new_content="", mode=1, keep_files=False):
|
||||||
|
self._path = path
|
||||||
|
self._name = name
|
||||||
|
self._full_path = None
|
||||||
|
self._content = None
|
||||||
|
self._results = None
|
||||||
|
self._keep_files = keep_files
|
||||||
|
self.add_content(new_content, mode)
|
||||||
|
self.save()
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
with open(self.full_path, 'w') as insel_file:
|
||||||
|
insel_file.write(self.content)
|
||||||
|
return
|
||||||
|
|
||||||
|
@property
|
||||||
|
def full_path(self):
|
||||||
|
if self._full_path is None:
|
||||||
|
self._full_path = (Path(self._path) / 'tmp' / self._name).resolve()
|
||||||
|
return self._full_path
|
||||||
|
|
||||||
|
@property
|
||||||
|
def content(self):
|
||||||
|
if self._content is None:
|
||||||
|
if os.path.exists(self.full_path):
|
||||||
|
with open(self.full_path, 'r') as insel_file:
|
||||||
|
self._content = insel_file.read()
|
||||||
|
else:
|
||||||
|
self._content = ''
|
||||||
|
return self._content
|
||||||
|
|
||||||
|
# todo: create method
|
||||||
|
def add_block(self):
|
||||||
|
raise Exception('Not implemented')
|
||||||
|
|
||||||
|
def add_content(self, new_content, mode):
|
||||||
|
# mode = 1: keep old content
|
||||||
|
if mode == 1:
|
||||||
|
self._content = self.content + '\r\n' + new_content
|
||||||
|
# mode = 2: over-write
|
||||||
|
elif mode == 2:
|
||||||
|
self._content = new_content
|
||||||
|
else:
|
||||||
|
raise Exception('Add content mode not supported')
|
||||||
|
return
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
output = os.system('insel ' + str(self.full_path))
|
||||||
|
# todo: catch errors from INSEL
|
||||||
|
if not self._keep_files:
|
||||||
|
os.remove(self.full_path)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def results(self):
|
||||||
|
raise Exception('Not implemented')
|
160
insel/templates/monthly_energy_balance.py
Normal file
160
insel/templates/monthly_energy_balance.py
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
import helpers.library_codes
|
||||||
|
import numpy as np
|
||||||
|
from pathlib import Path
|
||||||
|
import pandas as pd
|
||||||
|
import csv
|
||||||
|
|
||||||
|
from factories.weather_feeders.helpers.weather import Weather as wt
|
||||||
|
|
||||||
|
|
||||||
|
class MonthlyEnergyBalance:
|
||||||
|
@staticmethod
|
||||||
|
def generate_meb_template(building, insel_outputs_path):
|
||||||
|
lc = helpers.library_codes.LibraryCodes()
|
||||||
|
|
||||||
|
file = ""
|
||||||
|
file += "s 1 do\r\n"
|
||||||
|
file += "p 1 1 12 1\r\n"
|
||||||
|
file += "\r\n"
|
||||||
|
file += "s 4 d18599 1.1 20.1 21.1\r\n"
|
||||||
|
|
||||||
|
surfaces = building.surfaces
|
||||||
|
for i in range(1, len(surfaces) + 1):
|
||||||
|
file += str(100 + i) + '.1 % Radiation surface ' + str(i) + '\r\n'
|
||||||
|
|
||||||
|
file += 'p 4' + '\r\n'
|
||||||
|
# BUILDING PARAMETERS
|
||||||
|
file += str(building.heated_volume) + ' % BP(1) Heated Volume (vBrutto)\r\n'
|
||||||
|
file += str(building.average_storey_height) + ' % BP(2) Average storey height / m\r\n'
|
||||||
|
file += str(building.storeys_above_ground) + ' % BP(3) Number of storeys above ground\r\n'
|
||||||
|
file += str(building.attic_heated) + ' % BP(4) Attic heating type (0=no room, 1=unheated, 2=heated)\r\n'
|
||||||
|
file += str(building.basement_heated) + ' % BP(5) Cellar heating type (0=no room, 1=unheated, ' \
|
||||||
|
'2=heated, 99=invalid)\r\n'
|
||||||
|
# todo: this method and the insel model have to be reviewed for more than one thermal zone
|
||||||
|
thermal_zone = building.thermal_zones[0]
|
||||||
|
file += str(thermal_zone.indirectly_heated_area_ratio) + ' % BP(6) Indirectly heated area ratio\r\n'
|
||||||
|
file += str(thermal_zone.effective_thermal_capacity) + ' % BP(7) Effective heat capacity\r\n'
|
||||||
|
file += str(thermal_zone.additional_thermal_bridge_u_value) + ' % BP(8) Additional U-value for heat bridge\r\n'
|
||||||
|
file += '0 % BP(9) Usage type (0=standard, 1=IWU)\r\n'
|
||||||
|
# ZONES AND SURFACES
|
||||||
|
# todo: is this actually number of thermal zones or of usage zones?
|
||||||
|
file += str(len(building.thermal_zones)) + ' % BP(10) Number $z$ of zones\r\n'
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
for usage_zone in building.usage_zones:
|
||||||
|
percentage_usage = 1
|
||||||
|
file += str(float(building.foot_print.area) * percentage_usage) + ' % BP(11) #1 Area of zone ' + \
|
||||||
|
str(i + 1) + ' (sqm)' + '\r\n'
|
||||||
|
total_internal_gains = 0
|
||||||
|
for ig in usage_zone.internal_gains:
|
||||||
|
total_internal_gains += float(ig.average_internal_gain) * \
|
||||||
|
(float(ig.convective_fraction) + float(ig.radiative_fraction))
|
||||||
|
file += str(total_internal_gains) + ' % BP(12) #2 Internal gains of zone ' + str(i + 1) + '\r\n'
|
||||||
|
file += str(usage_zone.heating_setpoint) + ' % BP(13) #3 Heating setpoint temperature zone ' + \
|
||||||
|
str(i + 1) + ' (tSetHeat)' + '\r\n'
|
||||||
|
file += str(usage_zone.heating_setback) + ' % BP(14) #4 Heating setback temperature zone ' + \
|
||||||
|
str(i + 1) + ' (tSetbackHeat)' + '\r\n'
|
||||||
|
file += str(usage_zone.cooling_setpoint) + ' % BP(15) #5 Cooling setpoint temperature zone ' + \
|
||||||
|
str(i + 1) + ' (tSetCool)' + '\r\n'
|
||||||
|
file += str(usage_zone.hours_day) + ' % BP(16) #6 Usage hours per day zone ' + str(i + 1) + '\r\n'
|
||||||
|
file += str(usage_zone.days_year) + ' % BP(17) #7 Usage days per year zone ' + str(i + 1) + '\r\n'
|
||||||
|
if usage_zone.mechanical_air_change is None:
|
||||||
|
raise Exception('Ventilation air rate is not initialized')
|
||||||
|
file += str(usage_zone.mechanical_air_change) + ' % BP(18) #8 Minimum air change rate zone ' + \
|
||||||
|
str(i + 1) + ' (h^-1)' + '\r\n'
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
file += str(len(surfaces)) + ' % Number of surfaces = BP(11+8z)\r\n'
|
||||||
|
file += '% 1. Surface type (1=wall, 2=ground 3=roof, 4=flat roof)' + '\r\n'
|
||||||
|
file += '% 2. Areas above ground' + '\r\n'
|
||||||
|
file += '% 3. Areas below ground' + '\r\n'
|
||||||
|
file += '% 4. U-value' + '\r\n'
|
||||||
|
file += '% 5. Window area' + '\r\n'
|
||||||
|
file += '% 6. Window frame fraction' + '\r\n'
|
||||||
|
file += '% 7. Window U-value' + '\r\n'
|
||||||
|
file += '% 8. Window g-value' + '\r\n'
|
||||||
|
file += '% 9. Short-wave reflectance' + '\r\n'
|
||||||
|
file += '% #1 #2 #3 #4 #5 #6 #7 #8 #9' + '\r\n'
|
||||||
|
|
||||||
|
# todo: this method has to be reviewed for more than one thermal opening per thermal boundary
|
||||||
|
for thermal_boundary in building.thermal_zones[0].bounded:
|
||||||
|
type_code = lc.construction_types_to_code(thermal_boundary.type)
|
||||||
|
string = type_code + ' ' + str(thermal_boundary.area_above_ground) + ' ' + \
|
||||||
|
str(thermal_boundary.area_below_ground) + ' ' + str(thermal_boundary.u_value) + ' ' + \
|
||||||
|
str(thermal_boundary.window_area) + ' '
|
||||||
|
|
||||||
|
if thermal_boundary.window_area <= 0.001:
|
||||||
|
string = string + '0 0 0 '
|
||||||
|
else:
|
||||||
|
string = string + str(thermal_boundary.thermal_openings[0].frame_ratio) + ' ' + \
|
||||||
|
str(thermal_boundary.thermal_openings[0].overall_u_value) + ' ' + \
|
||||||
|
str(thermal_boundary.thermal_openings[0].g_value) + ' '
|
||||||
|
if thermal_boundary.outside_solar_absorptance is not None:
|
||||||
|
string += str(thermal_boundary.shortwave_reflectance) + '\r\n'
|
||||||
|
else:
|
||||||
|
string += '0 \r\n'
|
||||||
|
file += string
|
||||||
|
|
||||||
|
file += '\r\n'
|
||||||
|
file += 's 20 polyg 1\r\n'
|
||||||
|
file += 'p 20 12 % Monthly ambient temperature\r\n'
|
||||||
|
external_temperature = building.external_temperature['month']
|
||||||
|
for i in range(0, len(external_temperature)):
|
||||||
|
file += str(i+1) + ' ' + str(external_temperature.at[i, 'inseldb']) + '\r\n'
|
||||||
|
|
||||||
|
file += '\r\n'
|
||||||
|
file += 's 21 polyg 1\r\n'
|
||||||
|
file += 'p 21 12 % Monthly sky temperature\r\n'
|
||||||
|
i = 1
|
||||||
|
|
||||||
|
sky_temperature = wt.sky_temperature(external_temperature[['inseldb']].to_numpy().T[0])
|
||||||
|
for temperature in sky_temperature:
|
||||||
|
file += str(i) + ' ' + str(temperature) + '\r\n'
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
for surface in surfaces:
|
||||||
|
file += '\r\n'
|
||||||
|
file += 's ' + str(101 + i) + ' polyg 1 % Monthly surface radiation (W/sqm)\r\n'
|
||||||
|
file += 'p ' + str(101 + i) + ' 12 % Azimuth ' + str(np.rad2deg(surface.azimuth)) + \
|
||||||
|
', inclination ' + str(np.rad2deg(surface.inclination)) + ' degrees\r\n'
|
||||||
|
|
||||||
|
if surface.type != 'Ground':
|
||||||
|
global_irradiance = surface.global_irradiance['month']
|
||||||
|
for j in range(0, len(global_irradiance)):
|
||||||
|
file += str(j + 1) + ' ' + str(global_irradiance.at[j, 'sra']) + '\r\n'
|
||||||
|
else:
|
||||||
|
for j in range(0, 12):
|
||||||
|
file += str(j + 1) + ' 0\r\n'
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
file += '\r\n'
|
||||||
|
file += '% ONE YEAR\r\n'
|
||||||
|
file += 's 300 cum 4.1 4.2\r\n'
|
||||||
|
file += 's 303 atend 300.1 300.2\r\n'
|
||||||
|
|
||||||
|
file += '\r\n'
|
||||||
|
file += 's ' + str(310) + ' WRITE\r\n'
|
||||||
|
file += '4.1 4.2\r\n'
|
||||||
|
file += 'p ' + str(310) + '\r\n'
|
||||||
|
file += '1 % Mode\r\n'
|
||||||
|
file += '0 % Suppress FNQ inputs\r\n'
|
||||||
|
file += "'" + str(insel_outputs_path) + "' % File name\r\n"
|
||||||
|
file += "'*' % Fortran format\r\n"
|
||||||
|
|
||||||
|
return file
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def demand(insel_outputs_path):
|
||||||
|
heating = []
|
||||||
|
cooling = []
|
||||||
|
with open(Path(insel_outputs_path).resolve()) as csv_file:
|
||||||
|
csv_reader = csv.reader(csv_file)
|
||||||
|
for line in csv_reader:
|
||||||
|
demand = str(line).replace("['", '').replace("']", '').split()
|
||||||
|
heating.append(demand[0])
|
||||||
|
cooling.append(demand[1])
|
||||||
|
monthly_heating = pd.DataFrame(heating, columns=['INSEL'])
|
||||||
|
monthly_cooling = pd.DataFrame(cooling, columns=['INSEL'])
|
||||||
|
return monthly_heating, monthly_cooling
|
139
main.py
Normal file
139
main.py
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
"""
|
||||||
|
Monthly energy balance main
|
||||||
|
SPDX - License - Identifier: LGPL - 3.0 - or -later
|
||||||
|
Copyright © 2020 Project Author Pilar Monsalvete pilar_monsalvete@yahoo.es
|
||||||
|
"""
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
import ast
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
from helpers import monthly_values as mv
|
||||||
|
from populate import Populate
|
||||||
|
from insel.insel import Insel
|
||||||
|
from insel.templates.monthly_energy_balance import MonthlyEnergyBalance as templates
|
||||||
|
from simplified_radiosity_algorithm.simplified_radiosity_algorithm import SimplifiedRadiosityAlgorithm
|
||||||
|
from factories.geometry_factory import GeometryFactory
|
||||||
|
from factories.weather_factory import WeatherFactory
|
||||||
|
from city_model_structure.city import City
|
||||||
|
|
||||||
|
parser = ArgumentParser(description='Monthly energy balance workflow v0.1.')
|
||||||
|
required = parser.add_argument_group('required arguments')
|
||||||
|
parser.add_argument('--geometry_type', '-g', help='Geometry type {citygml}', default='citygml')
|
||||||
|
required.add_argument('--input_geometry_file', '-i', help='Input geometry file', required=True)
|
||||||
|
parser.add_argument('--use_pickle_file', '-p', help='Use pickle file instead of importing geometry file', default=False,
|
||||||
|
required=True)
|
||||||
|
parser.add_argument('--populated_step_in_pickle', '-ps', help='Physics and usage parameters already in pickle file',
|
||||||
|
default=False, required=True)
|
||||||
|
parser.add_argument('--weather_step_in_pickle', '-ws', help='Weather parameters already in pickle file',
|
||||||
|
default=False, required=True)
|
||||||
|
parser.add_argument('--use_cached_sra_file', '-u', help='Use sra files from cache, instead of freshly calculated sra '
|
||||||
|
'files', default=False)
|
||||||
|
required.add_argument('--project_folder', '-f', help='Project folder', required=True)
|
||||||
|
required.add_argument('--cli_weather_file', '-c', help='weather cli file', required=True)
|
||||||
|
required.add_argument('--city_name', '-n', help='city name for dat file', required=True)
|
||||||
|
|
||||||
|
try:
|
||||||
|
args = parser.parse_args()
|
||||||
|
except SystemExit:
|
||||||
|
sys.exit()
|
||||||
|
keep_files = True
|
||||||
|
# Step 1: Initialize the city model
|
||||||
|
pickle_file = ''
|
||||||
|
if ast.literal_eval(args.use_pickle_file):
|
||||||
|
pickle_file = Path(args.input_geometry_file).resolve()
|
||||||
|
city = City.load(pickle_file)
|
||||||
|
else:
|
||||||
|
city = GeometryFactory(args.geometry_type, Path(args.input_geometry_file).resolve()).city
|
||||||
|
|
||||||
|
# Step 2: Populate city adding thermal- and usage-related parameters
|
||||||
|
populated_step_in_pickle = ast.literal_eval(args.populated_step_in_pickle)
|
||||||
|
if populated_step_in_pickle:
|
||||||
|
populated_city = city
|
||||||
|
else:
|
||||||
|
populated_city = Populate(city).populated_city
|
||||||
|
pickle_file = Path(str(pickle_file).replace('.pickle', '_populated.pickle'))
|
||||||
|
populated_city.save(pickle_file)
|
||||||
|
if populated_city.buildings is None:
|
||||||
|
print('No building to be calculated')
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
# Step 3: Populate city adding climate-related parameters
|
||||||
|
weather_step_in_pickle = ast.literal_eval(args.weather_step_in_pickle)
|
||||||
|
if not weather_step_in_pickle:
|
||||||
|
city_name = args.city_name
|
||||||
|
WeatherFactory('dat', populated_city, city_name)
|
||||||
|
for building in populated_city.buildings:
|
||||||
|
if 'hour' not in building.external_temperature:
|
||||||
|
print('No external temperature found')
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
if 'month' not in building.external_temperature:
|
||||||
|
building.external_temperature['month'] = mv.MonthlyValues().\
|
||||||
|
get_mean_values(building.external_temperature['hour'][['inseldb']])
|
||||||
|
|
||||||
|
max_buildings_handled_by_sra = 500
|
||||||
|
sra_file_name = 'SRA'
|
||||||
|
sra = SimplifiedRadiosityAlgorithm(Path(args.project_folder).resolve(), sra_file_name,
|
||||||
|
Path(args.cli_weather_file).resolve(),
|
||||||
|
city.city_objects, lower_corner=city.lower_corner)
|
||||||
|
if ast.literal_eval(args.use_cached_sra_file):
|
||||||
|
sra.results()
|
||||||
|
sra.set_irradiance_surfaces(populated_city)
|
||||||
|
else:
|
||||||
|
total_number_of_buildings = len(city.buildings)
|
||||||
|
if total_number_of_buildings > max_buildings_handled_by_sra:
|
||||||
|
radius = 100
|
||||||
|
for building in city.buildings:
|
||||||
|
new_city = city.region(building.location, radius)
|
||||||
|
sra_file_name = 'SRA'
|
||||||
|
|
||||||
|
sra_new = SimplifiedRadiosityAlgorithm(Path(args.project_folder).resolve(), sra_file_name,
|
||||||
|
Path(args.cli_weather_file).resolve(),
|
||||||
|
new_city.city_objects, lower_corner=new_city.lower_corner)
|
||||||
|
sra_new.call_sra(keep_files=True)
|
||||||
|
sra_new.set_irradiance_surfaces(city, building_name=building.name)
|
||||||
|
else:
|
||||||
|
sra.call_sra(keep_files=keep_files)
|
||||||
|
sra.set_irradiance_surfaces(populated_city)
|
||||||
|
pickle_file = Path(str(pickle_file).replace('.pickle', '_weather.pickle'))
|
||||||
|
populated_city.save(pickle_file)
|
||||||
|
|
||||||
|
# Step 4: Demand calculation (one model per building)
|
||||||
|
print_results = None
|
||||||
|
file = 'city name: ' + city.name + '\r\n'
|
||||||
|
i = 0
|
||||||
|
for building in populated_city.buildings:
|
||||||
|
if 3000 < i and building.name != 'BLD122177':
|
||||||
|
print(building.name)
|
||||||
|
full_path_out = Path(args.project_folder + '/outputs/' + building.name + '_insel.out').resolve()
|
||||||
|
full_path_out.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
insel_file_name = building.name + '.insel'
|
||||||
|
try:
|
||||||
|
content = templates.generate_meb_template(building, full_path_out)
|
||||||
|
insel = Insel(Path(args.project_folder).resolve(), insel_file_name, content, mode=2, keep_files=keep_files).run()
|
||||||
|
building.heating['month'], building.cooling['month'] = templates.demand(full_path_out)
|
||||||
|
new_building = building.heating['month'].rename(columns={'INSEL': building.name})
|
||||||
|
if print_results is None:
|
||||||
|
print_results = new_building
|
||||||
|
else:
|
||||||
|
print_results = pd.concat([print_results, new_building], axis='columns')
|
||||||
|
file += '\r\n'
|
||||||
|
file += 'name: ' + building.name + '\r\n'
|
||||||
|
file += 'year of construction: ' + building.year_of_construction + '\r\n'
|
||||||
|
file += 'function: ' + building.function + '\r\n'
|
||||||
|
|
||||||
|
except ValueError:
|
||||||
|
print(sys.exc_info()[1])
|
||||||
|
print('Building ' + building.name + ' could not be processed')
|
||||||
|
continue
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
|
||||||
|
full_path_results = Path(args.project_folder + '/outputs/heating_demand.csv').resolve()
|
||||||
|
print_results.to_csv(full_path_results)
|
||||||
|
full_path_metadata = Path(args.project_folder + '/outputs/metadata.csv').resolve()
|
||||||
|
with open(full_path_metadata, 'w') as metadata_file:
|
||||||
|
metadata_file.write(file)
|
58
populate.py
Normal file
58
populate.py
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
"""
|
||||||
|
Populate city
|
||||||
|
SPDX - License - Identifier: LGPL - 3.0 - or -later
|
||||||
|
Copyright © 2020 Project Author Pilar Monsalvete pilar_monsalvete@yahoo.es
|
||||||
|
"""
|
||||||
|
|
||||||
|
from factories.physics_factory import PhysicsFactory
|
||||||
|
from factories.usage_factory import UsageFactory
|
||||||
|
from city_model_structure.city import City
|
||||||
|
|
||||||
|
|
||||||
|
class Populate:
|
||||||
|
def __init__(self, city):
|
||||||
|
self._city = city
|
||||||
|
self._populated_city = None
|
||||||
|
self._errors = []
|
||||||
|
|
||||||
|
@property
|
||||||
|
def handler(self):
|
||||||
|
if self._city.name == 'New York':
|
||||||
|
handler = '{0}_{1}'
|
||||||
|
return handler.format(self._city.country_code, self._city.name.lower().replace(' ', '_'))
|
||||||
|
return self._city.country_code
|
||||||
|
|
||||||
|
@property
|
||||||
|
def errors(self):
|
||||||
|
return self._errors
|
||||||
|
|
||||||
|
@property
|
||||||
|
def populated_city(self):
|
||||||
|
if self._populated_city is None:
|
||||||
|
self._errors = []
|
||||||
|
# Step 2.1: Thermal parameters
|
||||||
|
tmp_city = City(self._city.lower_corner, self._city.upper_corner, self._city.srs_name)
|
||||||
|
PhysicsFactory(self.handler, self._city)
|
||||||
|
print('original:', len(self._city.buildings))
|
||||||
|
for building in self._city.buildings:
|
||||||
|
# infiltration_rate_system_off is a mandatory parameter.
|
||||||
|
# If it is not returned, extract the building from the calculation list
|
||||||
|
if building.thermal_zones[0].infiltration_rate_system_off is not None:
|
||||||
|
tmp_city.add_city_object(building)
|
||||||
|
if tmp_city.buildings is None:
|
||||||
|
self._populated_city = tmp_city
|
||||||
|
return self._populated_city
|
||||||
|
|
||||||
|
# Step 2.2: Usage parameters
|
||||||
|
print('physics:', len(tmp_city.buildings))
|
||||||
|
UsageFactory(self.handler, tmp_city)
|
||||||
|
self._populated_city = City(self._city.lower_corner, self._city.upper_corner, self._city.srs_name)
|
||||||
|
for building in tmp_city.buildings:
|
||||||
|
# heating_setpoint is a mandatory parameter.
|
||||||
|
# If it is not returned, extract the building from the calculation list
|
||||||
|
print(len(building.usage_zones))
|
||||||
|
if len(building.usage_zones) > 0:
|
||||||
|
self._populated_city.add_city_object(building)
|
||||||
|
if self._populated_city.buildings is None:
|
||||||
|
self._errors.append('no archetype found per usage')
|
||||||
|
return self._populated_city
|
209
simplified_radiosity_algorithm/simplified_radiosity_algorithm.py
Normal file
209
simplified_radiosity_algorithm/simplified_radiosity_algorithm.py
Normal file
|
@ -0,0 +1,209 @@
|
||||||
|
"""
|
||||||
|
Simplified Radiosity Algorithm
|
||||||
|
SPDX - License - Identifier: LGPL - 3.0 - or -later
|
||||||
|
Copyright © 2020 Project Author Pilar Monsalvete pilar_monsalvete@yahoo.es
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from pathlib import Path
|
||||||
|
import pandas as pd
|
||||||
|
from helpers import monthly_values as mv
|
||||||
|
import subprocess
|
||||||
|
import xmltodict
|
||||||
|
from collections import OrderedDict
|
||||||
|
from subprocess import SubprocessError, TimeoutExpired, CalledProcessError
|
||||||
|
|
||||||
|
|
||||||
|
class SimplifiedRadiosityAlgorithm:
|
||||||
|
# todo: define executable as configurable parameter
|
||||||
|
# _executable = 'citysim_sra' # for linux
|
||||||
|
_executable = 'shortwave_integer' # for windows
|
||||||
|
|
||||||
|
def __init__(self, sra_working_path, sra_file_name, full_path_cli, city_objects=None,
|
||||||
|
begin_month=1, begin_day=1, end_month=12, end_day=31, lower_corner=None):
|
||||||
|
self._full_path_cli = full_path_cli
|
||||||
|
self._sra_file_name = sra_file_name
|
||||||
|
self._begin_month = begin_month
|
||||||
|
self._begin_day = begin_day
|
||||||
|
self._end_month = end_month
|
||||||
|
self._end_day = end_day
|
||||||
|
if lower_corner is None:
|
||||||
|
lower_corner = [0, 0, 0]
|
||||||
|
self._lower_corner = lower_corner
|
||||||
|
self._sra_working_path = sra_working_path
|
||||||
|
tmp_path = (sra_working_path / 'tmp').resolve()
|
||||||
|
Path(tmp_path).mkdir(parents=True, exist_ok=True)
|
||||||
|
# Ensure tmp file is empty
|
||||||
|
for child in tmp_path.glob('*'):
|
||||||
|
if child.is_file():
|
||||||
|
child.unlink()
|
||||||
|
cache_path = (sra_working_path / 'cache').resolve()
|
||||||
|
Path(cache_path).mkdir(parents=True, exist_ok=True)
|
||||||
|
self._full_path_in_sra = (tmp_path / (sra_file_name + '.xml')).resolve()
|
||||||
|
self._sra_out_file_name = sra_file_name + '_SW.out'
|
||||||
|
self._full_path_out_sra = (cache_path / self._sra_out_file_name).resolve()
|
||||||
|
|
||||||
|
print(self._full_path_in_sra, self._sra_out_file_name, self._full_path_out_sra)
|
||||||
|
|
||||||
|
self._out_values = None
|
||||||
|
self._radiation = []
|
||||||
|
self._content = OrderedDict()
|
||||||
|
climate = OrderedDict()
|
||||||
|
climate['@location'] = self._full_path_cli
|
||||||
|
climate['@city'] = self.city
|
||||||
|
simulation = OrderedDict()
|
||||||
|
simulation['@beginMonth'] = begin_month
|
||||||
|
simulation['@beginDay'] = begin_day
|
||||||
|
simulation['@endMonth'] = end_month
|
||||||
|
simulation['@endDay'] = end_day
|
||||||
|
city_sim = OrderedDict()
|
||||||
|
city_sim['@name'] = sra_file_name + '.xml'
|
||||||
|
city_sim['Simulation'] = simulation
|
||||||
|
city_sim['Climate'] = climate
|
||||||
|
self._content['CitySim'] = city_sim
|
||||||
|
if city_objects is not None:
|
||||||
|
self.add_city_objects(city_objects)
|
||||||
|
self.save()
|
||||||
|
|
||||||
|
def call_sra(self, keep_files=False):
|
||||||
|
try:
|
||||||
|
completed = subprocess.run([self._executable, str(self._full_path_in_sra)])
|
||||||
|
except (SubprocessError, TimeoutExpired, CalledProcessError) as error:
|
||||||
|
raise Exception(error)
|
||||||
|
file = (Path(self._sra_working_path) / 'tmp' / self._sra_out_file_name).resolve()
|
||||||
|
new_path = (Path(self._sra_working_path) / 'cache' / self._sra_out_file_name).resolve()
|
||||||
|
try:
|
||||||
|
shutil.move(str(file), str(new_path))
|
||||||
|
except Exception:
|
||||||
|
raise Exception('No SRA output file found')
|
||||||
|
self._out_values = self.results()
|
||||||
|
if not keep_files:
|
||||||
|
os.remove(self._full_path_in_sra)
|
||||||
|
return completed
|
||||||
|
|
||||||
|
def results(self):
|
||||||
|
if self._out_values is None:
|
||||||
|
try:
|
||||||
|
self._out_values = pd.read_csv(self._full_path_out_sra, sep='\s+', header=0)
|
||||||
|
except Exception:
|
||||||
|
raise Exception('No SRA output file found')
|
||||||
|
return self._out_values
|
||||||
|
|
||||||
|
@property
|
||||||
|
def radiation(self) -> []:
|
||||||
|
if len(self._radiation) == 0:
|
||||||
|
id_building = ''
|
||||||
|
header_building = []
|
||||||
|
for column in self._out_values.columns.values:
|
||||||
|
if id_building != column.split(':')[1]:
|
||||||
|
id_building = column.split(':')[1]
|
||||||
|
if len(header_building) > 0:
|
||||||
|
self._radiation.append(pd.concat([mv.MonthlyValues().month_hour, self._out_values[header_building]],
|
||||||
|
axis=1))
|
||||||
|
header_building = [column]
|
||||||
|
else:
|
||||||
|
header_building.append(column)
|
||||||
|
self._radiation.append(pd.concat([mv.MonthlyValues().month_hour, self._out_values[header_building]], axis=1))
|
||||||
|
return self._radiation
|
||||||
|
|
||||||
|
def set_irradiance_surfaces(self, city, mode=0, building_name=None):
|
||||||
|
"""
|
||||||
|
saves in building surfaces the correspondent irradiance at different time-scales depending on the mode
|
||||||
|
if building is None, it saves all buildings' surfaces in file, if building is specified, it saves only that
|
||||||
|
specific building values
|
||||||
|
mode = 0, set only monthly values
|
||||||
|
mode = 1, set only hourly values
|
||||||
|
mode = 2, set both
|
||||||
|
:parameter city: city
|
||||||
|
:parameter mode: str (time-scale definition)
|
||||||
|
:parameter building_name: str
|
||||||
|
:return: none
|
||||||
|
"""
|
||||||
|
for radiation in self.radiation:
|
||||||
|
city_object_name = radiation.columns.values.tolist()[1].split(':')[1]
|
||||||
|
if building_name is not None:
|
||||||
|
if city_object_name != building_name:
|
||||||
|
continue
|
||||||
|
city_object = city.city_object(city_object_name)
|
||||||
|
for column in radiation.columns.values:
|
||||||
|
if column == 'month':
|
||||||
|
continue
|
||||||
|
header_name = column
|
||||||
|
surface_name = header_name.split(':')[2]
|
||||||
|
surface = city_object.surface(surface_name)
|
||||||
|
new_value = pd.DataFrame(radiation[[header_name]].to_numpy(), columns=['sra'])
|
||||||
|
if mode == 0 or mode == 2:
|
||||||
|
month_new_value = mv.MonthlyValues().get_mean_values(new_value)
|
||||||
|
if 'month' not in surface.global_irradiance:
|
||||||
|
surface.global_irradiance['month'] = month_new_value
|
||||||
|
else:
|
||||||
|
pd.concat([surface.global_irradiance['month'], month_new_value], axis=1)
|
||||||
|
if mode == 1 or mode == 2:
|
||||||
|
if 'hour' not in surface.global_irradiance:
|
||||||
|
surface.global_irradiance['hour'] = new_value
|
||||||
|
else:
|
||||||
|
pd.concat([surface.global_irradiance['hour'], new_value], axis=1)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def content(self):
|
||||||
|
return xmltodict.unparse(self._content, pretty=True, short_empty_elements=True)
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
with open(self._full_path_in_sra, "w") as sra_file:
|
||||||
|
sra_file.write(self.content)
|
||||||
|
return
|
||||||
|
|
||||||
|
def _correct_points(self, points):
|
||||||
|
# correct the x, y, z values into the reference frame set by lower_corner parameter
|
||||||
|
# [0, 0, 0] by default means no correction.
|
||||||
|
x = points[0] - self._lower_corner[0]
|
||||||
|
y = points[1] - self._lower_corner[1]
|
||||||
|
z = points[2] - self._lower_corner[2]
|
||||||
|
correct_points = [x, y, z]
|
||||||
|
return correct_points
|
||||||
|
|
||||||
|
def add_city_objects(self, city_objects):
|
||||||
|
buildings = []
|
||||||
|
for i in range(len(city_objects)):
|
||||||
|
city_object = city_objects[i]
|
||||||
|
building = OrderedDict()
|
||||||
|
building['@Name'] = city_object.name
|
||||||
|
building['@id'] = i
|
||||||
|
building['@key'] = city_object.name
|
||||||
|
building['@Simulate'] = 'True'
|
||||||
|
walls, roofs, floors = [], [], []
|
||||||
|
for s in city_object.surfaces:
|
||||||
|
surface = OrderedDict()
|
||||||
|
surface['@id'] = s.name
|
||||||
|
surface['@ShortWaveReflectance'] = s.swr
|
||||||
|
for j in range(len(s.points - 1)):
|
||||||
|
points = self._correct_points(s.points[j])
|
||||||
|
vertex = OrderedDict()
|
||||||
|
vertex['@x'] = points[0]
|
||||||
|
vertex['@y'] = points[1]
|
||||||
|
vertex['@z'] = points[2]
|
||||||
|
surface['V' + str(j)] = vertex
|
||||||
|
if s.type == 'Wall':
|
||||||
|
walls.append(surface)
|
||||||
|
elif s.type == 'Roof':
|
||||||
|
roofs.append(surface)
|
||||||
|
else:
|
||||||
|
floors.append(surface)
|
||||||
|
|
||||||
|
building['Wall'] = walls
|
||||||
|
building['Roof'] = roofs
|
||||||
|
building['Floor'] = floors
|
||||||
|
buildings.append(building)
|
||||||
|
|
||||||
|
district = OrderedDict()
|
||||||
|
district['FarFieldObstructions'] = None
|
||||||
|
district['Building'] = buildings
|
||||||
|
self._content['CitySim']['District'] = district
|
||||||
|
return
|
||||||
|
|
||||||
|
@property
|
||||||
|
def city(self):
|
||||||
|
with open(self._full_path_cli, 'r') as file:
|
||||||
|
return file.readline().replace('\n', '')
|
||||||
|
|
189
tests/test_meb_workflow.py
Normal file
189
tests/test_meb_workflow.py
Normal file
|
@ -0,0 +1,189 @@
|
||||||
|
"""
|
||||||
|
TestMebWorkflow tests and validates the complete Monthly Energy Balance workflow
|
||||||
|
SPDX - License - Identifier: LGPL - 3.0 - or -later
|
||||||
|
Copyright © 2020 Project Author Pilar Monsalvete pilar_monsalvete@yahoo.es
|
||||||
|
"""
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
from unittest import TestCase
|
||||||
|
import numpy as np
|
||||||
|
import subprocess
|
||||||
|
from subprocess import SubprocessError, TimeoutExpired, CalledProcessError
|
||||||
|
|
||||||
|
from insel.insel import Insel
|
||||||
|
from insel.templates.monthly_energy_balance import MonthlyEnergyBalance as templates
|
||||||
|
from factories.geometry_factory import GeometryFactory
|
||||||
|
from populate import Populate
|
||||||
|
from factories.weather_factory import WeatherFactory
|
||||||
|
from helpers import monthly_values as mv
|
||||||
|
from simplified_radiosity_algorithm.simplified_radiosity_algorithm import SimplifiedRadiosityAlgorithm as sralgorithm
|
||||||
|
from city_model_structure.city import City
|
||||||
|
|
||||||
|
|
||||||
|
class TestMebWorkflow(TestCase):
|
||||||
|
"""
|
||||||
|
TestMebWorkflow TestCase 1
|
||||||
|
"""
|
||||||
|
def setUp(self) -> None:
|
||||||
|
"""
|
||||||
|
Test setup
|
||||||
|
:return: None
|
||||||
|
"""
|
||||||
|
self._example_path = (Path(__file__).parent.parent / 'tests_data').resolve()
|
||||||
|
self._geometry_type = 'citygml'
|
||||||
|
self._use_cached_sra_file = False
|
||||||
|
self._input_geometry_file = (self._example_path / 'gis' / '2050 bp_2buildings.gml').resolve()
|
||||||
|
self._project_folder = Path(__file__).parent.parent
|
||||||
|
self._cli_weather_file = (self._example_path / 'weather' / 'inseldb_new_york_city.cli').resolve()
|
||||||
|
self._city_gml = None
|
||||||
|
self._city = None
|
||||||
|
self._populated_city = None
|
||||||
|
self._monthly_temperatures = None
|
||||||
|
self._city_with_weather = None
|
||||||
|
self._city_with_cli = None
|
||||||
|
self._city_with_dat = None
|
||||||
|
self._pickle_file = (self._example_path / 'gis' / 'kelowna_test_case.pickle').resolve()
|
||||||
|
self._pickle_file_populated = Path(str(self._pickle_file).replace('.pickle', '_populated.pickle'))
|
||||||
|
self._pickle_file_populated_weather = Path(str(self._pickle_file_populated).replace('.pickle', '_weather.pickle'))
|
||||||
|
self._city_name = 'Summerland'
|
||||||
|
|
||||||
|
def _get_citygml(self, use_pickle=False):
|
||||||
|
if self._city_gml is None:
|
||||||
|
if use_pickle:
|
||||||
|
self._city_gml = City.load(self._pickle_file)
|
||||||
|
else:
|
||||||
|
file_path = self._input_geometry_file
|
||||||
|
self._city_gml = GeometryFactory('citygml', file_path).city
|
||||||
|
self.assertIsNotNone(self._city_gml, 'city is none')
|
||||||
|
return self._city_gml
|
||||||
|
|
||||||
|
def _get_citygml_populated(self, use_pickle):
|
||||||
|
if self._populated_city is None:
|
||||||
|
self._city = self._get_citygml(use_pickle=use_pickle)
|
||||||
|
self._populated_city = Populate(self._city).populated_city
|
||||||
|
return self._populated_city
|
||||||
|
|
||||||
|
def _get_citygml_with_weather(self, use_pickle):
|
||||||
|
if self._city_with_weather is None:
|
||||||
|
self._city_with_weather = self._get_citygml(use_pickle=use_pickle)
|
||||||
|
weather_path = (self._example_path / 'weather').resolve()
|
||||||
|
WeatherFactory('dat', self._city_with_weather, city_name=self._city_name, base_path=weather_path)
|
||||||
|
for building in self._city_with_weather.buildings:
|
||||||
|
building.external_temperature['month'] = mv.MonthlyValues(). \
|
||||||
|
get_mean_values(building.external_temperature['hour'][['inseldb']])
|
||||||
|
|
||||||
|
sra_file_name = 'SRA'
|
||||||
|
sra = sralgorithm(Path(self._project_folder).resolve(), sra_file_name, Path(self._cli_weather_file).resolve(),
|
||||||
|
self._city_with_weather.city_objects, lower_corner=self._city_with_weather.lower_corner)
|
||||||
|
if self._use_cached_sra_file:
|
||||||
|
sra.results()
|
||||||
|
else:
|
||||||
|
sra.call_sra(keep_files=True)
|
||||||
|
sra.set_irradiance_surfaces(self._city_with_weather)
|
||||||
|
return self._city_with_weather
|
||||||
|
|
||||||
|
def _get_cli_single_building(self, building_name, radius, use_pickle):
|
||||||
|
self._city_with_cli = self._get_citygml(use_pickle=use_pickle)
|
||||||
|
building = self._city_with_cli.city_object(building_name)
|
||||||
|
new_city = self._city_with_cli.region(building.location, radius)
|
||||||
|
sra_file_name = 'SRA'
|
||||||
|
print('location', building.location)
|
||||||
|
print('lower corner', new_city.lower_corner)
|
||||||
|
full_path_cli = (self._example_path / 'weather' / 'inseldb_Summerland.cli').resolve()
|
||||||
|
sra = sralgorithm(Path(self._project_folder).resolve(), sra_file_name, full_path_cli, new_city.city_objects,
|
||||||
|
lower_corner=new_city.lower_corner)
|
||||||
|
sra.call_sra(keep_files=True)
|
||||||
|
sra.set_irradiance_surfaces(self._city_with_cli, building_name=building_name)
|
||||||
|
return self._city_with_cli
|
||||||
|
|
||||||
|
def _get_city_with_dat(self, use_pickle):
|
||||||
|
if self._city_with_dat is None:
|
||||||
|
self._city_with_dat = self._get_citygml(use_pickle=use_pickle)
|
||||||
|
weather_path = (self._example_path / 'weather').resolve()
|
||||||
|
WeatherFactory('dat', self._city_with_dat, city_name=self._city_name, base_path=weather_path)
|
||||||
|
for building in self._city_with_dat.buildings:
|
||||||
|
building.external_temperature['month'] = mv.MonthlyValues(). \
|
||||||
|
get_mean_values(building.external_temperature['hour'][['inseldb']])
|
||||||
|
return self._city_with_dat
|
||||||
|
|
||||||
|
def test_populate_city(self):
|
||||||
|
"""
|
||||||
|
Test populate class
|
||||||
|
:return: none
|
||||||
|
"""
|
||||||
|
# populated_city = self._get_citygml_populated(True)
|
||||||
|
# populated_city.save(pickle_file_populated)
|
||||||
|
populated_city = City.load(self._pickle_file_populated)
|
||||||
|
self.assertIsNotNone(populated_city.city_objects, 'city_objects is none')
|
||||||
|
for building in populated_city.buildings:
|
||||||
|
self.assertIsNotNone(building.usage_zones, 'city_object return none')
|
||||||
|
self.assertIsNotNone(building.thermal_zones, 'city_object return none')
|
||||||
|
|
||||||
|
def test_weather_assignment(self):
|
||||||
|
"""
|
||||||
|
Test the weather assignment
|
||||||
|
:return: none
|
||||||
|
"""
|
||||||
|
weather_city = self._get_citygml_with_weather(False)
|
||||||
|
for building in weather_city.buildings:
|
||||||
|
self.assertFalse(building.external_temperature['month'].empty, 'monthly external temperature return none')
|
||||||
|
for surface in building.surfaces:
|
||||||
|
if surface.type != 'Ground':
|
||||||
|
self.assertIsNotNone(surface.global_irradiance['month'], 'monthly irradiance return none')
|
||||||
|
|
||||||
|
def test_insel_call(self):
|
||||||
|
"""
|
||||||
|
Test the insel template generation and engine call
|
||||||
|
:return: none
|
||||||
|
"""
|
||||||
|
self._get_citygml_populated(False)
|
||||||
|
city = self._get_citygml_with_weather(False)
|
||||||
|
expected_values = [[13619.57, 3.65], [14886.33, 1.67]]
|
||||||
|
i = 0
|
||||||
|
for building in city.buildings:
|
||||||
|
full_path_out = Path(self._project_folder / 'outputs' / (building.name + '_insel.out')).resolve()
|
||||||
|
full_path_out.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
insel_file_name = building.name + '.insel'
|
||||||
|
content = templates.generate_meb_template(building, full_path_out)
|
||||||
|
self.assertIsNotNone(content, 'content return empty')
|
||||||
|
Insel(Path(self._project_folder).resolve(), insel_file_name, content, mode=2,
|
||||||
|
keep_files=True).run()
|
||||||
|
building.heating['month'], building.cooling['month'] = templates.demand(full_path_out)
|
||||||
|
values = building.heating['month'][['INSEL']].to_numpy()
|
||||||
|
self.assertEqual(expected_values[i][0], np.around(float(values[11]), decimals=2), 'wrong value monthly heating')
|
||||||
|
values = building.cooling['month'][['INSEL']].to_numpy()
|
||||||
|
self.assertEqual(expected_values[i][1], np.around(float(values[11]), decimals=2), 'wrong value monthly cooling')
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
def test_city_with_weather_building_by_building(self):
|
||||||
|
radius = 100
|
||||||
|
building_names = ['BLD100086', 'BLD131702', 'BLD132148', 'BLD126221', 'BLD131081', 'BLD135303', 'BLD130088',
|
||||||
|
'BLD128703', 'BLD121900', 'BLD141378', 'BLD135375', 'BLD126801', 'BLD120774', 'BLD118577',
|
||||||
|
'BLD129395', 'BLD126848', 'BLD115972', 'BLD138959', 'BLD122103', 'BLD114335', 'BLD124272',
|
||||||
|
'BLD107027', 'BLD105415', 'BLD129867', 'BLD133164', 'BLD119241', 'BLD106658', 'BLD114097',
|
||||||
|
'BLD130182', 'BLD121456', 'BLD123516', 'BLD126061', 'BLD128845', 'BLD138802', 'BLD129673']
|
||||||
|
building_names = ['BLD100086']
|
||||||
|
|
||||||
|
city = self._get_city_with_dat(True)
|
||||||
|
for building in city.buildings:
|
||||||
|
self.assertTrue(building.external_temperature, 'external temperature return none')
|
||||||
|
|
||||||
|
for building_name in building_names:
|
||||||
|
print(building_name)
|
||||||
|
weather_city = self._get_cli_single_building(building_name, radius, True)
|
||||||
|
# for building in weather_city.city_objects:
|
||||||
|
# if building.name == building_name:
|
||||||
|
# for surface in building.surfaces:
|
||||||
|
# if surface.type != 'Ground':
|
||||||
|
# self.assertTrue(surface.global_irradiance, 'global irradiance return none in calculated building')
|
||||||
|
# else:
|
||||||
|
# for surface in building.surfaces:
|
||||||
|
# self.assertFalse(surface.global_irradiance, 'global irradiance return not none in not calculated building')
|
||||||
|
|
||||||
|
def test_sra(self):
|
||||||
|
_executable = 'shortwave_integer'
|
||||||
|
_full_path_in = (Path(__file__).parent.parent / 'tmp\SRA.xml').resolve()
|
||||||
|
try:
|
||||||
|
completed = subprocess.run([_executable, str(_full_path_in)])
|
||||||
|
except (SubprocessError, TimeoutExpired, CalledProcessError) as error:
|
||||||
|
raise Exception(error)
|
19508
tests_data/gis/2050 bp_20buildings.gml
Normal file
19508
tests_data/gis/2050 bp_20buildings.gml
Normal file
File diff suppressed because it is too large
Load Diff
626
tests_data/gis/2050 bp_2buildings.gml
Normal file
626
tests_data/gis/2050 bp_2buildings.gml
Normal file
|
@ -0,0 +1,626 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<CityModel>
|
||||||
|
<name>Gowanus 2050 Best Practice Scenario</name>
|
||||||
|
<boundedBy>
|
||||||
|
<Envelope srsName="EPSG:32118" srsDimension="3" xmlns:brid="http://www.opengis.net/citygml/bridge/2.0" xmlns:tran="http://www.opengis.net/citygml/transportation/2.0" xmlns:frn="http://www.opengis.net/citygml/cityfurniture/2.0" xmlns:wtr="http://www.opengis.net/citygml/waterbody/2.0" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:veg="http://www.opengis.net/citygml/vegetation/2.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:tun="http://www.opengis.net/citygml/tunnel/2.0" xmlns:tex="http://www.opengis.net/citygml/texturedsurface/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:luse="http://www.opengis.net/citygml/landuse/2.0" xmlns:xAL="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:smil20lang="http://www.w3.org/2001/SMIL20/Language" xmlns:pbase="http://www.opengis.net/citygml/profiles/base/2.0" xmlns:smil20="http://www.w3.org/2001/SMIL20/" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:grp="http://www.opengis.net/citygml/cityobjectgroup/2.0">
|
||||||
|
<lowerCorner>299606.4441129853 55348.37638737355 0</lowerCorner>
|
||||||
|
<upperCorner>301879.9050504853 57594.05119206105 62.04879541695123</upperCorner>
|
||||||
|
</Envelope>
|
||||||
|
</boundedBy>
|
||||||
|
<cityObjectMember>
|
||||||
|
<Building id="GBP__169">
|
||||||
|
<stringAttribute name="PLUTO_year_built">
|
||||||
|
<value>1965</value>
|
||||||
|
</stringAttribute>
|
||||||
|
<stringAttribute name="PLUTO_building_class">
|
||||||
|
<value>I1</value>
|
||||||
|
</stringAttribute>
|
||||||
|
<lod1Solid>
|
||||||
|
<Solid srsName="EPSG:32118" srsDimension="3">
|
||||||
|
<exterior>
|
||||||
|
<CompositeSurface>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301010.4314176728 57301.3749225298 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727 301024.4275114228 57311.0624225298 10.786276534199727 301010.4314176728 57301.3749225298 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301014.183859079 57308.78849674855 10.786276534199727 301010.4314176728 57301.3749225298 10.786276534199727 301024.4275114228 57311.0624225298 10.786276534199727 301014.183859079 57308.78849674855 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301004.1125700165 57288.87345768605 10.786276534199727 300992.0398161103 57285.56779362355 10.786276534199727 301000.3254606415 57281.3758990923 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301024.4275114228 57311.0624225298 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727 301004.5266325165 57271.70548893605 10.786276534199727 301024.4275114228 57311.0624225298 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301000.3254606415 57281.3758990923 10.786276534199727 300997.2820036103 57275.3758990923 10.786276534199727 301004.5266325165 57271.70548893605 10.786276534199727 301000.3254606415 57281.3758990923 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301004.1125700165 57288.87345768605 10.786276534199727 301000.3254606415 57281.3758990923 10.786276534199727 301004.5266325165 57271.70548893605 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301017.183859079 57314.7147662798 10.786276534199727 301014.183859079 57308.78849674855 10.786276534199727 301024.4275114228 57311.0624225298 10.786276534199727 301017.183859079 57314.7147662798 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301005.9055387665 57312.9716022173 10.786276534199727 301002.1530973603 57305.55900456105 10.786276534199727 301014.183859079 57308.78849674855 10.786276534199727 301005.9055387665 57312.9716022173 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300995.8337614228 57293.0555865923 10.786276534199727 300992.0398161103 57285.56779362355 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727 300995.8337614228 57293.0555865923 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301014.183859079 57308.78849674855 10.786276534199727 301002.1530973603 57305.55900456105 10.786276534199727 301010.4314176728 57301.3749225298 10.786276534199727 301014.183859079 57308.78849674855 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301005.9055387665 57312.9716022173 10.786276534199727 301005.9055387665 57312.9716022173 0.0 301002.1530973603 57305.55900456105 10.786276534199727 301005.9055387665 57312.9716022173 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301002.1530973603 57305.55900456105 10.786276534199727 301005.9055387665 57312.9716022173 0.0 301002.1530973603 57305.55900456105 0.0 301002.1530973603 57305.55900456105 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301017.183859079 57314.7147662798 0.0 301024.4275114228 57311.0624225298 0.0 301014.183859079 57308.78849674855 0.0 301017.183859079 57314.7147662798 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301005.9055387665 57312.9716022173 0.0 301014.183859079 57308.78849674855 0.0 301002.1530973603 57305.55900456105 0.0 301005.9055387665 57312.9716022173 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300995.8337614228 57293.0555865923 0.0 301004.1125700165 57288.87345768605 0.0 300992.0398161103 57285.56779362355 0.0 300995.8337614228 57293.0555865923 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301014.183859079 57308.78849674855 0.0 301010.4314176728 57301.3749225298 0.0 301002.1530973603 57305.55900456105 0.0 301014.183859079 57308.78849674855 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301010.4314176728 57301.3749225298 0.0 301024.4275114228 57311.0624225298 0.0 301004.1125700165 57288.87345768605 0.0 301010.4314176728 57301.3749225298 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301014.183859079 57308.78849674855 0.0 301024.4275114228 57311.0624225298 0.0 301010.4314176728 57301.3749225298 0.0 301014.183859079 57308.78849674855 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301024.4275114228 57311.0624225298 0.0 301004.5266325165 57271.70548893605 0.0 301004.1125700165 57288.87345768605 0.0 301024.4275114228 57311.0624225298 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301004.1125700165 57288.87345768605 0.0 301000.3254606415 57281.3758990923 0.0 300992.0398161103 57285.56779362355 0.0 301004.1125700165 57288.87345768605 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301000.3254606415 57281.3758990923 0.0 301004.5266325165 57271.70548893605 0.0 300997.2820036103 57275.3758990923 0.0 301000.3254606415 57281.3758990923 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301004.1125700165 57288.87345768605 0.0 301004.5266325165 57271.70548893605 0.0 301000.3254606415 57281.3758990923 0.0 301004.1125700165 57288.87345768605 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301014.183859079 57308.78849674855 10.786276534199727 301014.183859079 57308.78849674855 0.0 301005.9055387665 57312.9716022173 10.786276534199727 301014.183859079 57308.78849674855 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301005.9055387665 57312.9716022173 10.786276534199727 301014.183859079 57308.78849674855 0.0 301005.9055387665 57312.9716022173 0.0 301005.9055387665 57312.9716022173 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301017.183859079 57314.7147662798 10.786276534199727 301017.183859079 57314.7147662798 0.0 301014.183859079 57308.78849674855 10.786276534199727 301017.183859079 57314.7147662798 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301014.183859079 57308.78849674855 10.786276534199727 301017.183859079 57314.7147662798 0.0 301014.183859079 57308.78849674855 0.0 301014.183859079 57308.78849674855 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301002.1530973603 57305.55900456105 10.786276534199727 301002.1530973603 57305.55900456105 0.0 301010.4314176728 57301.3749225298 10.786276534199727 301002.1530973603 57305.55900456105 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301010.4314176728 57301.3749225298 10.786276534199727 301002.1530973603 57305.55900456105 0.0 301010.4314176728 57301.3749225298 0.0 301010.4314176728 57301.3749225298 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301024.4275114228 57311.0624225298 10.786276534199727 301024.4275114228 57311.0624225298 0.0 301017.183859079 57314.7147662798 10.786276534199727 301024.4275114228 57311.0624225298 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301017.183859079 57314.7147662798 10.786276534199727 301024.4275114228 57311.0624225298 0.0 301017.183859079 57314.7147662798 0.0 301017.183859079 57314.7147662798 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301004.5266325165 57271.70548893605 10.786276534199727 301004.5266325165 57271.70548893605 0.0 301024.4275114228 57311.0624225298 10.786276534199727 301004.5266325165 57271.70548893605 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301024.4275114228 57311.0624225298 10.786276534199727 301004.5266325165 57271.70548893605 0.0 301024.4275114228 57311.0624225298 0.0 301024.4275114228 57311.0624225298 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300997.2820036103 57275.3758990923 10.786276534199727 300997.2820036103 57275.3758990923 0.0 301004.5266325165 57271.70548893605 10.786276534199727 300997.2820036103 57275.3758990923 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301004.5266325165 57271.70548893605 10.786276534199727 300997.2820036103 57275.3758990923 0.0 301004.5266325165 57271.70548893605 0.0 301004.5266325165 57271.70548893605 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301010.4314176728 57301.3749225298 10.786276534199727 301010.4314176728 57301.3749225298 0.0 301004.1125700165 57288.87345768605 10.786276534199727 301010.4314176728 57301.3749225298 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301004.1125700165 57288.87345768605 10.786276534199727 301010.4314176728 57301.3749225298 0.0 301004.1125700165 57288.87345768605 0.0 301004.1125700165 57288.87345768605 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301004.1125700165 57288.87345768605 10.786276534199727 301004.1125700165 57288.87345768605 0.0 300995.8337614228 57293.0555865923 10.786276534199727 301004.1125700165 57288.87345768605 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300995.8337614228 57293.0555865923 10.786276534199727 301004.1125700165 57288.87345768605 0.0 300995.8337614228 57293.0555865923 0.0 300995.8337614228 57293.0555865923 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301000.3254606415 57281.3758990923 10.786276534199727 301000.3254606415 57281.3758990923 0.0 300997.2820036103 57275.3758990923 10.786276534199727 301000.3254606415 57281.3758990923 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300997.2820036103 57275.3758990923 10.786276534199727 301000.3254606415 57281.3758990923 0.0 300997.2820036103 57275.3758990923 0.0 300997.2820036103 57275.3758990923 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300995.8337614228 57293.0555865923 10.786276534199727 300995.8337614228 57293.0555865923 0.0 300992.0398161103 57285.56779362355 10.786276534199727 300995.8337614228 57293.0555865923 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300992.0398161103 57285.56779362355 10.786276534199727 300995.8337614228 57293.0555865923 0.0 300992.0398161103 57285.56779362355 0.0 300992.0398161103 57285.56779362355 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300992.0398161103 57285.56779362355 10.786276534199727 300992.0398161103 57285.56779362355 0.0 301000.3254606415 57281.3758990923 10.786276534199727 300992.0398161103 57285.56779362355 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>301000.3254606415 57281.3758990923 10.786276534199727 300992.0398161103 57285.56779362355 0.0 301000.3254606415 57281.3758990923 0.0 301000.3254606415 57281.3758990923 10.786276534199727</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
</CompositeSurface>
|
||||||
|
</exterior>
|
||||||
|
</Solid>
|
||||||
|
</lod1Solid>
|
||||||
|
<yearOfConstruction>1965</yearOfConstruction>
|
||||||
|
<function>I1</function>
|
||||||
|
</Building>
|
||||||
|
</cityObjectMember>
|
||||||
|
<cityObjectMember>
|
||||||
|
<Building id="GBP__15">
|
||||||
|
<stringAttribute name="PLUTO_year_built">
|
||||||
|
<value>2045</value>
|
||||||
|
</stringAttribute>
|
||||||
|
<stringAttribute name="PLUTO_building_class">
|
||||||
|
<value>I1</value>
|
||||||
|
</stringAttribute>
|
||||||
|
<lod1Solid>
|
||||||
|
<Solid srsName="EPSG:32118" srsDimension="3">
|
||||||
|
<exterior>
|
||||||
|
<CompositeSurface>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300906.4538786103 56181.20939518605 7.9999997168779355 300897.539327829 56167.5155475298 7.9999997168779355 300906.4538786103 56181.20939518605 0.0 300906.4538786103 56181.20939518605 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300897.539327829 56167.5155475298 7.9999997168779355 300897.539327829 56167.5155475298 0.0 300906.4538786103 56181.20939518605 0.0 300897.539327829 56167.5155475298 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300883.334249704 56196.25919987355 7.9999997168779355 300861.299093454 56191.1053912798 7.9999997168779355 300897.539327829 56167.5155475298 7.9999997168779355 300883.334249704 56196.25919987355 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300906.4538786103 56181.20939518605 7.9999997168779355 300883.334249704 56196.25919987355 7.9999997168779355 300897.539327829 56167.5155475298 7.9999997168779355 300906.4538786103 56181.20939518605 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300896.0696012665 56215.82365299855 7.9999997168779355 300882.9489957978 56224.3641803423 7.9999997168779355 300883.334249704 56196.25919987355 7.9999997168779355 300896.0696012665 56215.82365299855 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300882.9489957978 56224.3641803423 7.9999997168779355 300861.299093454 56191.1053912798 7.9999997168779355 300883.334249704 56196.25919987355 7.9999997168779355 300882.9489957978 56224.3641803423 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300883.334249704 56196.25919987355 7.9999997168779355 300883.334249704 56196.25919987355 0.0 300896.0696012665 56215.82365299855 7.9999997168779355 300883.334249704 56196.25919987355 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300896.0696012665 56215.82365299855 7.9999997168779355 300883.334249704 56196.25919987355 0.0 300896.0696012665 56215.82365299855 0.0 300896.0696012665 56215.82365299855 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300883.334249704 56196.25919987355 7.9999997168779355 300906.4538786103 56181.20939518605 7.9999997168779355 300883.334249704 56196.25919987355 0.0 300883.334249704 56196.25919987355 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300906.4538786103 56181.20939518605 7.9999997168779355 300906.4538786103 56181.20939518605 0.0 300883.334249704 56196.25919987355 0.0 300906.4538786103 56181.20939518605 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300896.0696012665 56215.82365299855 0.0 300883.334249704 56196.25919987355 0.0 300882.9489957978 56224.3641803423 0.0 300896.0696012665 56215.82365299855 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300882.9489957978 56224.3641803423 0.0 300883.334249704 56196.25919987355 0.0 300861.299093454 56191.1053912798 0.0 300882.9489957978 56224.3641803423 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300883.334249704 56196.25919987355 0.0 300897.539327829 56167.5155475298 0.0 300861.299093454 56191.1053912798 0.0 300883.334249704 56196.25919987355 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300906.4538786103 56181.20939518605 0.0 300897.539327829 56167.5155475298 0.0 300883.334249704 56196.25919987355 0.0 300906.4538786103 56181.20939518605 0.0</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300882.9489957978 56224.3641803423 7.9999997168779355 300896.0696012665 56215.82365299855 7.9999997168779355 300882.9489957978 56224.3641803423 0.0 300882.9489957978 56224.3641803423 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300896.0696012665 56215.82365299855 7.9999997168779355 300896.0696012665 56215.82365299855 0.0 300882.9489957978 56224.3641803423 0.0 300896.0696012665 56215.82365299855 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300882.9489957978 56224.3641803423 7.9999997168779355 300882.9489957978 56224.3641803423 0.0 300861.299093454 56191.1053912798 7.9999997168779355 300882.9489957978 56224.3641803423 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300861.299093454 56191.1053912798 7.9999997168779355 300882.9489957978 56224.3641803423 0.0 300861.299093454 56191.1053912798 0.0 300861.299093454 56191.1053912798 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300897.539327829 56167.5155475298 7.9999997168779355 300861.299093454 56191.1053912798 7.9999997168779355 300897.539327829 56167.5155475298 0.0 300897.539327829 56167.5155475298 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
<surfaceMember>
|
||||||
|
<Polygon>
|
||||||
|
<exterior>
|
||||||
|
<LinearRing>
|
||||||
|
<posList>300861.299093454 56191.1053912798 7.9999997168779355 300861.299093454 56191.1053912798 0.0 300897.539327829 56167.5155475298 0.0 300861.299093454 56191.1053912798 7.9999997168779355</posList>
|
||||||
|
</LinearRing>
|
||||||
|
</exterior>
|
||||||
|
</Polygon>
|
||||||
|
</surfaceMember>
|
||||||
|
</CompositeSurface>
|
||||||
|
</exterior>
|
||||||
|
</Solid>
|
||||||
|
</lod1Solid>
|
||||||
|
<yearOfConstruction>2045</yearOfConstruction>
|
||||||
|
<function>I1</function>
|
||||||
|
</Building>
|
||||||
|
</cityObjectMember>
|
||||||
|
</CityModel>
|
925
tests_data/gis/lod2_buildings.gml
Normal file
925
tests_data/gis/lod2_buildings.gml
Normal file
|
@ -0,0 +1,925 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<core:CityModel xmlns:brid="http://www.opengis.net/citygml/bridge/2.0" xmlns:tran="http://www.opengis.net/citygml/transportation/2.0" xmlns:frn="http://www.opengis.net/citygml/cityfurniture/2.0" xmlns:wtr="http://www.opengis.net/citygml/waterbody/2.0" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:veg="http://www.opengis.net/citygml/vegetation/2.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:tun="http://www.opengis.net/citygml/tunnel/2.0" xmlns:tex="http://www.opengis.net/citygml/texturedsurface/2.0" xmlns:gml="http://www.opengis.net/gml" xmlns:gen="http://www.opengis.net/citygml/generics/2.0" xmlns:dem="http://www.opengis.net/citygml/relief/2.0" xmlns:app="http://www.opengis.net/citygml/appearance/2.0" xmlns:luse="http://www.opengis.net/citygml/landuse/2.0" xmlns:xAL="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:smil20lang="http://www.w3.org/2001/SMIL20/Language" xmlns:pbase="http://www.opengis.net/citygml/profiles/base/2.0" xmlns:smil20="http://www.w3.org/2001/SMIL20/" xmlns:bldg="http://www.opengis.net/citygml/building/2.0" xmlns:core="http://www.opengis.net/citygml/2.0" xmlns:grp="http://www.opengis.net/citygml/cityobjectgroup/2.0">
|
||||||
|
<gml:boundedBy>
|
||||||
|
<gml:Envelope srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:lowerCorner>326011.03601000085 5526048.416990001 -1.6000000000058208</gml:lowerCorner>
|
||||||
|
<gml:upperCorner>329466.6600299999 5529018.72205 9.80000000000291</gml:upperCorner>
|
||||||
|
</gml:Envelope>
|
||||||
|
</gml:boundedBy>
|
||||||
|
<core:cityObjectMember>
|
||||||
|
<bldg:Building gml:id="BLD100086">
|
||||||
|
<gen:doubleAttribute name="gross_floor_area">
|
||||||
|
<gen:value>148</gen:value>
|
||||||
|
</gen:doubleAttribute>
|
||||||
|
<gen:stringAttribute name="gross_floor_raea_unit">
|
||||||
|
<gen:value>m2</gen:value>
|
||||||
|
</gen:stringAttribute>
|
||||||
|
<bldg:function>residential</bldg:function>
|
||||||
|
<bldg:yearOfConstruction>2019</bldg:yearOfConstruction>
|
||||||
|
<bldg:measuredHeight>4.4</bldg:measuredHeight>
|
||||||
|
<bldg:storeysAboveGround>1</bldg:storeysAboveGround>
|
||||||
|
<bldg:lod2Solid>
|
||||||
|
<gml:Solid srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:CompositeSurface>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_3e35c142-df2d-40b7-aae4-557db18ec7c6"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_a49ef266-ec5e-443b-9a64-c9c93747d01a"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_ef7f2ab9-ad15-4d43-8234-2794686aa04f"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_daee926d-4126-4cc4-90c3-163884289002"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_c39b3ab3-f724-4abb-b5a0-4cf7a111a081"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_9e3db7c2-b03e-424a-932e-ee236b69eca1"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_825bb74a-aa70-4b35-9562-ba89aa8cd378"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_f155bbcf-0f71-4e0e-9cf1-2c4cc7b52da6"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_a2c4f627-5b56-43ea-a53d-84e828250d49"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_5268aa45-e711-4e47-8ae2-9498b02758ef"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_829f53c2-1834-4f09-b180-db4cd81e773a"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_bdd4f42b-6aaf-4a30-b92f-351deedf79ad"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_5663501c-ae1a-4c42-a779-cc5c77cbe9ae"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_c489400f-a849-4be4-bbfd-729cf1020aa8"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_909d9316-ea8c-4458-9523-3632a0a67dca"/>
|
||||||
|
</gml:CompositeSurface>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Solid>
|
||||||
|
</bldg:lod2Solid>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_6919c082-ca72-4008-8dbc-bc947505cbd7">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_3e35c142-df2d-40b7-aae4-557db18ec7c6">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327915.32435999997 5527616.99446 3.8290600000036648 327918.65699999966 5527620.1219999995 2.8999999999941792 327912.1970099993 5527620.328 2.8999999999941792 327915.32435999997 5527616.99446 3.8290600000036648</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_3ae51274-1b29-4784-ad12-47e590b1aa3e">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_a49ef266-ec5e-443b-9a64-c9c93747d01a">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327920.9297700003 5527614.973139999 3.7896900000050664 327924.1219900008 5527617.968 2.8999999999941792 327920.45799 5527618.085000001 2.8999999999941792 327920.9297700003 5527614.973139999 3.7896900000050664</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_bf100ceb-a838-400f-8f25-60656fcf6b5b">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_ef7f2ab9-ad15-4d43-8234-2794686aa04f">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327918.65699999966 5527620.1219999995 0 327918.65699999966 5527620.1219999995 2.8999999999941792 327918.5720000006 5527617.433 2.8999999999941792 327918.5720000006 5527617.433 0 327918.65699999966 5527620.1219999995 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_01cc0d33-f732-4541-9041-b50628b20eea">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_daee926d-4126-4cc4-90c3-163884289002">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327912.1970099993 5527620.328 0 327912.1970099993 5527620.328 2.8999999999941792 327918.65699999966 5527620.1219999995 2.8999999999941792 327918.65699999966 5527620.1219999995 0 327912.1970099993 5527620.328 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_86c2f9ea-533e-4de5-82a4-899520cca64b">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_c39b3ab3-f724-4abb-b5a0-4cf7a111a081">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327911.7700100001 5527606.959000001 0 327911.7700100001 5527606.959000001 2.8999999999941792 327912.1970099993 5527620.328 2.8999999999941792 327912.1970099993 5527620.328 0 327911.7700100001 5527606.959000001 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_6d4a4e78-fcd5-44c3-99f7-298722288831">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_9e3db7c2-b03e-424a-932e-ee236b69eca1">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327923.7589999996 5527606.57701 0 327923.7589999996 5527606.57701 2.8999999999941792 327911.7700100001 5527606.959000001 2.8999999999941792 327911.7700100001 5527606.959000001 0 327923.7589999996 5527606.57701 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_3526e729-c17c-46c2-b632-1347baf4b799">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_825bb74a-aa70-4b35-9562-ba89aa8cd378">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327924.1219900008 5527617.968 0 327924.1219900008 5527617.968 2.8999999999941792 327923.7589999996 5527606.57701 2.8999999999941792 327923.7589999996 5527606.57701 0 327924.1219900008 5527617.968 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_29cd539d-855f-4067-8dbd-30a7fbb9d8d5">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_f155bbcf-0f71-4e0e-9cf1-2c4cc7b52da6">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327920.45799 5527618.085000001 0 327920.45799 5527618.085000001 2.8999999999941792 327924.1219900008 5527617.968 2.8999999999941792 327924.1219900008 5527617.968 0 327920.45799 5527618.085000001 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_4cdae8c2-e795-4553-b548-64aa5d957203">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_a2c4f627-5b56-43ea-a53d-84e828250d49">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327918.5720000006 5527617.433 0 327918.5720000006 5527617.433 2.8999999999941792 327920.45799 5527618.085000001 2.8999999999941792 327920.45799 5527618.085000001 0 327918.5720000006 5527617.433 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:GroundSurface gml:id="UUID_fa9ef0bc-bf10-477b-9c0e-27dc04667679">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_5268aa45-e711-4e47-8ae2-9498b02758ef">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327918.5720000006 5527617.433 0 327920.45799 5527618.085000001 0 327924.1219900008 5527617.968 0 327923.7589999996 5527606.57701 0 327911.7700100001 5527606.959000001 0 327912.1970099993 5527620.328 0 327918.65699999966 5527620.1219999995 0 327918.5720000006 5527617.433 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:GroundSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_c60b7d6d-65fe-4a40-bb4c-861a618d9b8f">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_829f53c2-1834-4f09-b180-db4cd81e773a">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327918.65699999966 5527620.1219999995 2.8999999999941792 327915.32435999997 5527616.99446 3.8290600000036648 327915.19247999974 5527612.844070001 3.8292599999986123 327918.5720000006 5527617.433 2.8999999999941792 327918.65699999966 5527620.1219999995 2.8999999999941792</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_952b965f-e0d1-4bfd-9641-1fb1a3ed0163">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_bdd4f42b-6aaf-4a30-b92f-351deedf79ad">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327911.7700100001 5527606.959000001 2.8999999999941792 327916.7891399991 5527611.6678 4.298760000005132 327915.19247999974 5527612.844070001 3.8292599999986123 327915.32435999997 5527616.99446 3.8290600000036648 327912.1970099993 5527620.328 2.8999999999941792 327911.7700100001 5527606.959000001 2.8999999999941792</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_733946c8-f30b-49ba-a4ee-21fdda0e2864">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_5663501c-ae1a-4c42-a779-cc5c77cbe9ae">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327923.7589999996 5527606.57701 2.8999999999941792 327918.70940000005 5527611.959000001 4.399999999994179 327916.7891399991 5527611.6678 4.298760000005132 327911.7700100001 5527606.959000001 2.8999999999941792 327923.7589999996 5527606.57701 2.8999999999941792</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_9d86a537-1cb9-4aec-87cd-5bc7cb36152d">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_c489400f-a849-4be4-bbfd-729cf1020aa8">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327924.1219900008 5527617.968 2.8999999999941792 327920.9297700003 5527614.973139999 3.7896900000050664 327918.70940000005 5527611.959000001 4.399999999994179 327923.7589999996 5527606.57701 2.8999999999941792 327924.1219900008 5527617.968 2.8999999999941792</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_6d2fb90c-5d12-4bc3-af9f-214f8a280021">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_909d9316-ea8c-4458-9523-3632a0a67dca">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327918.5720000006 5527617.433 2.8999999999941792 327915.19247999974 5527612.844070001 3.8292599999986123 327916.7891399991 5527611.6678 4.298760000005132 327918.70940000005 5527611.959000001 4.399999999994179 327920.9297700003 5527614.973139999 3.7896900000050664 327920.45799 5527618.085000001 2.8999999999941792 327918.5720000006 5527617.433 2.8999999999941792</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
</bldg:Building>
|
||||||
|
</core:cityObjectMember>
|
||||||
|
<core:cityObjectMember>
|
||||||
|
<bldg:Building gml:id="BLD131702">
|
||||||
|
<gen:doubleAttribute name="gross_floor_area">
|
||||||
|
<gen:value>184</gen:value>
|
||||||
|
</gen:doubleAttribute>
|
||||||
|
<gen:stringAttribute name="gross_floor_raea_unit">
|
||||||
|
<gen:value>m2</gen:value>
|
||||||
|
</gen:stringAttribute>
|
||||||
|
<bldg:function>residential</bldg:function>
|
||||||
|
<bldg:yearOfConstruction>1967</bldg:yearOfConstruction>
|
||||||
|
<bldg:measuredHeight>4.3</bldg:measuredHeight>
|
||||||
|
<bldg:storeysAboveGround>1</bldg:storeysAboveGround>
|
||||||
|
<bldg:lod2Solid>
|
||||||
|
<gml:Solid srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:CompositeSurface>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_e5c39971-5698-4d10-ae06-e51dc3a377ce"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_293983c1-b135-4a2c-905b-0278c410e97d"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_1c09ccd7-2575-4938-a2f1-ccb6b24d3b03"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_585484c4-65b0-423a-a409-c75a07954c3f"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_4d946189-9405-4e48-8fb6-db97066f9833"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_f2d8d3d2-3573-405c-8e36-02a725386d3e"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_2e9d0c95-f353-469a-aebb-3fa678c9c5bd"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_3730f689-06de-46fb-9d2e-02b86699ee6a"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_5774dcca-47c4-4dd6-ade1-10cdaf4967ab"/>
|
||||||
|
</gml:CompositeSurface>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Solid>
|
||||||
|
</bldg:lod2Solid>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_adb175e6-f054-4550-9b63-727a170cf7b5">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_e5c39971-5698-4d10-ae06-e51dc3a377ce">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327889.6721599996 5528260.4894900005 4.30000000000291 327893.94501000084 5528255.66602 2.8000000000029104 327894.2890000008 5528264.94702 2.8000000000029104 327889.6721599996 5528260.4894900005 4.30000000000291</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_1ba722de-c8db-47df-b9c6-77618b5afaa4">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_293983c1-b135-4a2c-905b-0278c410e97d">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327881.71928999946 5528260.815470001 4.1848900000040885 327877.7609899994 5528264.91498 2.8000000000029104 327877.47000000067 5528257.051030001 2.8000000000029104 327881.71928999946 5528260.815470001 4.1848900000040885</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_84b8a1c1-5f10-42e9-923b-d4e78499857f">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_1c09ccd7-2575-4938-a2f1-ccb6b24d3b03">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327894.2890000008 5528264.94702 0 327894.2890000008 5528264.94702 2.8000000000029104 327893.94501000084 5528255.66602 2.8000000000029104 327893.94501000084 5528255.66602 0 327894.2890000008 5528264.94702 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_fd4d0222-cb62-4ffd-93b1-ad02891d0cc2">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_585484c4-65b0-423a-a409-c75a07954c3f">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327877.7609899994 5528264.91498 0 327877.7609899994 5528264.91498 2.8000000000029104 327894.2890000008 5528264.94702 2.8000000000029104 327894.2890000008 5528264.94702 0 327877.7609899994 5528264.91498 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_5ce0d1e5-da65-4d02-8f90-287d72e45431">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_4d946189-9405-4e48-8fb6-db97066f9833">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327877.47000000067 5528257.051030001 0 327877.47000000067 5528257.051030001 2.8000000000029104 327877.7609899994 5528264.91498 2.8000000000029104 327877.7609899994 5528264.91498 0 327877.47000000067 5528257.051030001 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_51112e11-39d4-413d-a2b9-4ac2dc5d1f11">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_f2d8d3d2-3573-405c-8e36-02a725386d3e">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327893.94501000084 5528255.66602 0 327893.94501000084 5528255.66602 2.8000000000029104 327877.47000000067 5528257.051030001 2.8000000000029104 327877.47000000067 5528257.051030001 0 327893.94501000084 5528255.66602 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:GroundSurface gml:id="UUID_cf5a51de-113d-497a-a47b-3152342855bd">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_2e9d0c95-f353-469a-aebb-3fa678c9c5bd">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327893.94501000084 5528255.66602 0 327877.47000000067 5528257.051030001 0 327877.7609899994 5528264.91498 0 327894.2890000008 5528264.94702 0 327893.94501000084 5528255.66602 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:GroundSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_e89e9479-6848-41a8-b732-e1ed79ad549f">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_3730f689-06de-46fb-9d2e-02b86699ee6a">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327877.7609899994 5528264.91498 2.8000000000029104 327881.71928999946 5528260.815470001 4.1848900000040885 327889.6721599996 5528260.4894900005 4.30000000000291 327894.2890000008 5528264.94702 2.8000000000029104 327877.7609899994 5528264.91498 2.8000000000029104</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_9c73fe7d-eef7-4c5d-b8b8-7e7ecdd167a2">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_5774dcca-47c4-4dd6-ade1-10cdaf4967ab">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327893.94501000084 5528255.66602 2.8000000000029104 327889.6721599996 5528260.4894900005 4.30000000000291 327881.71928999946 5528260.815470001 4.1848900000040885 327877.47000000067 5528257.051030001 2.8000000000029104 327893.94501000084 5528255.66602 2.8000000000029104</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
</bldg:Building>
|
||||||
|
</core:cityObjectMember>
|
||||||
|
<core:cityObjectMember>
|
||||||
|
<bldg:Building gml:id="BLD132148">
|
||||||
|
<gen:doubleAttribute name="gross_floor_area">
|
||||||
|
<gen:value>169</gen:value>
|
||||||
|
</gen:doubleAttribute>
|
||||||
|
<gen:stringAttribute name="gross_floor_raea_unit">
|
||||||
|
<gen:value>m2</gen:value>
|
||||||
|
</gen:stringAttribute>
|
||||||
|
<bldg:function>residential</bldg:function>
|
||||||
|
<bldg:yearOfConstruction>1968</bldg:yearOfConstruction>
|
||||||
|
<bldg:measuredHeight>4.4</bldg:measuredHeight>
|
||||||
|
<bldg:storeysAboveGround>1</bldg:storeysAboveGround>
|
||||||
|
<bldg:lod2Solid>
|
||||||
|
<gml:Solid srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:CompositeSurface>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_6e67a380-559d-4a4b-96bc-896b464e3ce4"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_62387503-740a-4497-a42e-1135659a9353"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_837aaa06-d81e-413b-bd52-2ccd4cd69462"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_8eef1d1e-67e3-407a-a8d4-83e150e3c313"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_2f238b7e-1340-484f-8391-befd1f7dd3ca"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_f0117b8a-ba25-4aef-9a30-99b4a5fd0233"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_476739ee-39a9-4714-a554-726b32cd996e"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_4266c758-c0aa-48c5-9cc2-b45e0e679cf5"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_b7c6846c-a548-4216-8ecb-67a82ee44f11"/>
|
||||||
|
</gml:CompositeSurface>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Solid>
|
||||||
|
</bldg:lod2Solid>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_9a612561-3c66-4183-8294-2a19a45de3af">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_6e67a380-559d-4a4b-96bc-896b464e3ce4">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327742.01761000045 5528353.102499999 4.399999999994179 327746.7440000009 5528357.50702 2.8999999999941792 327737.6129999999 5528357.828980001 2.8999999999941792 327742.01761000045 5528353.102499999 4.399999999994179</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_02786aa1-b451-42e3-82f3-bfd01e8ae368">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_62387503-740a-4497-a42e-1135659a9353">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327741.7813799996 5528346.39899 4.399999999994179 327737.0549999997 5528341.99402 2.8999999999941792 327746.1860000007 5528341.672970001 2.8999999999941792 327741.7813799996 5528346.39899 4.399999999994179</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_d3c34c74-cc20-4c9b-9718-672774a795e2">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_837aaa06-d81e-413b-bd52-2ccd4cd69462">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327746.7440000009 5528357.50702 0 327746.7440000009 5528357.50702 2.8999999999941792 327746.1860000007 5528341.672970001 2.8999999999941792 327746.1860000007 5528341.672970001 0 327746.7440000009 5528357.50702 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_42a94b4f-2dea-4ad7-8d5e-59337dd96d5b">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_8eef1d1e-67e3-407a-a8d4-83e150e3c313">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327737.6129999999 5528357.828980001 0 327737.6129999999 5528357.828980001 2.8999999999941792 327746.7440000009 5528357.50702 2.8999999999941792 327746.7440000009 5528357.50702 0 327737.6129999999 5528357.828980001 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_3e3c8647-7a58-4ad4-be23-5071133333f3">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_2f238b7e-1340-484f-8391-befd1f7dd3ca">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327737.0549999997 5528341.99402 0 327737.0549999997 5528341.99402 2.8999999999941792 327737.6129999999 5528357.828980001 2.8999999999941792 327737.6129999999 5528357.828980001 0 327737.0549999997 5528341.99402 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_4facb252-1e3b-428e-8087-be1ea5633236">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_f0117b8a-ba25-4aef-9a30-99b4a5fd0233">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327746.1860000007 5528341.672970001 0 327746.1860000007 5528341.672970001 2.8999999999941792 327737.0549999997 5528341.99402 2.8999999999941792 327737.0549999997 5528341.99402 0 327746.1860000007 5528341.672970001 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:GroundSurface gml:id="UUID_e9569b7d-65f7-4c84-aa57-8505391bb2f3">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_476739ee-39a9-4714-a554-726b32cd996e">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327746.1860000007 5528341.672970001 0 327737.0549999997 5528341.99402 0 327737.6129999999 5528357.828980001 0 327746.7440000009 5528357.50702 0 327746.1860000007 5528341.672970001 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:GroundSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_fff45dbc-592b-4e9c-8394-8c1a9b01dc19">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_4266c758-c0aa-48c5-9cc2-b45e0e679cf5">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327746.7440000009 5528357.50702 2.8999999999941792 327742.01761000045 5528353.102499999 4.399999999994179 327741.7813799996 5528346.39899 4.399999999994179 327746.1860000007 5528341.672970001 2.8999999999941792 327746.7440000009 5528357.50702 2.8999999999941792</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_a9f91fe6-060b-4f3d-bf3a-49e4ede6831a">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_b7c6846c-a548-4216-8ecb-67a82ee44f11">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327737.0549999997 5528341.99402 2.8999999999941792 327741.7813799996 5528346.39899 4.399999999994179 327742.01761000045 5528353.102499999 4.399999999994179 327737.6129999999 5528357.828980001 2.8999999999941792 327737.0549999997 5528341.99402 2.8999999999941792</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
</bldg:Building>
|
||||||
|
</core:cityObjectMember>
|
||||||
|
<core:cityObjectMember>
|
||||||
|
<bldg:Building gml:id="BLD126221">
|
||||||
|
<gen:doubleAttribute name="gross_floor_area">
|
||||||
|
<gen:value>178</gen:value>
|
||||||
|
</gen:doubleAttribute>
|
||||||
|
<gen:stringAttribute name="gross_floor_raea_unit">
|
||||||
|
<gen:value>m2</gen:value>
|
||||||
|
</gen:stringAttribute>
|
||||||
|
<bldg:function>residential</bldg:function>
|
||||||
|
<bldg:yearOfConstruction>1974</bldg:yearOfConstruction>
|
||||||
|
<bldg:measuredHeight>5.3</bldg:measuredHeight>
|
||||||
|
<bldg:storeysAboveGround>1</bldg:storeysAboveGround>
|
||||||
|
<bldg:lod2Solid>
|
||||||
|
<gml:Solid srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:CompositeSurface>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_83f7c8de-6592-4051-87e8-e53cf1bff666"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_085c374a-d224-4473-b115-29b1eb1426ee"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_296e7780-2f1b-4569-bc9b-9bcd1f2d0ada"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_a5a956e0-0217-4aff-92c7-e3c7732b6c03"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_64d7e393-dda1-45a3-8f42-82b77deb466a"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_417c5d97-3884-4abd-9b86-05db29387fd7"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_d6fd56dc-fc72-46b8-847f-b25266d3c864"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_00a5a748-92cc-4dac-9b1b-f3c9e8a252b4"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_e03b384d-9342-4c5e-8987-09ce6fe08d92"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_50559cac-1742-4b7e-ba64-3dae96cee280"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_5480fee5-ca6d-438c-85a7-242d574cf2af"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_6fd39224-fd54-43b7-b36e-3c348e3a1bb7"/>
|
||||||
|
<gml:surfaceMember xlink:href="#UUID_e0064db9-80cc-4b97-96ce-898b46ee6f75"/>
|
||||||
|
</gml:CompositeSurface>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Solid>
|
||||||
|
</bldg:lod2Solid>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_2de9444e-9753-4eea-a548-18685adb6744">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_83f7c8de-6592-4051-87e8-e53cf1bff666">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327339.9300800003 5527571.58928 5.30000000000291 327337.7550000008 5527578.159 3.8000000000029104 327333.58898999915 5527569.294 3.8000000000029104 327339.9300800003 5527571.58928 5.30000000000291</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_618b47c2-c386-4fdd-92fe-64b970ec686c">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_085c374a-d224-4473-b115-29b1eb1426ee">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327346.9847800005 5527563.90927 4.722859999994398 327343.0859999992 5527562.504009999 3.8000000000029104 327348.3900099993 5527560.0110100005 3.8000000000029104 327346.9847800005 5527563.90927 4.722859999994398</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_c9b31fae-7942-4088-aab0-25eb7a8de944">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_296e7780-2f1b-4569-bc9b-9bcd1f2d0ada">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327333.58898999915 5527569.294 0 327333.58898999915 5527569.294 3.8000000000029104 327337.7550000008 5527578.159 3.8000000000029104 327337.7550000008 5527578.159 0 327333.58898999915 5527569.294 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_19cb7070-a024-4c28-933a-0705b5f902c0">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_a5a956e0-0217-4aff-92c7-e3c7732b6c03">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327343.99399000034 5527564.435009999 0 327343.99399000034 5527564.435009999 3.8000000000029104 327333.58898999915 5527569.294 3.8000000000029104 327333.58898999915 5527569.294 0 327343.99399000034 5527564.435009999 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_0ea9995b-bc13-4072-a8b9-9eb731c873a5">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_64d7e393-dda1-45a3-8f42-82b77deb466a">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327343.0859999992 5527562.504009999 0 327343.0859999992 5527562.504009999 3.8000000000029104 327343.99399000034 5527564.435009999 3.8000000000029104 327343.99399000034 5527564.435009999 0 327343.0859999992 5527562.504009999 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_caa8ef09-8ff4-4f00-a226-46bb4c60ef6a">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_417c5d97-3884-4abd-9b86-05db29387fd7">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327348.3900099993 5527560.0110100005 0 327348.3900099993 5527560.0110100005 3.8000000000029104 327343.0859999992 5527562.504009999 3.8000000000029104 327343.0859999992 5527562.504009999 0 327348.3900099993 5527560.0110100005 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_752fc0b9-bf62-4d2a-84dd-2d77a8f3814b">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_d6fd56dc-fc72-46b8-847f-b25266d3c864">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327353.06399000064 5527569.953 0 327353.06399000064 5527569.953 3.8000000000029104 327348.3900099993 5527560.0110100005 3.8000000000029104 327348.3900099993 5527560.0110100005 0 327353.06399000064 5527569.953 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:WallSurface gml:id="UUID_a6be4294-1346-495a-ade5-957fbbb665b0">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_00a5a748-92cc-4dac-9b1b-f3c9e8a252b4">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327337.7550000008 5527578.159 0 327337.7550000008 5527578.159 3.8000000000029104 327353.06399000064 5527569.953 3.8000000000029104 327353.06399000064 5527569.953 0 327337.7550000008 5527578.159 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:WallSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:GroundSurface gml:id="UUID_90d0900f-e5d3-40c6-97cd-c67095888e89">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_e03b384d-9342-4c5e-8987-09ce6fe08d92">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327337.7550000008 5527578.159 0 327353.06399000064 5527569.953 0 327348.3900099993 5527560.0110100005 0 327343.0859999992 5527562.504009999 0 327343.99399000034 5527564.435009999 0 327333.58898999915 5527569.294 0 327337.7550000008 5527578.159 0</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:GroundSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_4d1da16c-9b9a-419a-8415-9c5dfb3afb4d">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_50559cac-1742-4b7e-ba64-3dae96cee280">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327343.99399000034 5527564.435009999 3.8000000000029104 327347.8957700003 5527565.84684 4.722829999998794 327347.1216000002 5527567.986129999 5.230139999999665 327339.9300800003 5527571.58928 5.30000000000291 327333.58898999915 5527569.294 3.8000000000029104 327343.99399000034 5527564.435009999 3.8000000000029104</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_66ba0f9e-bc5f-4df4-9457-e9ece305d335">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_5480fee5-ca6d-438c-85a7-242d574cf2af">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327343.0859999992 5527562.504009999 3.8000000000029104 327346.9847800005 5527563.90927 4.722859999994398 327347.8957700003 5527565.84684 4.722829999998794 327343.99399000034 5527564.435009999 3.8000000000029104 327343.0859999992 5527562.504009999 3.8000000000029104</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_15bfa943-fa1b-473c-ae13-b974382c1999">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_6fd39224-fd54-43b7-b36e-3c348e3a1bb7">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327353.06399000064 5527569.953 3.8000000000029104 327347.1216000002 5527567.986129999 5.230139999999665 327347.8957700003 5527565.84684 4.722829999998794 327346.9847800005 5527563.90927 4.722859999994398 327348.3900099993 5527560.0110100005 3.8000000000029104 327353.06399000064 5527569.953 3.8000000000029104</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
<bldg:boundedBy>
|
||||||
|
<bldg:RoofSurface gml:id="UUID_171e288a-58e9-497d-a2c7-8b0488bb8f9c">
|
||||||
|
<bldg:lod2MultiSurface>
|
||||||
|
<gml:MultiSurface srsName="EPSG:26911" srsDimension="3">
|
||||||
|
<gml:surfaceMember>
|
||||||
|
<gml:Polygon gml:id="UUID_e0064db9-80cc-4b97-96ce-898b46ee6f75">
|
||||||
|
<gml:exterior>
|
||||||
|
<gml:LinearRing>
|
||||||
|
<gml:posList>327337.7550000008 5527578.159 3.8000000000029104 327339.9300800003 5527571.58928 5.30000000000291 327347.1216000002 5527567.986129999 5.230139999999665 327353.06399000064 5527569.953 3.8000000000029104 327337.7550000008 5527578.159 3.8000000000029104</gml:posList>
|
||||||
|
</gml:LinearRing>
|
||||||
|
</gml:exterior>
|
||||||
|
</gml:Polygon>
|
||||||
|
</gml:surfaceMember>
|
||||||
|
</gml:MultiSurface>
|
||||||
|
</bldg:lod2MultiSurface>
|
||||||
|
</bldg:RoofSurface>
|
||||||
|
</bldg:boundedBy>
|
||||||
|
</bldg:Building>
|
||||||
|
</core:cityObjectMember>
|
||||||
|
</core:CityModel>
|
8764
tests_data/weather/inseldb_Summerland.cli
Normal file
8764
tests_data/weather/inseldb_Summerland.cli
Normal file
File diff suppressed because it is too large
Load Diff
8760
tests_data/weather/inseldb_Summerland.dat
Normal file
8760
tests_data/weather/inseldb_Summerland.dat
Normal file
File diff suppressed because it is too large
Load Diff
8764
tests_data/weather/inseldb_new_york_city.cli
Normal file
8764
tests_data/weather/inseldb_new_york_city.cli
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user