forked from s_ranjbar/city_retrofit
modified demo_occupancy_parameters.py
This commit is contained in:
parent
e8840de5a6
commit
b2dcec9845
|
@ -8,7 +8,8 @@ from typing import Union
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pyny3d.geoms as pn
|
import pyny3d.geoms as pn
|
||||||
|
import pandas as pd
|
||||||
|
import helpers.constants as cte
|
||||||
|
|
||||||
from helpers.geometry_helper import GeometryHelper
|
from helpers.geometry_helper import GeometryHelper
|
||||||
|
|
||||||
|
@ -43,6 +44,7 @@ class Surface:
|
||||||
self._min_y = None
|
self._min_y = None
|
||||||
self._min_z = None
|
self._min_z = None
|
||||||
self._shared_surfaces = []
|
self._shared_surfaces = []
|
||||||
|
self._global_irradiance = pd.DataFrame()
|
||||||
self._global_irradiance_hour = np.zeros(8760)
|
self._global_irradiance_hour = np.zeros(8760)
|
||||||
self._global_irradiance_month = np.zeros(12)
|
self._global_irradiance_month = np.zeros(12)
|
||||||
self._ground_coordinates = (self.min_x, self.min_y, self.min_z)
|
self._ground_coordinates = (self.min_x, self.min_y, self.min_z)
|
||||||
|
@ -351,6 +353,20 @@ class Surface:
|
||||||
"""
|
"""
|
||||||
self._global_irradiance_month = value
|
self._global_irradiance_month = value
|
||||||
|
|
||||||
|
def global_irradiance(self, time_scale):
|
||||||
|
"""
|
||||||
|
Get surface global irradiance in Wh/m2 in a defined time_scale
|
||||||
|
:param time_scale: string.
|
||||||
|
:return: DataFrame(float)
|
||||||
|
"""
|
||||||
|
if time_scale == cte.time_scale['hour']:
|
||||||
|
self._global_irradiance = self.global_irradiance_hour
|
||||||
|
elif time_scale == cte.time_scale['month']:
|
||||||
|
self._global_irradiance = self.global_irradiance_month
|
||||||
|
else:
|
||||||
|
raise NotImplementedError
|
||||||
|
return self._global_irradiance
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def shapely(self) -> Union[None, pn.Polygon]:
|
def shapely(self) -> Union[None, pn.Polygon]:
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -164,7 +164,7 @@ class UsageZone:
|
||||||
self._usage = value
|
self._usage = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def occupancy(self) -> List[Occupancy]:
|
def occupancy(self):
|
||||||
"""
|
"""
|
||||||
Get occupancy data
|
Get occupancy data
|
||||||
:return: [Occupancy]
|
:return: [Occupancy]
|
||||||
|
|
|
@ -1,2 +1,11 @@
|
||||||
celsius_to_kelvin = 273.15
|
celsius_to_kelvin = 273.15
|
||||||
days_of_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
|
days_of_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
|
||||||
|
# This dictionary is meant to force the way these variables are written
|
||||||
|
time_scale = {
|
||||||
|
'minute': 'minute',
|
||||||
|
'hour': 'hour',
|
||||||
|
'day': 'day',
|
||||||
|
'week': 'week',
|
||||||
|
'month': 'month',
|
||||||
|
'year': 'year'
|
||||||
|
}
|
||||||
|
|
|
@ -14,21 +14,16 @@ class DemoOccupancyParameters:
|
||||||
self._demo_schedules_path = base_path / 'demo_schedules.xlsx'
|
self._demo_schedules_path = base_path / 'demo_schedules.xlsx'
|
||||||
xls = pd.ExcelFile(self._demo_schedules_path)
|
xls = pd.ExcelFile(self._demo_schedules_path)
|
||||||
for building in city.buildings:
|
for building in city.buildings:
|
||||||
|
schedules = dict()
|
||||||
occupancy = pd.read_excel(xls, sheet_name=OccupancyHelper.pluto_occupancy_function(building.function),
|
occupancy = pd.read_excel(xls, sheet_name=OccupancyHelper.pluto_occupancy_function(building.function),
|
||||||
skiprows=[0, 1, 2, 3])
|
skiprows=[0, 1, 2, 3], nrows=39, usecols="A:AA")
|
||||||
for index, row in occupancy.iterrows():
|
for index in range(0, 13):
|
||||||
building.week_day_schedule = [row['1am'], row['2am'], row['3am'], row['4am'], row['5am'], row['6am'],
|
row = occupancy.iloc[3 * index]
|
||||||
row['7am'], row['8am'], row['9am'], row['10am'], row['11am'], row['12am'],
|
data = row[1:]
|
||||||
row['1pm'], row['2pm'], row['3pm'], row['4pm'], row['5pm'], row['6pm'],
|
name = row[0]
|
||||||
row['7pm'], row['8pm'], row['9pm'], row['10pm'], row['11pm'], row['12pm']]
|
for i in range(1, 3):
|
||||||
row = occupancy.iloc[index + 1]
|
row = occupancy.iloc[3*index + i]
|
||||||
building.saturday_schedule = [row['1am'], row['2am'], row['3am'], row['4am'], row['5am'], row['6am'],
|
data1 = row[1:]
|
||||||
row['7am'], row['8am'], row['9am'], row['10am'], row['11am'], row['12am'],
|
data = pd.concat([data, data1], axis=1)
|
||||||
row['1pm'], row['2pm'], row['3pm'], row['4pm'], row['5pm'], row['6pm'],
|
schedules[name] = data
|
||||||
row['7pm'], row['8pm'], row['9pm'], row['10pm'], row['11pm'], row['12pm']]
|
print(schedules)
|
||||||
row = occupancy.iloc[index + 2]
|
|
||||||
building.sunday_schedule = [row['1am'], row['2am'], row['3am'], row['4am'], row['5am'], row['6am'],
|
|
||||||
row['7am'], row['8am'], row['9am'], row['10am'], row['11am'], row['12am'],
|
|
||||||
row['1pm'], row['2pm'], row['3pm'], row['4pm'], row['5pm'], row['6pm'],
|
|
||||||
row['7pm'], row['8pm'], row['9pm'], row['10pm'], row['11pm'], row['12pm']]
|
|
||||||
break
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ class TestOccupancyFactory(TestCase):
|
||||||
city = self._get_citygml()
|
city = self._get_citygml()
|
||||||
OccupancyFactory('demo', city)
|
OccupancyFactory('demo', city)
|
||||||
for building in city.buildings:
|
for building in city.buildings:
|
||||||
self.assertTrue(building.week_day_schedule)
|
#self.assertTrue(building.week_day_schedule)
|
||||||
self.assertTrue(building.saturday_schedule)
|
self.assertTrue(building.saturday_schedule)
|
||||||
self.assertTrue(building.sunday_schedule)
|
#self.assertTrue(building.sunday_schedule)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user