Skip to content
Snippets Groups Projects
Commit 24d87404 authored by pmag's avatar pmag
Browse files

Merge branch 'master' into 'peaktotal'

# Conflicts:
#   src/topupopt/data/buildings/dk/bbr.py
#   src/topupopt/data/buildings/dk/heat.py
#   src/topupopt/data/gis/utils.py
parents 8ae04c1d a376a8ed
No related branches found
No related tags found
1 merge request!5Revised ResourcePrice class and methods. Added tests for problem...
This commit is part of merge request !5. Comments created here will be created in the context of that merge request.
# imports
# standard
import math
import random
from numbers import Real
from statistics import mean
import geopandas as gpd
# *****************************************************************************
# *****************************************************************************
# local, internal
from src.topupopt.data.gis.utils import read_gdf_file
from src.topupopt.data.buildings.dk import heat
from src.topupopt.data.buildings.dk import bbr
# *****************************************************************************
# *****************************************************************************
class TestDataBuildingsDK:
# *************************************************************************
# *************************************************************************
def test_demand_dict(self):
# heat_demand_dict_by_building_entrance
osm_data_filename = 'tests/data/gdf_osm.gpkg'
building_data_filename = 'tests/data/gdf_buildings.gpkg'
bdg_gdf_container_columns = ('ejerskaber','koordinater','bygningspunkt')
number_time_intervals = 12
min_to_max_ratio = 0.1
intraperiod_time_interval_duration = [
30*24*3600
for i in range(number_time_intervals)
]
annual_heat_demand_scenario = 1000
total_area = 1000
air_temperature_scenario = [10 for i in range(number_time_intervals)]
gdf_osm = gpd.read_file(osm_data_filename)
gdf_osm.set_index(['element_type', 'osmid'], drop=True, inplace=True)
gdf_buildings = read_gdf_file(
filename=building_data_filename,
packed_columns=bdg_gdf_container_columns,
index='index'
)
# order by state
heat_demand_dict = heat.heat_demand_dict_by_building_entrance(
gdf_osm=gdf_osm,
gdf_buildings=gdf_buildings,
number_intervals=number_time_intervals,
time_interval_durations=intraperiod_time_interval_duration,
bdg_min_to_max_ratio={
index: min_to_max_ratio for index in gdf_buildings.index
},
bdg_specific_demand={
index: annual_heat_demand_scenario/total_area
for index in gdf_buildings.index
},
bdg_demand_phase_shift=None,
avg_state=air_temperature_scenario,
state_correlates_with_output=False
)
assert type(heat_demand_dict) == dict
assert len(heat_demand_dict) == len(gdf_osm)
# no state preference, use phase shift
heat_demand_dict2 = heat.heat_demand_dict_by_building_entrance(
gdf_osm=gdf_osm,
gdf_buildings=gdf_buildings,
number_intervals=number_time_intervals,
time_interval_durations=intraperiod_time_interval_duration,
bdg_min_to_max_ratio={
index: min_to_max_ratio for index in gdf_buildings.index
},
bdg_specific_demand={
index: annual_heat_demand_scenario/total_area
for index in gdf_buildings.index
},
bdg_demand_phase_shift={
index: 2*math.pi*random.random() for index in gdf_buildings.index
},
avg_state=None,
state_correlates_with_output=False
)
assert type(heat_demand_dict2) == dict
assert len(heat_demand_dict2) == len(gdf_osm)
# total heating area
heating_area = heat.total_heating_area(gdf_osm, gdf_buildings)
assert isinstance(heating_area, Real)
assert math.isclose(heating_area, 100882, abs_tol=1e-3)
# *************************************************************************
# *************************************************************************
# def test_bbr(self):
# # test get_bbr_building_data_geodataframe
# osm_data_filename = 'tests/data/gdf_osm.gpkg'
# gdf_osm = gpd.read_file(osm_data_filename)
# gdf_osm.set_index(['element_type', 'osmid'], drop=True, inplace=True)
# error_raised = False
# try:
# gdf_buildings, drop_list = bbr.get_bbr_building_data_geodataframe(
# list(gdf_osm[heat.label_osm_entrance_id]),
# None,
# None,
# None)
# except UnboundLocalError:
# error_raised = True
# assert error_raised
# # drop the rows with no data
# gdf_osm = gdf_osm.drop(
# index=[
# (gdf_osm[
# gdf_osm[
# heat.label_osm_entrance_id
# ]==bdg_entrance_id].index)[0]
# for bdg_entrance_id in drop_list
# ]
# )
# *****************************************************************************
# *****************************************************************************
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment