Skip to content

Commit

Permalink
Merge pull request #3306 from architecture-building-systems/3304-sens…
Browse files Browse the repository at this point in the history
…or-data

Read and write sensor data using feather instead of json
  • Loading branch information
reyery committed Jun 28, 2023
2 parents 8ce5db8 + 5e1cc78 commit be3b0b1
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 14 deletions.
6 changes: 3 additions & 3 deletions cea/inputlocator.py
Original file line number Diff line number Diff line change
Expand Up @@ -970,12 +970,12 @@ def get_solar_radiation_folder(self):
return self._ensure_folder(self.scenario, 'outputs', 'data', 'solar-radiation')

def get_radiation_building(self, building):
"""scenario/outputs/data/solar-radiation/${building}_insolation.json"""
"""scenario/outputs/data/solar-radiation/${building}_radiation.csv"""
return os.path.join(self.get_solar_radiation_folder(), '%s_radiation.csv' % building)

def get_radiation_building_sensors(self, building):
"""scenario/outputs/data/solar-radiation/${building}_insolation_Whm2.json"""
return os.path.join(self.get_solar_radiation_folder(), '%s_insolation_Whm2.json' % building)
"""scenario/outputs/data/solar-radiation/${building}_insolation_Whm2.feather"""
return os.path.join(self.get_solar_radiation_folder(), '%s_insolation_Whm2.feather' % building)

def get_radiation_metadata(self, building):
"""scenario/outputs/data/solar-radiation/{building}_geometrgy.csv"""
Expand Down
5 changes: 3 additions & 2 deletions cea/resources/radiation/daysim.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
__email__ = "cea@arch.ethz.ch"
__status__ = "Production"

from pyarrow import feather

from cea.constants import HOURS_IN_YEAR
from cea.resources.radiation.geometry_generator import BuildingGeometry

Expand Down Expand Up @@ -325,8 +327,7 @@ def isolation_daysim(chunk_n, cea_daysim, building_names, locator, radiance_para


def write_sensor_results(sensor_data_path, sensor_values):
with open(sensor_data_path, 'w') as outfile:
json.dump(sensor_values.T.to_dict(orient="list"), outfile)
feather.write_feather(sensor_values, sensor_data_path, compression="zstd")


def write_aggregated_results(building_name, sensor_values, locator, date):
Expand Down
4 changes: 2 additions & 2 deletions cea/technologies/solar/photovoltaic_thermal.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def calc_PVT(locator, config, latitude, longitude, weather_data, date_local, bui
"""
t0 = time.perf_counter()

radiation_json_path = locator.get_radiation_building_sensors(building_name)
radiation_path = locator.get_radiation_building_sensors(building_name)
metadata_csv_path = locator.get_radiation_metadata(building_name)

# solar properties
Expand All @@ -82,7 +82,7 @@ def calc_PVT(locator, config, latitude, longitude, weather_data, date_local, bui

# select sensor point with sufficient solar radiation
max_annual_radiation, annual_radiation_threshold, sensors_rad_clean, sensors_metadata_clean = \
solar_equations.filter_low_potential(radiation_json_path, metadata_csv_path, config)
solar_equations.filter_low_potential(radiation_path, metadata_csv_path, config)

print('filtering low potential sensor points done for building %s' % building_name)

Expand Down
4 changes: 2 additions & 2 deletions cea/technologies/solar/solar_collector.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ def calc_SC(locator, config, latitude, longitude, weather_data, date_local, buil

type_panel = config.solar.type_SCpanel

radiation_csv = locator.get_radiation_building_sensors(building=building_name)
radiation_path = locator.get_radiation_building_sensors(building=building_name)
metadata_csv = locator.get_radiation_metadata(building=building_name)

# solar properties
Expand All @@ -75,7 +75,7 @@ def calc_SC(locator, config, latitude, longitude, weather_data, date_local, buil

# select sensor point with sufficient solar radiation
max_annual_radiation, annual_radiation_threshold, sensors_rad_clean, sensors_metadata_clean = \
solar_equations.filter_low_potential(radiation_csv, metadata_csv, config)
solar_equations.filter_low_potential(radiation_path, metadata_csv, config)

print('filtering low potential sensor points done for building %s' % building_name)

Expand Down
12 changes: 7 additions & 5 deletions cea/utilities/solar_equations.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import datetime
import collections
from math import *

from pyarrow import feather
from timezonefinder import TimezoneFinder
import pytz
from cea.constants import HOURS_IN_YEAR
Expand Down Expand Up @@ -205,18 +207,18 @@ def get_equation_of_time(day_date):

# filter sensor points with low solar potential

def filter_low_potential(radiation_json_path, metadata_csv_path, config):
def filter_low_potential(radiation_sensor_path, metadata_csv_path, config):
"""
To filter the sensor points/hours with low radiation potential.
#. keep sensors above min radiation
#. eliminate points when hourly production < 50 W/m2
#. augment the solar radiation due to differences between panel reflectance and original reflectances used in daysim
:param radiation_csv: solar insulation data on all surfaces of each building
:type radiation_csv: .csv
:param radiation_sensor_path: solar insulation data on all surfaces of each building
:type radiation_csv: str
:param metadata_csv: solar insulation sensor data of each building
:type metadata_csv: .csv
:type metadata_csv: str
:return max_annual_radiation: yearly horizontal radiation [Wh/m2/year]
:rtype max_annual_radiation: float
:return annual_radiation_threshold: minimum yearly radiation threshold for sensor selection [Wh/m2/year]
Expand All @@ -241,7 +243,7 @@ def f(x):
return x

# read radiation file
sensors_rad = pd.read_json(radiation_json_path)
sensors_rad = feather.read_feather(radiation_sensor_path)
sensors_metadata = pd.read_csv(metadata_csv_path)

# join total radiation to sensor_metadata
Expand Down
1 change: 1 addition & 0 deletions environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ dependencies:
- pyyaml
- timezonefinder
- python-cufflinks
- pyarrow
- pip:
- xlrd
- xlwt
Expand Down

0 comments on commit be3b0b1

Please sign in to comment.