diff --git a/exports/formats/energy_ade.py b/exports/formats/energy_ade.py index d204367d..9a92b8d9 100644 --- a/exports/formats/energy_ade.py +++ b/exports/formats/energy_ade.py @@ -85,7 +85,7 @@ class EnergyAde: buildings.append(building_dic) energy_ade['core:CityModel']['core:cityObjectMember'] = buildings - print(energy_ade) + file_name = self._city.name + '_ade.gml' file_path = Path(self._path / file_name).resolve() with open(file_path, 'w' ) as file: @@ -93,6 +93,7 @@ class EnergyAde: @staticmethod def _measures(building, building_dic): + #todo: this method is only for year and insel need to be generalized measures = [] measure = EnergyAde._measure(building.heating, 'year', 'Energy demand heating', 'INSEL') if measure is not None: @@ -172,6 +173,7 @@ class EnergyAde: '#text': f'{building.max_height}' } building_dic['bldg:Building']['bldg:storeysAboveGround'] = building.storeys_above_ground + if building.lod == 1: building_dic = self._lod1(building, building_dic, city) elif building.lod == 2: @@ -202,7 +204,6 @@ class EnergyAde: surface_type = 'bldg:GroundSurface' else: surface_type = 'bldg:RoofSurface' - surface_dic = { surface_type: { '@gml:id': f'GML_{uuid.uuid4()}', @@ -229,9 +230,9 @@ class EnergyAde: '@gml:id': f'PolyId{surface.name}_0', 'gml:posList': { '@srsDimension': '3', - '@count': len(surface.points) + 1, + '@count': len(surface.solid_polygon.points) + 1, '#text': f'{" ".join(map(str, surface.solid_polygon.points_list))} ' - f'{" ".join(map(str, surface.points[0]))}' + f'{" ".join(map(str, surface.solid_polygon.points[0]))}' } } } @@ -261,6 +262,7 @@ class EnergyAde: def _thermal_zones(self, building, city): thermal_zones = [] for index, thermal_zone in enumerate(building.thermal_zones): + print('debug me2') usage_zones = [] for usage_zone in thermal_zone.usage_zones: usage_zones.append({'@xlink:href': f'#GML_{usage_zone.id}'}) diff --git a/imports/physics_factory.py b/imports/physics_factory.py index 697dd2de..f98f8071 100644 --- a/imports/physics_factory.py +++ b/imports/physics_factory.py @@ -17,7 +17,6 @@ class PhysicsFactory: self._handler = '_' + handler.lower().replace(' ', '_') self._city = city self._base_path = base_path - self.factory() def _us_new_york(self): UsNewYorkCityPhysicsParameters(self._city, self._base_path).enrich_buildings() @@ -34,7 +33,7 @@ class PhysicsFactory: def _es(self): raise NotImplementedError - def factory(self): + def enrich(self): """ Enrich the city with the physics information :return: None diff --git a/imports/schedules_factory.py b/imports/schedules_factory.py index 61634a00..8bb0387c 100644 --- a/imports/schedules_factory.py +++ b/imports/schedules_factory.py @@ -16,12 +16,11 @@ class SchedulesFactory: self._handler = '_' + handler.lower().replace(' ', '_') self._city = city self._base_path = base_path - self.factory() def _comnet(self): ComnetSchedules(self._city, self._base_path) - def factory(self): + def enrich(self): """ Enrich the city with the schedules information :return: None diff --git a/imports/usage_factory.py b/imports/usage_factory.py index 5b0c0434..1811188a 100644 --- a/imports/usage_factory.py +++ b/imports/usage_factory.py @@ -17,7 +17,6 @@ class UsageFactory: self._handler = '_' + handler.lower().replace(' ', '_') self._city = city self._base_path = base_path - self.factory() def _us_new_york(self): UsNewYorkCityUsageParameters(self._city, self._base_path).enrich_buildings() @@ -31,7 +30,7 @@ class UsageFactory: def _es(self): raise Exception('Not implemented') - def factory(self): + def enrich(self): """ Enrich the city with the usage information :return: None diff --git a/imports/weather_factory.py b/imports/weather_factory.py index 00c9f7f8..9dceff73 100644 --- a/imports/weather_factory.py +++ b/imports/weather_factory.py @@ -18,7 +18,6 @@ class WeatherFactory: self._city = city self._base_path = base_path self._city_name = city_name - self.factory() def _dat(self): DatWeatherParameters(self._city, self._base_path, self._city_name) @@ -30,7 +29,7 @@ class WeatherFactory: name = 'ISO_52016_1_BESTEST_ClimData_2016.08.24' XlsWeatherParameters(self._city, self._base_path, name) - def factory(self): + def enrich(self): """ Enrich the city with the usage information :return: None diff --git a/tests/test_exports.py b/tests/test_exports.py index 4d3dceb8..c1285d8e 100644 --- a/tests/test_exports.py +++ b/tests/test_exports.py @@ -3,17 +3,19 @@ TestExports test and validate the city export formats SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2020 Project Author Guille Gutierrez guillermo.gutierrezmorote@concordia.ca """ - from pathlib import Path from unittest import TestCase +import pandas as pd from imports.geometry_factory import GeometryFactory +from imports.physics_factory import PhysicsFactory +from imports.schedules_factory import SchedulesFactory +from imports.usage_factory import UsageFactory from exports.exports_factory import ExportsFactory -from city_model_structure.city import City class TestExports(TestCase): """ - TestGeometryFactory TestCase 1 + TestExports class contains the unittest for export functionality """ def setUp(self) -> None: """ @@ -26,8 +28,16 @@ class TestExports(TestCase): def _get_city(self): if self._city_gml is None: - file_path = (self._example_path / 'one_building_in_kelowna.pickle').resolve() - self._city_gml = City.load(file_path) + file_path = (self._example_path / 'one_building_in_kelowna.gml').resolve() + self._city_gml = GeometryFactory('citygml', file_path).city + PhysicsFactory('ca', self._city_gml).enrich() + UsageFactory('ca', self._city_gml).enrich() + SchedulesFactory('comnet', self._city_gml).enrich() + for building in self._city_gml.buildings: + building.heating['month'] = pd.DataFrame({'INSEL': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}) + building.cooling['month'] = pd.DataFrame({'INSEL': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}) + building.heating['year'] = pd.DataFrame({'INSEL': [0.0]}) + building.cooling['year'] = pd.DataFrame({'INSEL': [0.0]}) return self._city_gml def _export(self, export_type):