feature: add dhn factory to enrich graph with city.buildings

This commit is contained in:
Majid Rezaei 2024-07-31 17:37:30 -04:00
parent 797944c5bb
commit 5205ed5ca2

View File

@ -0,0 +1,32 @@
import networkx as nx
import logging
class DistrictHeatingFactory:
"""
DistrictHeatingFactory class
"""
def __init__(self, city, graph):
self._city = city
self._network_graph = graph
def enrich(self):
"""
Enrich the network graph nodes with attributes from the city buildings.
"""
for node in self._network_graph.nodes(data=True):
node_id, node_attrs = node
if node_attrs.get('type') == 'building':
building_name = node_attrs.get('name')
building_found = False
for building in self._city.buildings:
if building.name == building_name:
building_attrs = vars(building)
for attr, value in building_attrs.items():
if attr not in self._network_graph.nodes[node_id]:
self._network_graph.nodes[node_id][attr] = value
building_found = True
break
if not building_found:
logging.error(msg=f"Building with name '{building_name}' not found in city.")