feat: add all the simulation files
This commit is contained in:
parent
9670f3a3fd
commit
8d614582b4
146
ALLIS.py
Normal file
146
ALLIS.py
Normal file
|
@ -0,0 +1,146 @@
|
|||
from scripts.district_heating_network.directory_manager import DirectoryManager
|
||||
import subprocess
|
||||
from building_modelling.ep_run_enrich import energy_plus_workflow
|
||||
from hub.imports.geometry_factory import GeometryFactory
|
||||
from hub.helpers.dictionaries import Dictionaries
|
||||
from hub.imports.construction_factory import ConstructionFactory
|
||||
from hub.imports.usage_factory import UsageFactory
|
||||
from hub.imports.weather_factory import WeatherFactory
|
||||
from hub.imports.results_factory import ResultFactory
|
||||
from building_modelling.geojson_creator import process_geojson
|
||||
import hub.helpers.constants as cte
|
||||
from hub.exports.exports_factory import ExportsFactory
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from scripts.district_heating_network.district_heating_network_creator import DistrictHeatingNetworkCreator
|
||||
from scripts.district_heating_network.district_heating_factory import DistrictHeatingFactory
|
||||
import json
|
||||
|
||||
# Manage File Path
|
||||
base_path = "./"
|
||||
dir_manager = DirectoryManager(base_path)
|
||||
|
||||
# Input files directory
|
||||
input_files_path = dir_manager.create_directory('input_files')
|
||||
geojson_file_path = input_files_path / 'MACH.geojson'
|
||||
pipe_data_file = input_files_path / 'pipe_data.json'
|
||||
|
||||
# Output files directory
|
||||
output_path = dir_manager.create_directory('out_files')
|
||||
|
||||
# Subdirectories for output files
|
||||
energy_plus_output_path = dir_manager.create_directory('out_files/energy_plus_outputs')
|
||||
simulation_results_path = dir_manager.create_directory('out_files/simulation_results')
|
||||
sra_output_path = dir_manager.create_directory('out_files/sra_outputs')
|
||||
cost_analysis_output_path = dir_manager.create_directory('out_files/cost_analysis')
|
||||
# Create ciry and run energyplus workflow
|
||||
city = GeometryFactory(file_type='geojson',
|
||||
path=geojson_file_path,
|
||||
height_field='maximum_roof_height',
|
||||
year_of_construction_field='year_built',
|
||||
function_field='building_type',
|
||||
function_to_hub=Dictionaries().montreal_function_to_hub_function).city
|
||||
ConstructionFactory('nrcan', city).enrich()
|
||||
UsageFactory('nrcan', city).enrich()
|
||||
WeatherFactory('epw', city).enrich()
|
||||
|
||||
# energy_plus_workflow(city, energy_plus_output_path)
|
||||
ResultFactory('energy_plus_multiple_buildings', city, energy_plus_output_path).enrich()
|
||||
|
||||
# District Heating Network Creator
|
||||
central_plant_locations = [(-73.6641097164314, 45.433637169890005)] # Add at least one location
|
||||
|
||||
roads_file = "input_files/roads.json"
|
||||
|
||||
dhn_creator = DistrictHeatingNetworkCreator(geojson_file_path, roads_file, central_plant_locations)
|
||||
|
||||
network_graph = dhn_creator.run()
|
||||
|
||||
|
||||
# Pipe and pump sizing
|
||||
|
||||
with open(pipe_data_file, 'r') as f:
|
||||
pipe_data = json.load(f)
|
||||
|
||||
factory = DistrictHeatingFactory(
|
||||
city=city,
|
||||
graph=network_graph,
|
||||
supply_temperature=80 + 273, # in Kelvin
|
||||
return_temperature=60 + 273, # in Kelvin
|
||||
simultaneity_factor=0.9
|
||||
)
|
||||
|
||||
factory.enrich()
|
||||
factory.sizing()
|
||||
factory.calculate_diameters_and_costs(pipe_data)
|
||||
pipe_groups, total_cost = factory.analyze_costs()
|
||||
|
||||
# Save the pipe groups with total costs to a CSV file
|
||||
factory.save_pipe_groups_to_csv('pipe_groups.csv')
|
||||
|
||||
import json
|
||||
import matplotlib.pyplot as plt
|
||||
import networkx as nx
|
||||
from shapely.geometry import shape, Polygon, MultiPolygon
|
||||
from shapely.validation import explain_validity
|
||||
|
||||
# Load the GeoJSON file
|
||||
with open("input_files/MACH.geojson", "r") as file:
|
||||
geojson_data = json.load(file)
|
||||
|
||||
# Initialize a figure
|
||||
fig, ax = plt.subplots(figsize=(15, 10))
|
||||
# Set aspect to equal
|
||||
ax.set_aspect('equal')
|
||||
|
||||
# Set figure and axes backgrounds to transparent
|
||||
fig.patch.set_facecolor('none')
|
||||
ax.set_facecolor('none')
|
||||
|
||||
# Iterate over each feature in the GeoJSON
|
||||
for feature in geojson_data['features']:
|
||||
geom = shape(feature['geometry'])
|
||||
|
||||
# Check if the geometry is valid
|
||||
if not geom.is_valid:
|
||||
print(f"Invalid geometry: {explain_validity(geom)}")
|
||||
continue # Skip invalid geometries
|
||||
|
||||
# Plot polygons
|
||||
if isinstance(geom, Polygon):
|
||||
x, y = geom.exterior.xy
|
||||
ax.plot(x, y, color='black', linewidth=1) # Plot only the edges
|
||||
elif isinstance(geom, MultiPolygon):
|
||||
for poly in geom.geoms:
|
||||
x, y = poly.exterior.xy
|
||||
ax.plot(x, y, color='black', linewidth=1) # Plot only the edges
|
||||
else:
|
||||
print(f"Unhandled geometry type: {type(geom)}")
|
||||
continue
|
||||
|
||||
# Prepare and plot the network graph
|
||||
G = network_graph
|
||||
|
||||
# Get positions from node attributes
|
||||
pos = nx.get_node_attributes(G, 'pos')
|
||||
|
||||
# Draw nodes, using different colors based on node type
|
||||
node_types = nx.get_node_attributes(G, 'type')
|
||||
colors = {'building': 'blue', 'generation': 'green', 'junction': 'red'}
|
||||
node_colors = [colors.get(node_types.get(node, 'junction'), 'black') for node in G.nodes()]
|
||||
|
||||
nx.draw_networkx_nodes(G, pos, ax=ax, node_size=50, node_color=node_colors)
|
||||
nx.draw_networkx_edges(G, pos, ax=ax, edge_color="red", width=1.2)
|
||||
|
||||
# Remove axes, ticks, and background
|
||||
ax.axis("off")
|
||||
|
||||
# Adjust plot limits to the data
|
||||
x_values = [coord[0] for coord in pos.values()]
|
||||
y_values = [coord[1] for coord in pos.values()]
|
||||
ax.set_xlim(min(x_values) - 0.001, max(x_values) + 0.001)
|
||||
ax.set_ylim(min(y_values) - 0.001, max(y_values) + 0.001)
|
||||
|
||||
# Save the plot with transparency
|
||||
plt.savefig("network_plot.png", bbox_inches='tight', pad_inches=0, transparent=True)
|
||||
plt.show()
|
146
MACH.py
Normal file
146
MACH.py
Normal file
|
@ -0,0 +1,146 @@
|
|||
from scripts.district_heating_network.directory_manager import DirectoryManager
|
||||
import subprocess
|
||||
from building_modelling.ep_run_enrich import energy_plus_workflow
|
||||
from hub.imports.geometry_factory import GeometryFactory
|
||||
from hub.helpers.dictionaries import Dictionaries
|
||||
from hub.imports.construction_factory import ConstructionFactory
|
||||
from hub.imports.usage_factory import UsageFactory
|
||||
from hub.imports.weather_factory import WeatherFactory
|
||||
from hub.imports.results_factory import ResultFactory
|
||||
from building_modelling.geojson_creator import process_geojson
|
||||
import hub.helpers.constants as cte
|
||||
from hub.exports.exports_factory import ExportsFactory
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from scripts.district_heating_network.district_heating_network_creator import DistrictHeatingNetworkCreator
|
||||
from scripts.district_heating_network.district_heating_factory import DistrictHeatingFactory
|
||||
import json
|
||||
|
||||
# Manage File Path
|
||||
base_path = "./"
|
||||
dir_manager = DirectoryManager(base_path)
|
||||
|
||||
# Input files directory
|
||||
input_files_path = dir_manager.create_directory('input_files')
|
||||
geojson_file_path = input_files_path / 'MAXX.geojson'
|
||||
pipe_data_file = input_files_path / 'pipe_data.json'
|
||||
|
||||
# Output files directory
|
||||
output_path = dir_manager.create_directory('out_files')
|
||||
|
||||
# Subdirectories for output files
|
||||
energy_plus_output_path = dir_manager.create_directory('out_files/energy_plus_outputs')
|
||||
simulation_results_path = dir_manager.create_directory('out_files/simulation_results')
|
||||
sra_output_path = dir_manager.create_directory('out_files/sra_outputs')
|
||||
cost_analysis_output_path = dir_manager.create_directory('out_files/cost_analysis')
|
||||
# Create ciry and run energyplus workflow
|
||||
city = GeometryFactory(file_type='geojson',
|
||||
path=geojson_file_path,
|
||||
height_field='maximum_roof_height',
|
||||
year_of_construction_field='year_built',
|
||||
function_field='building_type',
|
||||
function_to_hub=Dictionaries().montreal_function_to_hub_function).city
|
||||
ConstructionFactory('nrcan', city).enrich()
|
||||
UsageFactory('nrcan', city).enrich()
|
||||
WeatherFactory('epw', city).enrich()
|
||||
|
||||
# energy_plus_workflow(city, energy_plus_output_path)
|
||||
ResultFactory('energy_plus_multiple_buildings', city, energy_plus_output_path).enrich()
|
||||
|
||||
# District Heating Network Creator
|
||||
central_plant_locations = [(-73.656602760176, 45.43968832385218) ] # Add at least one location
|
||||
|
||||
roads_file = "input_files/roads.json"
|
||||
|
||||
dhn_creator = DistrictHeatingNetworkCreator(geojson_file_path, roads_file, central_plant_locations)
|
||||
|
||||
network_graph = dhn_creator.run()
|
||||
|
||||
|
||||
# Pipe and pump sizing
|
||||
|
||||
with open(pipe_data_file, 'r') as f:
|
||||
pipe_data = json.load(f)
|
||||
|
||||
factory = DistrictHeatingFactory(
|
||||
city=city,
|
||||
graph=network_graph,
|
||||
supply_temperature=80 + 273, # in Kelvin
|
||||
return_temperature=60 + 273, # in Kelvin
|
||||
simultaneity_factor=0.9
|
||||
)
|
||||
|
||||
factory.enrich()
|
||||
factory.sizing()
|
||||
factory.calculate_diameters_and_costs(pipe_data)
|
||||
pipe_groups, total_cost = factory.analyze_costs()
|
||||
|
||||
# Save the pipe groups with total costs to a CSV file
|
||||
factory.save_pipe_groups_to_csv('pipe_groups.csv')
|
||||
|
||||
import json
|
||||
import matplotlib.pyplot as plt
|
||||
import networkx as nx
|
||||
from shapely.geometry import shape, Polygon, MultiPolygon
|
||||
from shapely.validation import explain_validity
|
||||
|
||||
# Load the GeoJSON file
|
||||
with open("input_files/MAXX.geojson", "r") as file:
|
||||
geojson_data = json.load(file)
|
||||
|
||||
# Initialize a figure
|
||||
fig, ax = plt.subplots(figsize=(15, 10))
|
||||
# Set aspect to equal
|
||||
ax.set_aspect('equal')
|
||||
|
||||
# Set figure and axes backgrounds to transparent
|
||||
fig.patch.set_facecolor('none')
|
||||
ax.set_facecolor('none')
|
||||
|
||||
# Iterate over each feature in the GeoJSON
|
||||
for feature in geojson_data['features']:
|
||||
geom = shape(feature['geometry'])
|
||||
|
||||
# Check if the geometry is valid
|
||||
if not geom.is_valid:
|
||||
print(f"Invalid geometry: {explain_validity(geom)}")
|
||||
continue # Skip invalid geometries
|
||||
|
||||
# Plot polygons
|
||||
if isinstance(geom, Polygon):
|
||||
x, y = geom.exterior.xy
|
||||
ax.plot(x, y, color='black', linewidth=1) # Plot only the edges
|
||||
elif isinstance(geom, MultiPolygon):
|
||||
for poly in geom.geoms:
|
||||
x, y = poly.exterior.xy
|
||||
ax.plot(x, y, color='black', linewidth=1) # Plot only the edges
|
||||
else:
|
||||
print(f"Unhandled geometry type: {type(geom)}")
|
||||
continue
|
||||
|
||||
# Prepare and plot the network graph
|
||||
G = network_graph
|
||||
|
||||
# Get positions from node attributes
|
||||
pos = nx.get_node_attributes(G, 'pos')
|
||||
|
||||
# Draw nodes, using different colors based on node type
|
||||
node_types = nx.get_node_attributes(G, 'type')
|
||||
colors = {'building': 'blue', 'generation': 'green', 'junction': 'red'}
|
||||
node_colors = [colors.get(node_types.get(node, 'junction'), 'black') for node in G.nodes()]
|
||||
|
||||
nx.draw_networkx_nodes(G, pos, ax=ax, node_size=50, node_color=node_colors)
|
||||
nx.draw_networkx_edges(G, pos, ax=ax, edge_color="red", width=1.2)
|
||||
|
||||
# Remove axes, ticks, and background
|
||||
ax.axis("off")
|
||||
|
||||
# Adjust plot limits to the data
|
||||
x_values = [coord[0] for coord in pos.values()]
|
||||
y_values = [coord[1] for coord in pos.values()]
|
||||
ax.set_xlim(min(x_values) - 0.001, max(x_values) + 0.001)
|
||||
ax.set_ylim(min(y_values) - 0.001, max(y_values) + 0.001)
|
||||
|
||||
# Save the plot with transparency
|
||||
plt.savefig("network_plot.png", bbox_inches='tight', pad_inches=0, transparent=True)
|
||||
plt.show()
|
|
@ -1,26 +1,15 @@
|
|||
from scripts.district_heating_network.directory_manager import DirectoryManager
|
||||
import subprocess
|
||||
from scripts.ep_run_enrich import energy_plus_workflow
|
||||
from building_modelling.ep_run_enrich import energy_plus_workflow
|
||||
from hub.imports.geometry_factory import GeometryFactory
|
||||
from hub.helpers.dictionaries import Dictionaries
|
||||
from hub.imports.construction_factory import ConstructionFactory
|
||||
from hub.imports.usage_factory import UsageFactory
|
||||
from hub.imports.weather_factory import WeatherFactory
|
||||
from hub.imports.results_factory import ResultFactory
|
||||
from scripts.energy_system_retrofit_report import EnergySystemRetrofitReport
|
||||
from scripts.geojson_creator import process_geojson
|
||||
from scripts import random_assignation
|
||||
from hub.imports.energy_systems_factory import EnergySystemsFactory
|
||||
from scripts.energy_system_sizing import SystemSizing
|
||||
from scripts.solar_angles import CitySolarAngles
|
||||
from scripts.pv_sizing_and_simulation import PVSizingSimulation
|
||||
from scripts.energy_system_retrofit_results import consumption_data, cost_data
|
||||
from scripts.energy_system_sizing_and_simulation_factory import EnergySystemsSimulationFactory
|
||||
from scripts.costs.cost import Cost
|
||||
from scripts.costs.constants import SKIN_RETROFIT_AND_SYSTEM_RETROFIT_AND_PV, SYSTEM_RETROFIT_AND_PV, CURRENT_STATUS
|
||||
from building_modelling.geojson_creator import process_geojson
|
||||
import hub.helpers.constants as cte
|
||||
from hub.exports.exports_factory import ExportsFactory
|
||||
from scripts.pv_feasibility import pv_feasibility
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from scripts.district_heating_network.district_heating_network_creator import DistrictHeatingNetworkCreator
|
||||
|
@ -34,7 +23,7 @@ dir_manager = DirectoryManager(base_path)
|
|||
|
||||
# Input files directory
|
||||
input_files_path = dir_manager.create_directory('input_files')
|
||||
geojson_file_path = input_files_path / 'output_buildings.geojson'
|
||||
geojson_file_path = input_files_path / 'Lachine_Geojson_Mixed_Use.geojson'
|
||||
pipe_data_file = input_files_path / 'pipe_data.json'
|
||||
|
||||
# Output files directory
|
||||
|
@ -58,28 +47,29 @@ process_geojson(x=location[1], y=location[0], diff=0.001)
|
|||
# Create ciry and run energyplus workflow
|
||||
city = GeometryFactory(file_type='geojson',
|
||||
path=geojson_file_path,
|
||||
height_field='height',
|
||||
year_of_construction_field='year_of_construction',
|
||||
function_field='function',
|
||||
height_field='maximum_roof_height',
|
||||
year_of_construction_field='year_built',
|
||||
function_field='building_type',
|
||||
function_to_hub=Dictionaries().montreal_function_to_hub_function).city
|
||||
ConstructionFactory('nrcan', city).enrich()
|
||||
UsageFactory('nrcan', city).enrich()
|
||||
WeatherFactory('epw', city).enrich()
|
||||
|
||||
# SRA
|
||||
ExportsFactory('sra', city, output_path).export()
|
||||
sra_path = (output_path / f'{city.name}_sra.xml').resolve()
|
||||
subprocess.run(['sra', str(sra_path)])
|
||||
ResultFactory('sra', city, output_path).enrich()
|
||||
#
|
||||
# # SRA
|
||||
# ExportsFactory('sra', city, output_path).export()
|
||||
# sra_path = (output_path / f'{city.name}_sra.xml').resolve()
|
||||
# subprocess.run(['sra', str(sra_path)])
|
||||
# ResultFactory('sra', city, output_path).enrich()
|
||||
|
||||
# EP Workflow
|
||||
energy_plus_workflow(city, energy_plus_output_path)
|
||||
# energy_plus_workflow(city, energy_plus_output_path)
|
||||
|
||||
ResultFactory('energy_plus_multiple_buildings', city, energy_plus_output_path).enrich()
|
||||
#%% --------------------------------------------------------------------------------------------------------------------
|
||||
# District Heating Network Creator
|
||||
central_plant_locations = [(-73.57812571080625, 45.49499447346277)] # Add at least one location
|
||||
central_plant_locations = [(-73.6641097164314, 45.433637169890005)] # Add at least one location
|
||||
|
||||
roads_file = "./input_files/roads.json"
|
||||
roads_file = "./input_files/majid.geojson"
|
||||
|
||||
dhn_creator = DistrictHeatingNetworkCreator(geojson_file_path, roads_file, central_plant_locations)
|
||||
|
||||
|
|
146
dom.py
Normal file
146
dom.py
Normal file
|
@ -0,0 +1,146 @@
|
|||
from scripts.district_heating_network.directory_manager import DirectoryManager
|
||||
import subprocess
|
||||
from building_modelling.ep_run_enrich import energy_plus_workflow
|
||||
from hub.imports.geometry_factory import GeometryFactory
|
||||
from hub.helpers.dictionaries import Dictionaries
|
||||
from hub.imports.construction_factory import ConstructionFactory
|
||||
from hub.imports.usage_factory import UsageFactory
|
||||
from hub.imports.weather_factory import WeatherFactory
|
||||
from hub.imports.results_factory import ResultFactory
|
||||
from building_modelling.geojson_creator import process_geojson
|
||||
import hub.helpers.constants as cte
|
||||
from hub.exports.exports_factory import ExportsFactory
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from scripts.district_heating_network.district_heating_network_creator import DistrictHeatingNetworkCreator
|
||||
from scripts.district_heating_network.district_heating_factory import DistrictHeatingFactory
|
||||
import json
|
||||
|
||||
# Manage File Path
|
||||
base_path = "./"
|
||||
dir_manager = DirectoryManager(base_path)
|
||||
|
||||
# Input files directory
|
||||
input_files_path = dir_manager.create_directory('input_files')
|
||||
geojson_file_path = input_files_path / 'Dombridge.geojson'
|
||||
pipe_data_file = input_files_path / 'pipe_data.json'
|
||||
|
||||
# Output files directory
|
||||
output_path = dir_manager.create_directory('out_files')
|
||||
|
||||
# Subdirectories for output files
|
||||
energy_plus_output_path = dir_manager.create_directory('out_files/energy_plus_outputs')
|
||||
simulation_results_path = dir_manager.create_directory('out_files/simulation_results')
|
||||
sra_output_path = dir_manager.create_directory('out_files/sra_outputs')
|
||||
cost_analysis_output_path = dir_manager.create_directory('out_files/cost_analysis')
|
||||
# Create ciry and run energyplus workflow
|
||||
city = GeometryFactory(file_type='geojson',
|
||||
path=geojson_file_path,
|
||||
height_field='maximum_roof_height',
|
||||
year_of_construction_field='year_built',
|
||||
function_field='building_type',
|
||||
function_to_hub=Dictionaries().montreal_function_to_hub_function).city
|
||||
ConstructionFactory('nrcan', city).enrich()
|
||||
UsageFactory('nrcan', city).enrich()
|
||||
WeatherFactory('epw', city).enrich()
|
||||
|
||||
# energy_plus_workflow(city, energy_plus_output_path)
|
||||
ResultFactory('energy_plus_multiple_buildings', city, energy_plus_output_path).enrich()
|
||||
|
||||
# District Heating Network Creator
|
||||
central_plant_locations = [(-73.66314280001727, 45.43813943275185)] # Add at least one location
|
||||
|
||||
roads_file = "input_files/roads.json"
|
||||
|
||||
dhn_creator = DistrictHeatingNetworkCreator(geojson_file_path, roads_file, central_plant_locations)
|
||||
|
||||
network_graph = dhn_creator.run()
|
||||
|
||||
|
||||
# Pipe and pump sizing
|
||||
|
||||
with open(pipe_data_file, 'r') as f:
|
||||
pipe_data = json.load(f)
|
||||
|
||||
factory = DistrictHeatingFactory(
|
||||
city=city,
|
||||
graph=network_graph,
|
||||
supply_temperature=80 + 273, # in Kelvin
|
||||
return_temperature=60 + 273, # in Kelvin
|
||||
simultaneity_factor=0.9
|
||||
)
|
||||
|
||||
factory.enrich()
|
||||
factory.sizing()
|
||||
factory.calculate_diameters_and_costs(pipe_data)
|
||||
pipe_groups, total_cost = factory.analyze_costs()
|
||||
|
||||
# Save the pipe groups with total costs to a CSV file
|
||||
factory.save_pipe_groups_to_csv('pipe_groups.csv')
|
||||
|
||||
import json
|
||||
import matplotlib.pyplot as plt
|
||||
import networkx as nx
|
||||
from shapely.geometry import shape, Polygon, MultiPolygon
|
||||
from shapely.validation import explain_validity
|
||||
|
||||
# Load the GeoJSON file
|
||||
with open("input_files/Dombridge.geojson", "r") as file:
|
||||
geojson_data = json.load(file)
|
||||
|
||||
# Initialize a figure
|
||||
fig, ax = plt.subplots(figsize=(15, 10))
|
||||
# Set aspect to equal
|
||||
ax.set_aspect('equal')
|
||||
|
||||
# Set figure and axes backgrounds to transparent
|
||||
fig.patch.set_facecolor('none')
|
||||
ax.set_facecolor('none')
|
||||
|
||||
# Iterate over each feature in the GeoJSON
|
||||
for feature in geojson_data['features']:
|
||||
geom = shape(feature['geometry'])
|
||||
|
||||
# Check if the geometry is valid
|
||||
if not geom.is_valid:
|
||||
print(f"Invalid geometry: {explain_validity(geom)}")
|
||||
continue # Skip invalid geometries
|
||||
|
||||
# Plot polygons
|
||||
if isinstance(geom, Polygon):
|
||||
x, y = geom.exterior.xy
|
||||
ax.plot(x, y, color='black', linewidth=1) # Plot only the edges
|
||||
elif isinstance(geom, MultiPolygon):
|
||||
for poly in geom.geoms:
|
||||
x, y = poly.exterior.xy
|
||||
ax.plot(x, y, color='black', linewidth=1) # Plot only the edges
|
||||
else:
|
||||
print(f"Unhandled geometry type: {type(geom)}")
|
||||
continue
|
||||
|
||||
# Prepare and plot the network graph
|
||||
G = network_graph
|
||||
|
||||
# Get positions from node attributes
|
||||
pos = nx.get_node_attributes(G, 'pos')
|
||||
|
||||
# Draw nodes, using different colors based on node type
|
||||
node_types = nx.get_node_attributes(G, 'type')
|
||||
colors = {'building': 'blue', 'generation': 'green', 'junction': 'red'}
|
||||
node_colors = [colors.get(node_types.get(node, 'junction'), 'black') for node in G.nodes()]
|
||||
|
||||
nx.draw_networkx_nodes(G, pos, ax=ax, node_size=50, node_color=node_colors)
|
||||
nx.draw_networkx_edges(G, pos, ax=ax, edge_color="red", width=1.2)
|
||||
|
||||
# Remove axes, ticks, and background
|
||||
ax.axis("off")
|
||||
|
||||
# Adjust plot limits to the data
|
||||
x_values = [coord[0] for coord in pos.values()]
|
||||
y_values = [coord[1] for coord in pos.values()]
|
||||
ax.set_xlim(min(x_values) - 0.001, max(x_values) + 0.001)
|
||||
ax.set_ylim(min(y_values) - 0.001, max(y_values) + 0.001)
|
||||
|
||||
# Save the plot with transparency
|
||||
plt.savefig("network_plot.png", bbox_inches='tight', pad_inches=0, transparent=True)
|
||||
plt.show()
|
|
@ -1,87 +1,98 @@
|
|||
from pathlib import Path
|
||||
from scripts.district_heating_network.directory_manager import DirectoryManager
|
||||
import subprocess
|
||||
from building_modelling.ep_run_enrich import energy_plus_workflow
|
||||
from energy_system_modelling_package.energy_system_modelling_factories.montreal_energy_system_archetype_modelling_factory import \
|
||||
MontrealEnergySystemArchetypesSimulationFactory
|
||||
from energy_system_modelling_package.energy_system_modelling_factories.pv_assessment.pv_feasibility import \
|
||||
pv_feasibility
|
||||
from hub.imports.geometry_factory import GeometryFactory
|
||||
from hub.helpers.dictionaries import Dictionaries
|
||||
from hub.imports.construction_factory import ConstructionFactory
|
||||
from hub.imports.usage_factory import UsageFactory
|
||||
from hub.imports.weather_factory import WeatherFactory
|
||||
from hub.imports.results_factory import ResultFactory
|
||||
from energy_system_modelling_package.energy_system_retrofit.energy_system_retrofit_report import EnergySystemRetrofitReport
|
||||
from building_modelling.geojson_creator import process_geojson
|
||||
from energy_system_modelling_package import random_assignation
|
||||
from hub.imports.energy_systems_factory import EnergySystemsFactory
|
||||
from energy_system_modelling_package.energy_system_modelling_factories.energy_system_sizing_factory import EnergySystemsSizingFactory
|
||||
from energy_system_modelling_package.energy_system_retrofit.energy_system_retrofit_results import consumption_data, cost_data
|
||||
from costing_package.cost import Cost
|
||||
from costing_package.constants import SYSTEM_RETROFIT_AND_PV, CURRENT_STATUS
|
||||
import hub.helpers.constants as cte
|
||||
from hub.exports.exports_factory import ExportsFactory
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from scripts.district_heating_network.district_heating_network_creator import DistrictHeatingNetworkCreator
|
||||
from scripts.district_heating_network.district_heating_factory import DistrictHeatingFactory
|
||||
import json
|
||||
|
||||
# Specify the GeoJSON file path
|
||||
input_files_path = (Path(__file__).parent / 'input_files')
|
||||
input_files_path.mkdir(parents=True, exist_ok=True)
|
||||
geojson_file = process_geojson(x=-73.5681295982132, y=45.49218262677643, diff=0.0001)
|
||||
geojson_file_path = input_files_path / 'output_buildings.geojson'
|
||||
output_path = (Path(__file__).parent / 'out_files').resolve()
|
||||
output_path.mkdir(parents=True, exist_ok=True)
|
||||
energy_plus_output_path = output_path / 'energy_plus_outputs'
|
||||
energy_plus_output_path.mkdir(parents=True, exist_ok=True)
|
||||
simulation_results_path = (Path(__file__).parent / 'out_files' / 'simulation_results').resolve()
|
||||
simulation_results_path.mkdir(parents=True, exist_ok=True)
|
||||
sra_output_path = output_path / 'sra_outputs'
|
||||
sra_output_path.mkdir(parents=True, exist_ok=True)
|
||||
cost_analysis_output_path = output_path / 'cost_analysis'
|
||||
cost_analysis_output_path.mkdir(parents=True, exist_ok=True)
|
||||
# Manage File Path
|
||||
base_path = "./"
|
||||
dir_manager = DirectoryManager(base_path)
|
||||
|
||||
# Input files directory
|
||||
input_files_path = dir_manager.create_directory('input_files')
|
||||
geojson_file_path = input_files_path / 'Lachine_Geojson_Mixed_Use.geojson'
|
||||
pipe_data_file = input_files_path / 'pipe_data.json'
|
||||
|
||||
# Output files directory
|
||||
output_path = dir_manager.create_directory('out_files')
|
||||
|
||||
# Subdirectories for output files
|
||||
energy_plus_output_path = dir_manager.create_directory('out_files/energy_plus_outputs')
|
||||
simulation_results_path = dir_manager.create_directory('out_files/simulation_results')
|
||||
sra_output_path = dir_manager.create_directory('out_files/sra_outputs')
|
||||
cost_analysis_output_path = dir_manager.create_directory('out_files/cost_analysis')
|
||||
|
||||
# Area Under Study
|
||||
location = [45.4934614681437, -73.57982834742518]
|
||||
|
||||
|
||||
# Create geojson of buildings
|
||||
process_geojson(x=location[1], y=location[0], diff=0.001)
|
||||
|
||||
|
||||
# Create ciry and run energyplus workflow
|
||||
city = GeometryFactory(file_type='geojson',
|
||||
path=geojson_file_path,
|
||||
height_field='height',
|
||||
year_of_construction_field='year_of_construction',
|
||||
function_field='function',
|
||||
height_field='maximum_roof_height',
|
||||
year_of_construction_field='year_built',
|
||||
function_field='building_type',
|
||||
function_to_hub=Dictionaries().montreal_function_to_hub_function).city
|
||||
ConstructionFactory('nrcan', city).enrich()
|
||||
UsageFactory('nrcan', city).enrich()
|
||||
WeatherFactory('epw', city).enrich()
|
||||
ExportsFactory('sra', city, sra_output_path).export()
|
||||
sra_path = (sra_output_path / f'{city.name}_sra.xml').resolve()
|
||||
subprocess.run(['sra', str(sra_path)])
|
||||
ResultFactory('sra', city, sra_output_path).enrich()
|
||||
pv_feasibility(-73.5681295982132, 45.49218262677643, 0.0001, selected_buildings=city.buildings)
|
||||
#
|
||||
# # SRA
|
||||
# ExportsFactory('sra', city, output_path).export()
|
||||
# sra_path = (output_path / f'{city.name}_sra.xml').resolve()
|
||||
# subprocess.run(['sra', str(sra_path)])
|
||||
# ResultFactory('sra', city, output_path).enrich()
|
||||
|
||||
# EP Workflow
|
||||
energy_plus_workflow(city, energy_plus_output_path)
|
||||
random_assignation.call_random(city.buildings, random_assignation.residential_systems_percentage)
|
||||
EnergySystemsFactory('montreal_custom', city).enrich()
|
||||
EnergySystemsSizingFactory('peak_load_sizing', city).enrich()
|
||||
current_status_energy_consumption = consumption_data(city)
|
||||
current_status_life_cycle_cost = {}
|
||||
for building in city.buildings:
|
||||
cost_retrofit_scenario = CURRENT_STATUS
|
||||
lcc_dataframe = Cost(building=building,
|
||||
retrofit_scenario=cost_retrofit_scenario,
|
||||
fuel_tariffs=['Electricity-D', 'Gas-Energir']).life_cycle
|
||||
lcc_dataframe.to_csv(cost_analysis_output_path / f'{building.name}_current_status_lcc.csv')
|
||||
current_status_life_cycle_cost[f'{building.name}'] = cost_data(building, lcc_dataframe, cost_retrofit_scenario)
|
||||
random_assignation.call_random(city.buildings, random_assignation.residential_new_systems_percentage)
|
||||
EnergySystemsFactory('montreal_future', city).enrich()
|
||||
EnergySystemsSizingFactory('pv_sizing', city).enrich()
|
||||
EnergySystemsSizingFactory('peak_load_sizing', city).enrich()
|
||||
for building in city.buildings:
|
||||
MontrealEnergySystemArchetypesSimulationFactory(f'archetype_cluster_{building.energy_systems_archetype_cluster_id}',
|
||||
building,
|
||||
simulation_results_path).enrich()
|
||||
retrofitted_energy_consumption = consumption_data(city)
|
||||
retrofitted_life_cycle_cost = {}
|
||||
for building in city.buildings:
|
||||
cost_retrofit_scenario = SYSTEM_RETROFIT_AND_PV
|
||||
lcc_dataframe = Cost(building=building,
|
||||
retrofit_scenario=cost_retrofit_scenario,
|
||||
fuel_tariffs=['Electricity-D', 'Gas-Energir']).life_cycle
|
||||
lcc_dataframe.to_csv(cost_analysis_output_path / f'{building.name}_retrofitted_lcc.csv')
|
||||
retrofitted_life_cycle_cost[f'{building.name}'] = cost_data(building, lcc_dataframe, cost_retrofit_scenario)
|
||||
EnergySystemRetrofitReport(city, output_path, 'PV Implementation and System Retrofit',
|
||||
current_status_energy_consumption, retrofitted_energy_consumption,
|
||||
current_status_life_cycle_cost, retrofitted_life_cycle_cost).create_report()
|
||||
|
||||
|
||||
# District Heating Network Creator
|
||||
central_plant_locations = [(-73.6641097164314, 45.433637169890005)] # Add at least one location
|
||||
|
||||
roads_file = "./input_files/majid.geojson"
|
||||
|
||||
dhn_creator = DistrictHeatingNetworkCreator(geojson_file_path, roads_file, central_plant_locations)
|
||||
|
||||
network_graph = dhn_creator.run()
|
||||
|
||||
|
||||
# Pipe and pump sizing
|
||||
|
||||
with open(pipe_data_file, 'r') as f:
|
||||
pipe_data = json.load(f)
|
||||
|
||||
factory = DistrictHeatingFactory(
|
||||
city=city,
|
||||
graph=network_graph,
|
||||
supply_temperature=80 + 273, # in Kelvin
|
||||
return_temperature=60 + 273, # in Kelvin
|
||||
simultaneity_factor=0.9
|
||||
)
|
||||
|
||||
factory.enrich()
|
||||
factory.sizing()
|
||||
factory.calculate_diameters_and_costs(pipe_data)
|
||||
pipe_groups, total_cost = factory.analyze_costs()
|
||||
|
||||
# Save the pipe groups with total costs to a CSV file
|
||||
factory.save_pipe_groups_to_csv('pipe_groups.csv')
|
||||
|
||||
|
||||
|
||||
|
|
2361
input_files/Dombridge.geojson
Normal file
2361
input_files/Dombridge.geojson
Normal file
File diff suppressed because it is too large
Load Diff
1983
input_files/MACH.geojson
Normal file
1983
input_files/MACH.geojson
Normal file
File diff suppressed because it is too large
Load Diff
621
input_files/MAXX.geojson
Normal file
621
input_files/MAXX.geojson
Normal file
|
@ -0,0 +1,621 @@
|
|||
{
|
||||
"type": "FeatureCollection",
|
||||
"features": [
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66027183456654,
|
||||
45.43682640515838
|
||||
],
|
||||
[
|
||||
-73.65980092076161,
|
||||
45.436935379465496
|
||||
],
|
||||
[
|
||||
-73.65958858851806,
|
||||
45.43699072995751
|
||||
],
|
||||
[
|
||||
-73.6596646362897,
|
||||
45.437135324833925
|
||||
],
|
||||
[
|
||||
-73.65980280828376,
|
||||
45.437135324833925
|
||||
],
|
||||
[
|
||||
-73.65980549164702,
|
||||
45.43741954031219
|
||||
],
|
||||
[
|
||||
-73.66026656265554,
|
||||
45.43741954031219
|
||||
],
|
||||
[
|
||||
-73.66027183456654,
|
||||
45.43682640515838
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 16,
|
||||
"number_of_stories_above_ground": 4,
|
||||
"number_of_stories": 4,
|
||||
"floor_height": 4,
|
||||
"building_type": "mixed use",
|
||||
"name": "Building_366",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 2443.0417281824775,
|
||||
"id": "BuildingB7",
|
||||
"type": "Building",
|
||||
"floor_area": 9772.16691272991,
|
||||
"usages": [
|
||||
{
|
||||
"usage": "6111",
|
||||
"percentage": 25
|
||||
},
|
||||
{
|
||||
"usage": "4413",
|
||||
"percentage": 75
|
||||
}
|
||||
],
|
||||
"area": "BAIN MAXX"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.65950945269662,
|
||||
45.43888004389084
|
||||
],
|
||||
[
|
||||
-73.6591598283532,
|
||||
45.43896421741208
|
||||
],
|
||||
[
|
||||
-73.6593463406809,
|
||||
45.43933186962929
|
||||
],
|
||||
[
|
||||
-73.65950186839818,
|
||||
45.4393030538919
|
||||
],
|
||||
[
|
||||
-73.65950945269662,
|
||||
45.43888004389084
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 16,
|
||||
"number_of_stories_above_ground": 4,
|
||||
"number_of_stories": 4,
|
||||
"floor_height": 4,
|
||||
"building_type": "mixed use",
|
||||
"name": "Building_374",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 907.9995030083592,
|
||||
"id": "BuildingB2",
|
||||
"type": "Building",
|
||||
"floor_area": 3631.9980120334367,
|
||||
"usages": [
|
||||
{
|
||||
"usage": "6111",
|
||||
"percentage": 22
|
||||
},
|
||||
{
|
||||
"usage": "4413",
|
||||
"percentage": 78
|
||||
}
|
||||
],
|
||||
"area": "BAIN MAXX"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.6586465565685,
|
||||
45.43794502009898
|
||||
],
|
||||
[
|
||||
-73.65877820605229,
|
||||
45.43820592631496
|
||||
],
|
||||
[
|
||||
-73.65907725301875,
|
||||
45.43820592631496
|
||||
],
|
||||
[
|
||||
-73.65907725301875,
|
||||
45.438178967489094
|
||||
],
|
||||
[
|
||||
-73.65920582090638,
|
||||
45.438178967489094
|
||||
],
|
||||
[
|
||||
-73.65920582090638,
|
||||
45.43820592631496
|
||||
],
|
||||
[
|
||||
-73.65951490453769,
|
||||
45.43820592631496
|
||||
],
|
||||
[
|
||||
-73.65951864171541,
|
||||
45.43794501706367
|
||||
],
|
||||
[
|
||||
-73.65920581873392,
|
||||
45.4379450182182
|
||||
],
|
||||
[
|
||||
-73.6592058189376,
|
||||
45.437971976604835
|
||||
],
|
||||
[
|
||||
-73.65907725301875,
|
||||
45.437971977079336
|
||||
],
|
||||
[
|
||||
-73.65907725301875,
|
||||
45.43794502035566
|
||||
],
|
||||
[
|
||||
-73.6586465565685,
|
||||
45.43794502009898
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 16,
|
||||
"number_of_stories_above_ground": 4,
|
||||
"number_of_stories": 4,
|
||||
"floor_height": 4,
|
||||
"building_type": 4413,
|
||||
"name": "Building_377",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 1756.5275000615802,
|
||||
"id": "BuildingB8",
|
||||
"type": "Building",
|
||||
"floor_area": 7026.110000246321,
|
||||
"area": "BAIN MAXX"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.65932645417877,
|
||||
45.4370671419759
|
||||
],
|
||||
[
|
||||
-73.65890157746759,
|
||||
45.43729789907689
|
||||
],
|
||||
[
|
||||
-73.65894120771091,
|
||||
45.437333276458844
|
||||
],
|
||||
[
|
||||
-73.65883997788825,
|
||||
45.43738867571641
|
||||
],
|
||||
[
|
||||
-73.65880034764496,
|
||||
45.43735329833445
|
||||
],
|
||||
[
|
||||
-73.65844561006861,
|
||||
45.43754677933583
|
||||
],
|
||||
[
|
||||
-73.65859847737923,
|
||||
45.43784973556784
|
||||
],
|
||||
[
|
||||
-73.65907725082093,
|
||||
45.4376004860529
|
||||
],
|
||||
[
|
||||
-73.65905346577388,
|
||||
45.43757925346323
|
||||
],
|
||||
[
|
||||
-73.65915660532876,
|
||||
45.437525558997784
|
||||
],
|
||||
[
|
||||
-73.65918039037581,
|
||||
45.43754679158746
|
||||
],
|
||||
[
|
||||
-73.65949381251329,
|
||||
45.43738535192706
|
||||
],
|
||||
[
|
||||
-73.65932645417877,
|
||||
45.4370671419759
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 16,
|
||||
"number_of_stories_above_ground": 4,
|
||||
"number_of_stories": 4,
|
||||
"floor_height": 4,
|
||||
"building_type": "mixed use",
|
||||
"name": "Building_367",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 2959.1453306355543,
|
||||
"id": "BuildingB9",
|
||||
"type": "Building",
|
||||
"floor_area": 11836.581322542217,
|
||||
"usages": [
|
||||
{
|
||||
"usage": "6111",
|
||||
"percentage": 25
|
||||
},
|
||||
{
|
||||
"usage": "4413",
|
||||
"percentage": 75
|
||||
}
|
||||
],
|
||||
"area": "BAIN MAXX"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.65978535158648,
|
||||
45.43925053092525
|
||||
],
|
||||
[
|
||||
-73.66024298387394,
|
||||
45.43916574210401
|
||||
],
|
||||
[
|
||||
-73.66024690026592,
|
||||
45.43887926502197
|
||||
],
|
||||
[
|
||||
-73.65978976299151,
|
||||
45.43887926502197
|
||||
],
|
||||
[
|
||||
-73.65978535158648,
|
||||
45.43925053092525
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 16,
|
||||
"number_of_stories_above_ground": 4,
|
||||
"number_of_stories": 4,
|
||||
"floor_height": 4,
|
||||
"building_type": "mixed use",
|
||||
"name": "Building_375",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 1300.4263094531598,
|
||||
"id": "BuildingB1",
|
||||
"type": "Building",
|
||||
"floor_area": 5201.705237812639,
|
||||
"usages": [
|
||||
{
|
||||
"usage": "6111",
|
||||
"percentage": 22
|
||||
},
|
||||
{
|
||||
"usage": "4413",
|
||||
"percentage": 78
|
||||
}
|
||||
],
|
||||
"area": "BAIN MAXX"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.65885600897847,
|
||||
45.438360118085996
|
||||
],
|
||||
[
|
||||
-73.65908668813303,
|
||||
45.43881728376249
|
||||
],
|
||||
[
|
||||
-73.65950948612074,
|
||||
45.4387155014277
|
||||
],
|
||||
[
|
||||
-73.65951434452148,
|
||||
45.438360118085996
|
||||
],
|
||||
[
|
||||
-73.65885600897847,
|
||||
45.438360118085996
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 16,
|
||||
"number_of_stories_above_ground": 4,
|
||||
"number_of_stories": 4,
|
||||
"floor_height": 4,
|
||||
"building_type": "mixed use",
|
||||
"name": "Building_368",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 1950.623916595192,
|
||||
"id": "BuildingB5",
|
||||
"type": "Building",
|
||||
"floor_area": 7802.495666380768,
|
||||
"usages": [
|
||||
{
|
||||
"usage": "4413",
|
||||
"percentage": 71
|
||||
},
|
||||
{
|
||||
"usage": "6591",
|
||||
"percentage": 29
|
||||
}
|
||||
],
|
||||
"area": "BAIN MAXX"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.65915368916939,
|
||||
45.43936756355871
|
||||
],
|
||||
[
|
||||
-73.65897287754876,
|
||||
45.43900922659924
|
||||
],
|
||||
[
|
||||
-73.65832172130257,
|
||||
45.43916599518572
|
||||
],
|
||||
[
|
||||
-73.65835188947426,
|
||||
45.43923721973516
|
||||
],
|
||||
[
|
||||
-73.65822761369208,
|
||||
45.43926024520204
|
||||
],
|
||||
[
|
||||
-73.65820255408917,
|
||||
45.43919468519017
|
||||
],
|
||||
[
|
||||
-73.65774333549116,
|
||||
45.439305243986034
|
||||
],
|
||||
[
|
||||
-73.6578898826934,
|
||||
45.439601718062896
|
||||
],
|
||||
[
|
||||
-73.65832644225709,
|
||||
45.43952083353656
|
||||
],
|
||||
[
|
||||
-73.65830997082959,
|
||||
45.43947740214748
|
||||
],
|
||||
[
|
||||
-73.65843424661176,
|
||||
45.43945437668061
|
||||
],
|
||||
[
|
||||
-73.65845071803926,
|
||||
45.43949780806969
|
||||
],
|
||||
[
|
||||
-73.65915368916939,
|
||||
45.43936756355871
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 16,
|
||||
"number_of_stories_above_ground": 4,
|
||||
"number_of_stories": 4,
|
||||
"floor_height": 4,
|
||||
"building_type": "mixed use",
|
||||
"name": "Building_376",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 3780.178467150601,
|
||||
"id": "BuildingB3",
|
||||
"type": "Building",
|
||||
"floor_area": 15120.713868602405,
|
||||
"usages": [
|
||||
{
|
||||
"usage": "6111",
|
||||
"percentage": 22
|
||||
},
|
||||
{
|
||||
"usage": "4413",
|
||||
"percentage": 78
|
||||
}
|
||||
],
|
||||
"area": "BAIN MAXX"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66025445947743,
|
||||
45.438360118085996
|
||||
],
|
||||
[
|
||||
-73.65979593152835,
|
||||
45.438360118085996
|
||||
],
|
||||
[
|
||||
-73.65979170884093,
|
||||
45.4387155014277
|
||||
],
|
||||
[
|
||||
-73.66024960107669,
|
||||
45.4387155014277
|
||||
],
|
||||
[
|
||||
-73.66025445947743,
|
||||
45.438360118085996
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 16,
|
||||
"number_of_stories_above_ground": 4,
|
||||
"number_of_stories": 4,
|
||||
"floor_height": 4,
|
||||
"building_type": "mixed use",
|
||||
"name": "Building_369",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 1409.4494032830407,
|
||||
"id": "BuildingB4",
|
||||
"type": "Building",
|
||||
"floor_area": 5637.797613132163,
|
||||
"usages": [
|
||||
{
|
||||
"usage": "4413",
|
||||
"percentage": 71
|
||||
},
|
||||
{
|
||||
"usage": "6591",
|
||||
"percentage": 29
|
||||
}
|
||||
],
|
||||
"area": "BAIN MAXX"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66026447427403,
|
||||
45.437593757702075
|
||||
],
|
||||
[
|
||||
-73.65980503747107,
|
||||
45.437593757702075
|
||||
],
|
||||
[
|
||||
-73.65980191509843,
|
||||
45.437840927821476
|
||||
],
|
||||
[
|
||||
-73.6598661965366,
|
||||
45.43784132452748
|
||||
],
|
||||
[
|
||||
-73.65986488161884,
|
||||
45.43794541472223
|
||||
],
|
||||
[
|
||||
-73.65980060018067,
|
||||
45.43794501801622
|
||||
],
|
||||
[
|
||||
-73.65979730426068,
|
||||
45.43820592631496
|
||||
],
|
||||
[
|
||||
-73.6602561053943,
|
||||
45.43820592631496
|
||||
],
|
||||
[
|
||||
-73.6602596335108,
|
||||
45.4379478508912
|
||||
],
|
||||
[
|
||||
-73.6601953520557,
|
||||
45.437947454185085
|
||||
],
|
||||
[
|
||||
-73.66019677505048,
|
||||
45.43784336465734
|
||||
],
|
||||
[
|
||||
-73.6602611322575,
|
||||
45.43784376183094
|
||||
],
|
||||
[
|
||||
-73.66026447427403,
|
||||
45.437593757702075
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 16,
|
||||
"number_of_stories_above_ground": 4,
|
||||
"number_of_stories": 4,
|
||||
"floor_height": 4,
|
||||
"building_type": "mixed use",
|
||||
"name": "Building_370",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 2316.9198841373,
|
||||
"id": "BuildingB6",
|
||||
"type": "Building",
|
||||
"floor_area": 9267.6795365492,
|
||||
"usages": [
|
||||
{
|
||||
"usage": "4413",
|
||||
"percentage": 71
|
||||
},
|
||||
{
|
||||
"usage": "6591",
|
||||
"percentage": 29
|
||||
}
|
||||
],
|
||||
"area": "BAIN MAXX"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
963
input_files/Varin.geojson
Normal file
963
input_files/Varin.geojson
Normal file
|
@ -0,0 +1,963 @@
|
|||
{
|
||||
"type": "FeatureCollection",
|
||||
"features": [
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.6695976944962,
|
||||
45.43335516296276
|
||||
],
|
||||
[
|
||||
-73.66960024279547,
|
||||
45.432530734047525
|
||||
],
|
||||
[
|
||||
-73.66942024880322,
|
||||
45.4325302583109
|
||||
],
|
||||
[
|
||||
-73.66941770326802,
|
||||
45.433353792992946
|
||||
],
|
||||
[
|
||||
-73.6695976944962,
|
||||
45.43335516296276
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 31.999999999999996,
|
||||
"number_of_stories_above_ground": 8,
|
||||
"number_of_stories": 8,
|
||||
"floor_height": 3.9999999999999996,
|
||||
"building_type": 1000,
|
||||
"name": "Building_432",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 1283.7100725430791,
|
||||
"id": "BuildingV8",
|
||||
"type": "Building",
|
||||
"floor_area": 10269.680580344633,
|
||||
"area": "VARIN"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66648692309116,
|
||||
45.43299315240255
|
||||
],
|
||||
[
|
||||
-73.66632685307951,
|
||||
45.432875724577684
|
||||
],
|
||||
[
|
||||
-73.6662869496342,
|
||||
45.432885533312565
|
||||
],
|
||||
[
|
||||
-73.6662314899197,
|
||||
45.432844847905145
|
||||
],
|
||||
[
|
||||
-73.66627139336501,
|
||||
45.43283503917027
|
||||
],
|
||||
[
|
||||
-73.66605577451121,
|
||||
45.43267686055366
|
||||
],
|
||||
[
|
||||
-73.66586395238267,
|
||||
45.43274007194359
|
||||
],
|
||||
[
|
||||
-73.66604809279451,
|
||||
45.433100812915356
|
||||
],
|
||||
[
|
||||
-73.66648692309116,
|
||||
45.43299315240255
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 31.999999999999996,
|
||||
"number_of_stories_above_ground": 8,
|
||||
"number_of_stories": 8,
|
||||
"floor_height": 3.9999999999999996,
|
||||
"building_type": 1000,
|
||||
"name": "Building_437",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 1132.643133031641,
|
||||
"id": "BuildingC71C72",
|
||||
"type": "Building",
|
||||
"floor_area": 9061.145064253142,
|
||||
"area": "CINTUBE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66629596106894,
|
||||
45.43393581468737
|
||||
],
|
||||
[
|
||||
-73.66710397267735,
|
||||
45.43340975213673
|
||||
],
|
||||
[
|
||||
-73.66692397641738,
|
||||
45.43327468829026
|
||||
],
|
||||
[
|
||||
-73.66611659102344,
|
||||
45.43380083110689
|
||||
],
|
||||
[
|
||||
-73.66629137947669,
|
||||
45.4339323350389
|
||||
],
|
||||
[
|
||||
-73.66629596106894,
|
||||
45.43393581468737
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 31.999999999999996,
|
||||
"number_of_stories_above_ground": 8,
|
||||
"number_of_stories": 8,
|
||||
"floor_height": 3.9999999999999996,
|
||||
"building_type": 1000,
|
||||
"name": "Building_438",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 1762.1328271207167,
|
||||
"id": "BuildingC42",
|
||||
"type": "Building",
|
||||
"floor_area": 14097.062616965733,
|
||||
"area": "CINTUBE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66630016267872,
|
||||
45.433181827906395
|
||||
],
|
||||
[
|
||||
-73.66659194009395,
|
||||
45.433395876664555
|
||||
],
|
||||
[
|
||||
-73.66666616625498,
|
||||
45.43334644669076
|
||||
],
|
||||
[
|
||||
-73.66673557085116,
|
||||
45.43339746453596
|
||||
],
|
||||
[
|
||||
-73.66686723112655,
|
||||
45.43331166688867
|
||||
],
|
||||
[
|
||||
-73.66679650050222,
|
||||
45.433259652246115
|
||||
],
|
||||
[
|
||||
-73.66682464757157,
|
||||
45.433240908061016
|
||||
],
|
||||
[
|
||||
-73.66663285326406,
|
||||
45.433100207200695
|
||||
],
|
||||
[
|
||||
-73.66630016267872,
|
||||
45.433181827906395
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 31.999999999999996,
|
||||
"number_of_stories_above_ground": 8,
|
||||
"number_of_stories": 8,
|
||||
"floor_height": 3.9999999999999996,
|
||||
"building_type": 1000,
|
||||
"name": "Building_439",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 792.3225780949724,
|
||||
"id": "BuildingC41",
|
||||
"type": "Building",
|
||||
"floor_area": 6338.580624759779,
|
||||
"area": "CINTUBE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66777119983375,
|
||||
45.43291379849753
|
||||
],
|
||||
[
|
||||
-73.66794163235893,
|
||||
45.43277880685048
|
||||
],
|
||||
[
|
||||
-73.66763418630634,
|
||||
45.432534285118734
|
||||
],
|
||||
[
|
||||
-73.66744119858484,
|
||||
45.432654156485185
|
||||
],
|
||||
[
|
||||
-73.66777119983375,
|
||||
45.43291379849753
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 31.999999999999996,
|
||||
"number_of_stories_above_ground": 8,
|
||||
"number_of_stories": 8,
|
||||
"floor_height": 3.9999999999999996,
|
||||
"building_type": 1000,
|
||||
"name": "Building_440",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 748.011685138903,
|
||||
"id": "BuildingC2",
|
||||
"type": "Building",
|
||||
"floor_area": 5984.093481111224,
|
||||
"area": "CINTUBE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66819794401755,
|
||||
45.43186867295574
|
||||
],
|
||||
[
|
||||
-73.66804117421117,
|
||||
45.43196526756795
|
||||
],
|
||||
[
|
||||
-73.66800714623197,
|
||||
45.431938283882864
|
||||
],
|
||||
[
|
||||
-73.66756485935377,
|
||||
45.43220526910353
|
||||
],
|
||||
[
|
||||
-73.6677330994405,
|
||||
45.43234142634308
|
||||
],
|
||||
[
|
||||
-73.66775286505397,
|
||||
45.43232919625106
|
||||
],
|
||||
[
|
||||
-73.66782879665047,
|
||||
45.432390260560695
|
||||
],
|
||||
[
|
||||
-73.66780944495402,
|
||||
45.432402201569644
|
||||
],
|
||||
[
|
||||
-73.66811035706213,
|
||||
45.43263953554871
|
||||
],
|
||||
[
|
||||
-73.66826963062728,
|
||||
45.432467024254805
|
||||
],
|
||||
[
|
||||
-73.66802200920615,
|
||||
45.432271479585275
|
||||
],
|
||||
[
|
||||
-73.66800234780891,
|
||||
45.43228284176986
|
||||
],
|
||||
[
|
||||
-73.6679250253185,
|
||||
45.43222250053311
|
||||
],
|
||||
[
|
||||
-73.66817288428344,
|
||||
45.43206987204648
|
||||
],
|
||||
[
|
||||
-73.6681473062388,
|
||||
45.43204957976885
|
||||
],
|
||||
[
|
||||
-73.66825137202584,
|
||||
45.43198558294379
|
||||
],
|
||||
[
|
||||
-73.66819794401755,
|
||||
45.43186867295574
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 48,
|
||||
"number_of_stories_above_ground": 12,
|
||||
"number_of_stories": 12,
|
||||
"floor_height": 4,
|
||||
"building_type": 1000,
|
||||
"name": "Building_441",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 1939.1643211467454,
|
||||
"id": "BuildingV21V22",
|
||||
"type": "Building",
|
||||
"floor_area": 23269.971853760944,
|
||||
"area": "VARIN"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66898528166195,
|
||||
45.432805443096115
|
||||
],
|
||||
[
|
||||
-73.66916472638917,
|
||||
45.432804646258106
|
||||
],
|
||||
[
|
||||
-73.66916349367183,
|
||||
45.432327695076836
|
||||
],
|
||||
[
|
||||
-73.66898349941692,
|
||||
45.4323281078871
|
||||
],
|
||||
[
|
||||
-73.66898528166195,
|
||||
45.432805443096115
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 24,
|
||||
"number_of_stories_above_ground": 6,
|
||||
"number_of_stories": 6,
|
||||
"floor_height": 4,
|
||||
"building_type": 1000,
|
||||
"name": "Building_442",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 742.2262415656805,
|
||||
"id": "BuildingV5",
|
||||
"type": "Building",
|
||||
"floor_area": 4453.357449394083,
|
||||
"area": "VARIN"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66559134943027,
|
||||
45.4333842960544
|
||||
],
|
||||
[
|
||||
-73.66571975526693,
|
||||
45.433486126417385
|
||||
],
|
||||
[
|
||||
-73.6661604725183,
|
||||
45.43337800298111
|
||||
],
|
||||
[
|
||||
-73.66610085913331,
|
||||
45.433259295411155
|
||||
],
|
||||
[
|
||||
-73.66559134943027,
|
||||
45.4333842960544
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 24,
|
||||
"number_of_stories_above_ground": 6,
|
||||
"number_of_stories": 6,
|
||||
"floor_height": 4,
|
||||
"building_type": 1000,
|
||||
"name": "Building_443",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 548.3050135533558,
|
||||
"id": "BuildingC6",
|
||||
"type": "Building",
|
||||
"floor_area": 3289.830081320135,
|
||||
"area": "CINTUBE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.668561692655,
|
||||
45.43272452290231
|
||||
],
|
||||
[
|
||||
-73.66881597030792,
|
||||
45.432324936312554
|
||||
],
|
||||
[
|
||||
-73.6686515057645,
|
||||
45.43227380894239
|
||||
],
|
||||
[
|
||||
-73.66843060658469,
|
||||
45.432620946767024
|
||||
],
|
||||
[
|
||||
-73.668561692655,
|
||||
45.43272452290231
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 24,
|
||||
"number_of_stories_above_ground": 6,
|
||||
"number_of_stories": 6,
|
||||
"floor_height": 4,
|
||||
"building_type": 1000,
|
||||
"name": "Building_444",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 636.6193997243245,
|
||||
"id": "BuildingV6",
|
||||
"type": "Building",
|
||||
"floor_area": 3819.716398345947,
|
||||
"area": "VARIN"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.6684107088873,
|
||||
45.43260529773849
|
||||
],
|
||||
[
|
||||
-73.66825696634365,
|
||||
45.43275505829395
|
||||
],
|
||||
[
|
||||
-73.66855993403234,
|
||||
45.43299429839817
|
||||
],
|
||||
[
|
||||
-73.66875110847464,
|
||||
45.43287409614764
|
||||
],
|
||||
[
|
||||
-73.6684107088873,
|
||||
45.43260529773849
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 24,
|
||||
"number_of_stories_above_ground": 6,
|
||||
"number_of_stories": 6,
|
||||
"floor_height": 4,
|
||||
"building_type": 1000,
|
||||
"name": "Building_445",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 755.0037339057599,
|
||||
"id": "BuildingV7",
|
||||
"type": "Building",
|
||||
"floor_area": 4530.022403434559,
|
||||
"area": "VARIN"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66523035916975,
|
||||
45.43344428835361
|
||||
],
|
||||
[
|
||||
-73.66558718585024,
|
||||
45.433725662980414
|
||||
],
|
||||
[
|
||||
-73.66560646249896,
|
||||
45.43371372054428
|
||||
],
|
||||
[
|
||||
-73.6656917418297,
|
||||
45.43378096950345
|
||||
],
|
||||
[
|
||||
-73.66567246673941,
|
||||
45.43379291097411
|
||||
],
|
||||
[
|
||||
-73.6660489787878,
|
||||
45.43408980779488
|
||||
],
|
||||
[
|
||||
-73.66629137947669,
|
||||
45.4339323350389
|
||||
],
|
||||
[
|
||||
-73.66611658917947,
|
||||
45.43380082971957
|
||||
],
|
||||
[
|
||||
-73.66556383389526,
|
||||
45.43336247526904
|
||||
],
|
||||
[
|
||||
-73.66523035916975,
|
||||
45.43344428835361
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 31.999999999999996,
|
||||
"number_of_stories_above_ground": 8,
|
||||
"number_of_stories": 8,
|
||||
"floor_height": 3.9999999999999996,
|
||||
"building_type": 1000,
|
||||
"name": "Building_446",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 2278.027963784494,
|
||||
"id": "BuildingC52",
|
||||
"type": "Building",
|
||||
"floor_area": 18224.223710275997,
|
||||
"area": "CINTUBE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66826976340244,
|
||||
45.43246688044427
|
||||
],
|
||||
[
|
||||
-73.6684431234713,
|
||||
45.432207191678195
|
||||
],
|
||||
[
|
||||
-73.66827958361108,
|
||||
45.43215461639845
|
||||
],
|
||||
[
|
||||
-73.66814405056857,
|
||||
45.432367606017834
|
||||
],
|
||||
[
|
||||
-73.66826976340244,
|
||||
45.43246688044427
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 16,
|
||||
"number_of_stories_above_ground": 4,
|
||||
"number_of_stories": 4,
|
||||
"floor_height": 4,
|
||||
"building_type": 1000,
|
||||
"name": "Building_447",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 397.34580822650605,
|
||||
"id": "BuildingV3",
|
||||
"type": "Building",
|
||||
"floor_area": 1589.3832329060242,
|
||||
"area": "VARIN"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66478481369315,
|
||||
45.4331999405812
|
||||
],
|
||||
[
|
||||
-73.66486641573151,
|
||||
45.4333624124384
|
||||
],
|
||||
[
|
||||
-73.66493012111978,
|
||||
45.43334678530579
|
||||
],
|
||||
[
|
||||
-73.66495552903392,
|
||||
45.43339738198849
|
||||
],
|
||||
[
|
||||
-73.66545538522467,
|
||||
45.43327479625445
|
||||
],
|
||||
[
|
||||
-73.66542923451642,
|
||||
45.43322270281657
|
||||
],
|
||||
[
|
||||
-73.66602930406131,
|
||||
45.43307548268369
|
||||
],
|
||||
[
|
||||
-73.66594975277539,
|
||||
45.43291410222965
|
||||
],
|
||||
[
|
||||
-73.66478481369315,
|
||||
45.4331999405812
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 4,
|
||||
"number_of_stories_above_ground": 1,
|
||||
"number_of_stories": 1,
|
||||
"floor_height": 4,
|
||||
"building_type": 1000,
|
||||
"name": "Building_448",
|
||||
"year_built": 2019,
|
||||
"footprint_area": 2076.7223687399237,
|
||||
"id": "Building104",
|
||||
"type": "Building",
|
||||
"floor_area": 2076.7223687399237,
|
||||
"area": "CINTUBE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66687523305983,
|
||||
45.43300569788887
|
||||
],
|
||||
[
|
||||
-73.66704845294669,
|
||||
45.43312925943825
|
||||
],
|
||||
[
|
||||
-73.66724401867715,
|
||||
45.43327505802548
|
||||
],
|
||||
[
|
||||
-73.66769630737754,
|
||||
45.432975018696354
|
||||
],
|
||||
[
|
||||
-73.66747581970738,
|
||||
45.432811552149246
|
||||
],
|
||||
[
|
||||
-73.66721111358372,
|
||||
45.432987152927446
|
||||
],
|
||||
[
|
||||
-73.66706730008384,
|
||||
45.4328863982505
|
||||
],
|
||||
[
|
||||
-73.66687523305983,
|
||||
45.43300569788887
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 31.999999999999996,
|
||||
"number_of_stories_above_ground": 8,
|
||||
"number_of_stories": 8,
|
||||
"floor_height": 3.9999999999999996,
|
||||
"building_type": "mixed use",
|
||||
"name": "Building_433",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 1535.5010229039326,
|
||||
"id": "BuildingC12C11",
|
||||
"type": "Building",
|
||||
"floor_area": 12284.00818323146,
|
||||
"usages": [
|
||||
{
|
||||
"usage": "6111",
|
||||
"percentage": 15
|
||||
},
|
||||
{
|
||||
"usage": "1000",
|
||||
"percentage": 85
|
||||
}
|
||||
],
|
||||
"area": "CINTUBE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66870958267681,
|
||||
45.432179123945076
|
||||
],
|
||||
[
|
||||
-73.66887583321109,
|
||||
45.432232570660354
|
||||
],
|
||||
[
|
||||
-73.66916353210719,
|
||||
45.43223257066049
|
||||
],
|
||||
[
|
||||
-73.66916407405287,
|
||||
45.431945627832995
|
||||
],
|
||||
[
|
||||
-73.66887548077842,
|
||||
45.431945926632814
|
||||
],
|
||||
[
|
||||
-73.66870958267681,
|
||||
45.432179123945076
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 24,
|
||||
"number_of_stories_above_ground": 6,
|
||||
"number_of_stories": 6,
|
||||
"floor_height": 4,
|
||||
"building_type": "mixed use",
|
||||
"name": "Building_434",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 921.4234756113219,
|
||||
"id": "BuildingV41V42",
|
||||
"type": "Building",
|
||||
"floor_area": 5528.5408536679315,
|
||||
"usages": [
|
||||
{
|
||||
"usage": "6111",
|
||||
"percentage": 21
|
||||
},
|
||||
{
|
||||
"usage": "1000",
|
||||
"percentage": 79
|
||||
}
|
||||
],
|
||||
"area": "VARIN"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66671707646795,
|
||||
45.43262783473566
|
||||
],
|
||||
[
|
||||
-73.66685886651642,
|
||||
45.432581110480704
|
||||
],
|
||||
[
|
||||
-73.6668862801576,
|
||||
45.432621751492384
|
||||
],
|
||||
[
|
||||
-73.66725575717793,
|
||||
45.432499997260074
|
||||
],
|
||||
[
|
||||
-73.6673362319882,
|
||||
45.43256349177961
|
||||
],
|
||||
[
|
||||
-73.66752392585083,
|
||||
45.43244732020689
|
||||
],
|
||||
[
|
||||
-73.66727006379638,
|
||||
45.432246909463274
|
||||
],
|
||||
[
|
||||
-73.66674921195168,
|
||||
45.432418546433944
|
||||
],
|
||||
[
|
||||
-73.6667870120313,
|
||||
45.43247563465473
|
||||
],
|
||||
[
|
||||
-73.66659568493438,
|
||||
45.432538682916395
|
||||
],
|
||||
[
|
||||
-73.66655833369327,
|
||||
45.432511251587385
|
||||
],
|
||||
[
|
||||
-73.6663128232714,
|
||||
45.43259215494888
|
||||
],
|
||||
[
|
||||
-73.66675709111809,
|
||||
45.432922821917856
|
||||
],
|
||||
[
|
||||
-73.66695200967966,
|
||||
45.43280195609688
|
||||
],
|
||||
[
|
||||
-73.66671707646795,
|
||||
45.43262783473566
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 44,
|
||||
"number_of_stories_above_ground": 11,
|
||||
"number_of_stories": 11,
|
||||
"floor_height": 4,
|
||||
"building_type": 1000,
|
||||
"name": "Building_435",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 2485.3035762150394,
|
||||
"id": "BuildingC32C31C33",
|
||||
"type": "Building",
|
||||
"floor_area": 27338.339338365433,
|
||||
"area": "CINTUBE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"geometry": {
|
||||
"coordinates": [
|
||||
[
|
||||
[
|
||||
-73.66855504604872,
|
||||
45.43177302438879
|
||||
],
|
||||
[
|
||||
-73.66819134139887,
|
||||
45.43185422525132
|
||||
],
|
||||
[
|
||||
-73.66826818123967,
|
||||
45.43202236449439
|
||||
],
|
||||
[
|
||||
-73.66852125151473,
|
||||
45.43210372227767
|
||||
],
|
||||
[
|
||||
-73.66863632927094,
|
||||
45.43195088654097
|
||||
],
|
||||
[
|
||||
-73.66855504604872,
|
||||
45.43177302438879
|
||||
]
|
||||
]
|
||||
],
|
||||
"type": "Polygon"
|
||||
},
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"maximum_roof_height": 60,
|
||||
"number_of_stories_above_ground": 15,
|
||||
"number_of_stories": 15,
|
||||
"floor_height": 4,
|
||||
"building_type": "mixed use",
|
||||
"name": "Building_436",
|
||||
"year_built": 2024,
|
||||
"footprint_area": 808.0809936788719,
|
||||
"id": "BuildingV11V12",
|
||||
"type": "Building",
|
||||
"floor_area": 12121.214905183078,
|
||||
"usages": [
|
||||
{
|
||||
"usage": "6111",
|
||||
"percentage": 9
|
||||
},
|
||||
{
|
||||
"usage": "1000",
|
||||
"percentage": 91
|
||||
}
|
||||
],
|
||||
"area": "VARIN"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
122
input_files/pipe_data.json
Normal file
122
input_files/pipe_data.json
Normal file
|
@ -0,0 +1,122 @@
|
|||
[
|
||||
{
|
||||
"DN": 16,
|
||||
"inner_diameter": 16.1,
|
||||
"cost_per_meter": 320
|
||||
},
|
||||
{
|
||||
"DN": 20,
|
||||
"inner_diameter": 21.7,
|
||||
"cost_per_meter": 320
|
||||
},
|
||||
{
|
||||
"DN": 25,
|
||||
"inner_diameter": 27.3,
|
||||
"cost_per_meter": 320
|
||||
},
|
||||
{
|
||||
"DN": 30,
|
||||
"inner_diameter": 32.5,
|
||||
"cost_per_meter": 350
|
||||
},
|
||||
{
|
||||
"DN": 32,
|
||||
"inner_diameter": 37.2,
|
||||
"cost_per_meter": 350
|
||||
},
|
||||
{
|
||||
"DN": 40,
|
||||
"inner_diameter": 43.1,
|
||||
"cost_per_meter": 375
|
||||
},
|
||||
{
|
||||
"DN": 50,
|
||||
"inner_diameter": 54.5,
|
||||
"cost_per_meter": 400
|
||||
},
|
||||
{
|
||||
"DN": 60,
|
||||
"inner_diameter": 65.0,
|
||||
"cost_per_meter": 450
|
||||
},
|
||||
{
|
||||
"DN": 65,
|
||||
"inner_diameter": 70.3,
|
||||
"cost_per_meter": 450
|
||||
},
|
||||
{
|
||||
"DN": 70,
|
||||
"inner_diameter": 75.0,
|
||||
"cost_per_meter": 450
|
||||
},
|
||||
{
|
||||
"DN": 80,
|
||||
"inner_diameter": 82.5,
|
||||
"cost_per_meter": 480
|
||||
},
|
||||
{
|
||||
"DN": 90,
|
||||
"inner_diameter": 100.8,
|
||||
"cost_per_meter": 480
|
||||
},
|
||||
{
|
||||
"DN": 100,
|
||||
"inner_diameter": 107.1,
|
||||
"cost_per_meter": 550
|
||||
},
|
||||
{
|
||||
"DN": 110,
|
||||
"inner_diameter": 120.0,
|
||||
"cost_per_meter": 550
|
||||
},
|
||||
{
|
||||
"DN": 120,
|
||||
"inner_diameter": 125.0,
|
||||
"cost_per_meter": 550
|
||||
},
|
||||
{
|
||||
"DN": 125,
|
||||
"inner_diameter": 132.5,
|
||||
"cost_per_meter": 630
|
||||
},
|
||||
{
|
||||
"DN": 130,
|
||||
"inner_diameter": 140.0,
|
||||
"cost_per_meter": 630
|
||||
},
|
||||
{
|
||||
"DN": 140,
|
||||
"inner_diameter": 151.0,
|
||||
"cost_per_meter": 630
|
||||
},
|
||||
{
|
||||
"DN": 150,
|
||||
"inner_diameter": 160.3,
|
||||
"cost_per_meter": 700
|
||||
},
|
||||
{
|
||||
"DN": 160,
|
||||
"inner_diameter": 170.0,
|
||||
"cost_per_meter": 700
|
||||
},
|
||||
{
|
||||
"DN": 170,
|
||||
"inner_diameter": 180.0,
|
||||
"cost_per_meter": 700
|
||||
},
|
||||
{
|
||||
"DN": 180,
|
||||
"inner_diameter": 190.0,
|
||||
"cost_per_meter": 700
|
||||
},
|
||||
{
|
||||
"DN": 190,
|
||||
"inner_diameter": 200.0,
|
||||
"cost_per_meter": 700
|
||||
},
|
||||
{
|
||||
"DN": 200,
|
||||
"inner_diameter": 210.1,
|
||||
"cost_per_meter": 860
|
||||
}
|
||||
]
|
1795
input_files/roads.json
Normal file
1795
input_files/roads.json
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -1,41 +1,41 @@
|
|||
Processing Schedule Input -- Start
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 33-commercial_67-warehouse.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 33-commercial_67-warehouse.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 33-commercial_67-warehouse.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 16-commercial_84-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 16-commercial_84-residential.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 16-commercial_84-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 25-commercial_75-warehouse.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 25-commercial_75-warehouse.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 25-commercial_75-warehouse.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 22-commercial_78-warehouse.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 22-commercial_78-warehouse.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 22-commercial_78-warehouse.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 100-warehouse.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 100-warehouse.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 100-warehouse.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 15-commercial_46-warehouse_39-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 15-commercial_46-warehouse_39-office and administration.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 15-commercial_46-warehouse_39-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 71-warehouse_29-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 71-warehouse_29-office and administration.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 71-warehouse_29-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 75-warehouse_25-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 75-warehouse_25-office and administration.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 75-warehouse_25-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 100-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 100-residential.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 100-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 100-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 100-office and administration.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 100-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 15-commercial_85-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 15-commercial_85-residential.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 15-commercial_85-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 21-commercial_79-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 21-commercial_79-residential.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 21-commercial_79-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 9-commercial_91-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 9-commercial_91-residential.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 9-commercial_91-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 33-commercial_33-warehouse_33-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 33-commercial_33-warehouse_33-office and administration.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 33-commercial_33-warehouse_33-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 8-commercial_92-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 8-commercial_92-residential.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 8-commercial_92-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 6-commercial_94-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 6-commercial_94-residential.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 6-commercial_94-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 67-warehouse_33-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 67-warehouse_33-office and administration.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 67-warehouse_33-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 50-warehouse_50-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 50-warehouse_50-office and administration.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 50-warehouse_50-office and administration.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp7ivpaqop\cold_temp schedules 18-commercial_82-residential.csv
|
||||
not found (Current Working Directory)=C:\Users\ab_reza\AppData\Local\Temp\tmp3nu1pbf5\cold_temp schedules 18-commercial_82-residential.csv
|
||||
found (IDF Directory)=C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\cold_temp schedules 18-commercial_82-residential.csv
|
||||
Processing Schedule Input -- Complete
|
||||
MonthlyInputCount= 2
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Program Version,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.09.24 22:17
|
||||
Program Version,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.10.17 15:57
|
||||
! This file shows details about the branches, nodes, and other
|
||||
! elements of the flow connections.
|
||||
! This file is intended for use in "debugging" potential problems
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Program Version,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.09.24 22:17
|
||||
Program Version,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.10.17 15:57
|
||||
! <Version>, Version ID
|
||||
Version, 23.2
|
||||
! <Timesteps per Hour>, #TimeSteps, Minutes per TimeStep {minutes}
|
||||
|
|
|
@ -1 +1 @@
|
|||
EnergyPlus Completed Successfully-- 160 Warning; 0 Severe Errors; Elapsed Time=00hr 01min 37.44sec
|
||||
EnergyPlus Completed Successfully-- 160 Warning; 0 Severe Errors; Elapsed Time=00hr 02min 21.30sec
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Program Version,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.09.24 22:17,
|
||||
Program Version,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.10.17 15:57,
|
||||
** Warning ** GetHTSurfaceData: Surfaces with interface to Ground found but no "Ground Temperatures" were input.
|
||||
** ~~~ ** Found first in surface=BUILDING_BUILDING10A_SURFACE_0
|
||||
** ~~~ ** Defaults, constant throughout the year of (18.0) will be used.
|
||||
|
@ -428,4 +428,4 @@ Program Version,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.09.24 22:17,
|
|||
*************
|
||||
************* EnergyPlus Warmup Error Summary. During Warmup: 0 Warning; 0 Severe Errors.
|
||||
************* EnergyPlus Sizing Error Summary. During Sizing: 0 Warning; 0 Severe Errors.
|
||||
************* EnergyPlus Completed Successfully-- 160 Warning; 0 Severe Errors; Elapsed Time=00hr 01min 37.44sec
|
||||
************* EnergyPlus Completed Successfully-- 160 Warning; 0 Severe Errors; Elapsed Time=00hr 02min 21.30sec
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Program Version,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.09.24 22:17
|
||||
Program Version,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.10.17 15:57
|
||||
1,5,Environment Title[],Latitude[deg],Longitude[deg],Time Zone[],Elevation[m]
|
||||
2,8,Day of Simulation[],Month[],Day of Month[],DST Indicator[1=yes 0=no],Hour[],StartMinute[],EndMinute[],DayType
|
||||
3,5,Cumulative Day of Simulation[],Month[],Day of Month[],DST Indicator[1=yes 0=no],DayType ! When Daily Report Variables Requested
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Program Version,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.09.24 22:17
|
||||
Program Version,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.10.17 15:57
|
||||
1,5,Environment Title[],Latitude[deg],Longitude[deg],Time Zone[],Elevation[m]
|
||||
2,8,Day of Simulation[],Month[],Day of Month[],DST Indicator[1=yes 0=no],Hour[],StartMinute[],EndMinute[],DayType
|
||||
3,5,Cumulative Day of Simulation[],Month[],Day of Month[],DST Indicator[1=yes 0=no],DayType ! When Daily Meters Requested
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
ReadVarsESO
|
||||
processing:C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\Cote-Saint-Luc_dd62c9.rvi
|
||||
processing:C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\Cote-Saint-Luc_21f119.rvi
|
||||
input file:C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\Cote-Saint-Luc_out.eso
|
||||
output file:C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\Cote-Saint-Luc_out.csv
|
||||
getting all vars from:C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\Cote-Saint-Luc_out.eso
|
||||
number variables requested for output= 498
|
||||
ReadVars Run Time=00hr 00min 7.50sec
|
||||
ReadVars Run Time=00hr 00min 4.06sec
|
||||
ReadVarsESO program completed successfully.
|
||||
ReadVarsESO
|
||||
processing:C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\Cote-Saint-Luc_dd62c9.mvi
|
||||
processing:C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\Cote-Saint-Luc_21f119.mvi
|
||||
input file:C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\Cote-Saint-Luc_out.mtr
|
||||
output file:C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\Cote-Saint-Luc_mtr.csv
|
||||
getting all vars from:C:\Users\ab_reza\Majid\Concordia\Repositories\energy_system_modelling_workflow\out_files\energy_plus_outputs\Cote-Saint-Luc_out.mtr
|
||||
number variables requested for output= 3
|
||||
ReadVars Run Time=00hr 00min 0.14sec
|
||||
ReadVars Run Time=00hr 00min 0.06sec
|
||||
ReadVarsESO program completed successfully.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Program Version:,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.09.24 22:17
|
||||
Program Version:,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.10.17 15:57
|
||||
Tabular Output Report in Format: ,Comma
|
||||
|
||||
Building:,Buildings in b'Cote-Saint-Luc'
|
||||
|
@ -488,7 +488,7 @@ FOR:,Entire Facility
|
|||
General
|
||||
|
||||
,,Value
|
||||
,Program Version and Build,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.09.24 22:17
|
||||
,Program Version and Build,EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.10.17 15:57
|
||||
,RunPeriod,RUN PERIOD 1
|
||||
,Weather File,Montreal Int'l PQ CAN WYEC2-B-94792 WMO#=716270
|
||||
,Latitude [deg],45.47
|
||||
|
|
|
|
@ -2,27 +2,27 @@
|
|||
<html>
|
||||
<head>
|
||||
<title> Buildings in b'Cote-Saint-Luc' RUN PERIOD 1 ** Montreal Int'l PQ CAN WYEC2-B-94792 WMO#=716270
|
||||
2024-09-24
|
||||
22:17:09
|
||||
2024-10-17
|
||||
15:57:09
|
||||
- EnergyPlus</title>
|
||||
</head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<body>
|
||||
<p><a href="#toc" style="float: right">Table of Contents</a></p>
|
||||
<a name=top></a>
|
||||
<p>Program Version:<b>EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.09.24 22:17</b></p>
|
||||
<p>Program Version:<b>EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.10.17 15:57</b></p>
|
||||
<p>Tabular Output Report in Format: <b>HTML</b></p>
|
||||
<p>Building: <b>Buildings in b'Cote-Saint-Luc'</b></p>
|
||||
<p>Environment: <b>RUN PERIOD 1 ** Montreal Int'l PQ CAN WYEC2-B-94792 WMO#=716270</b></p>
|
||||
<p>Simulation Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Simulation Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<hr>
|
||||
<p><a href="#toc" style="float: right">Table of Contents</a></p>
|
||||
<a name=AnnualBuildingUtilityPerformanceSummary::EntireFacility></a>
|
||||
<p>Report:<b> Annual Building Utility Performance Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>Values gathered over 8760.00 hours</b><br><br>
|
||||
<b></b><br><br>
|
||||
<b>Site and Source Energy</b><br><br>
|
||||
|
@ -6709,8 +6709,8 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=InputVerificationandResultsSummary::EntireFacility></a>
|
||||
<p>Report:<b> Input Verification and Results Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>General</b><br><br>
|
||||
<!-- FullName:Input Verification and Results Summary_Entire Facility_General-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
@ -6719,7 +6719,7 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
</tr>
|
||||
<tr>
|
||||
<td align="right">Program Version and Build</td>
|
||||
<td align="right">EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.09.24 22:17</td>
|
||||
<td align="right">EnergyPlus, Version 23.2.0-7636e6b3e9, YMD=2024.10.17 15:57</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">RunPeriod</td>
|
||||
|
@ -9948,8 +9948,8 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=DemandEndUseComponentsSummary::EntireFacility></a>
|
||||
<p>Report:<b> Demand End Use Components Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>End Uses</b><br><br>
|
||||
<!-- FullName:Demand End Use Components Summary_Entire Facility_End Uses-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
@ -15831,15 +15831,15 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=ComponentSizingSummary::EntireFacility></a>
|
||||
<p>Report:<b> Component Sizing Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<hr>
|
||||
<p><a href="#toc" style="float: right">Table of Contents</a></p>
|
||||
<a name=AdaptiveComfortSummary::EntireFacility></a>
|
||||
<p>Report:<b> Adaptive Comfort Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>Time Not Meeting the Adaptive Comfort Models during Occupied Hours</b><br><br>
|
||||
<!-- FullName:Adaptive Comfort Summary_Entire Facility_Time Not Meeting the Adaptive Comfort Models during Occupied Hours-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
@ -15857,8 +15857,8 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=ClimaticDataSummary::EntireFacility></a>
|
||||
<p>Report:<b> Climatic Data Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>SizingPeriod:DesignDay</b><br><br>
|
||||
<!-- FullName:Climatic Data Summary_Entire Facility_SizingPeriod:DesignDay-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
@ -16006,8 +16006,8 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=EnvelopeSummary::EntireFacility></a>
|
||||
<p>Report:<b> Envelope Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>Opaque Exterior</b><br><br>
|
||||
<!-- FullName:Envelope Summary_Entire Facility_Opaque Exterior-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
@ -42863,8 +42863,8 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=LightingSummary::EntireFacility></a>
|
||||
<p>Report:<b> Lighting Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>Interior Lighting</b><br><br>
|
||||
<!-- FullName:Lighting Summary_Entire Facility_Interior Lighting-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
@ -44639,8 +44639,8 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=EquipmentSummary::EntireFacility></a>
|
||||
<p>Report:<b> Equipment Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>Central Plant</b><br><br>
|
||||
<!-- FullName:Equipment Summary_Entire Facility_Central Plant-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
@ -45152,8 +45152,8 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=HVACSizingSummary::EntireFacility></a>
|
||||
<p>Report:<b> HVAC Sizing Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>Space Sensible Cooling</b><br><br>
|
||||
<!-- FullName:HVAC Sizing Summary_Entire Facility_Space Sensible Cooling-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
@ -45443,8 +45443,8 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=SystemSummary::EntireFacility></a>
|
||||
<p>Report:<b> System Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>Economizer</b><br><br>
|
||||
<!-- FullName:System Summary_Entire Facility_Economizer-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
@ -46827,8 +46827,8 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=OutdoorAirSummary::EntireFacility></a>
|
||||
<p>Report:<b> Outdoor Air Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>Average Outdoor Air During Occupied Hours</b><br><br>
|
||||
<!-- FullName:Outdoor Air Summary_Entire Facility_Average Outdoor Air During Occupied Hours-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
@ -48844,8 +48844,8 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=ObjectCountSummary::EntireFacility></a>
|
||||
<p>Report:<b> Object Count Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>Surfaces by Class</b><br><br>
|
||||
<!-- FullName:Object Count Summary_Entire Facility_Surfaces by Class-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
@ -48994,8 +48994,8 @@ Note 1: An asterisk (*) indicates that the feature is not yet implemented.<br>
|
|||
<a name=SensibleHeatGainSummary::EntireFacility></a>
|
||||
<p>Report:<b> Sensible Heat Gain Summary</b></p>
|
||||
<p>For:<b> Entire Facility</b></p>
|
||||
<p>Timestamp: <b>2024-09-24
|
||||
22:17:09</b></p>
|
||||
<p>Timestamp: <b>2024-10-17
|
||||
15:57:09</b></p>
|
||||
<b>Annual Building Sensible Heat Gain Components</b><br><br>
|
||||
<!-- FullName:Sensible Heat Gain Summary_Entire Facility_Annual Building Sensible Heat Gain Components-->
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
|
|
|
@ -84,7 +84,7 @@ class DistrictHeatingNetworkCreator:
|
|||
building_polygon = Polygon(coordinates)
|
||||
centroid = building_polygon.centroid
|
||||
self.centroids.append(centroid)
|
||||
self.building_names.append(str(building['id']))
|
||||
self.building_names.append(str(building['properties']['id']))
|
||||
self.building_positions.append((centroid.x, centroid.y))
|
||||
|
||||
# Add central plant locations as centroids
|
||||
|
|
146
varin.py
Normal file
146
varin.py
Normal file
|
@ -0,0 +1,146 @@
|
|||
from scripts.district_heating_network.directory_manager import DirectoryManager
|
||||
import subprocess
|
||||
from building_modelling.ep_run_enrich import energy_plus_workflow
|
||||
from hub.imports.geometry_factory import GeometryFactory
|
||||
from hub.helpers.dictionaries import Dictionaries
|
||||
from hub.imports.construction_factory import ConstructionFactory
|
||||
from hub.imports.usage_factory import UsageFactory
|
||||
from hub.imports.weather_factory import WeatherFactory
|
||||
from hub.imports.results_factory import ResultFactory
|
||||
from building_modelling.geojson_creator import process_geojson
|
||||
import hub.helpers.constants as cte
|
||||
from hub.exports.exports_factory import ExportsFactory
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from scripts.district_heating_network.district_heating_network_creator import DistrictHeatingNetworkCreator
|
||||
from scripts.district_heating_network.district_heating_factory import DistrictHeatingFactory
|
||||
import json
|
||||
|
||||
# Manage File Path
|
||||
base_path = "./"
|
||||
dir_manager = DirectoryManager(base_path)
|
||||
|
||||
# Input files directory
|
||||
input_files_path = dir_manager.create_directory('input_files')
|
||||
geojson_file_path = input_files_path / 'Varin.geojson'
|
||||
pipe_data_file = input_files_path / 'pipe_data.json'
|
||||
|
||||
# Output files directory
|
||||
output_path = dir_manager.create_directory('out_files')
|
||||
|
||||
# Subdirectories for output files
|
||||
energy_plus_output_path = dir_manager.create_directory('out_files/energy_plus_outputs')
|
||||
simulation_results_path = dir_manager.create_directory('out_files/simulation_results')
|
||||
sra_output_path = dir_manager.create_directory('out_files/sra_outputs')
|
||||
cost_analysis_output_path = dir_manager.create_directory('out_files/cost_analysis')
|
||||
# Create ciry and run energyplus workflow
|
||||
city = GeometryFactory(file_type='geojson',
|
||||
path=geojson_file_path,
|
||||
height_field='maximum_roof_height',
|
||||
year_of_construction_field='year_built',
|
||||
function_field='building_type',
|
||||
function_to_hub=Dictionaries().montreal_function_to_hub_function).city
|
||||
ConstructionFactory('nrcan', city).enrich()
|
||||
UsageFactory('nrcan', city).enrich()
|
||||
WeatherFactory('epw', city).enrich()
|
||||
|
||||
# energy_plus_workflow(city, energy_plus_output_path)
|
||||
ResultFactory('energy_plus_multiple_buildings', city, energy_plus_output_path).enrich()
|
||||
|
||||
# District Heating Network Creator
|
||||
central_plant_locations = [(-73.6641097164314, 45.433637169890005)] # Add at least one location
|
||||
|
||||
roads_file = "input_files/roads.json"
|
||||
|
||||
dhn_creator = DistrictHeatingNetworkCreator(geojson_file_path, roads_file, central_plant_locations)
|
||||
|
||||
network_graph = dhn_creator.run()
|
||||
|
||||
|
||||
# Pipe and pump sizing
|
||||
|
||||
with open(pipe_data_file, 'r') as f:
|
||||
pipe_data = json.load(f)
|
||||
|
||||
factory = DistrictHeatingFactory(
|
||||
city=city,
|
||||
graph=network_graph,
|
||||
supply_temperature=80 + 273, # in Kelvin
|
||||
return_temperature=60 + 273, # in Kelvin
|
||||
simultaneity_factor=0.9
|
||||
)
|
||||
|
||||
factory.enrich()
|
||||
factory.sizing()
|
||||
factory.calculate_diameters_and_costs(pipe_data)
|
||||
pipe_groups, total_cost = factory.analyze_costs()
|
||||
|
||||
# Save the pipe groups with total costs to a CSV file
|
||||
factory.save_pipe_groups_to_csv('pipe_groups.csv')
|
||||
|
||||
import json
|
||||
import matplotlib.pyplot as plt
|
||||
import networkx as nx
|
||||
from shapely.geometry import shape, Polygon, MultiPolygon
|
||||
from shapely.validation import explain_validity
|
||||
|
||||
# Load the GeoJSON file
|
||||
with open("input_files/Varin.geojson", "r") as file:
|
||||
geojson_data = json.load(file)
|
||||
|
||||
# Initialize a figure
|
||||
fig, ax = plt.subplots(figsize=(15, 10))
|
||||
# Set aspect to equal
|
||||
ax.set_aspect('equal')
|
||||
|
||||
# Set figure and axes backgrounds to transparent
|
||||
fig.patch.set_facecolor('none')
|
||||
ax.set_facecolor('none')
|
||||
|
||||
# Iterate over each feature in the GeoJSON
|
||||
for feature in geojson_data['features']:
|
||||
geom = shape(feature['geometry'])
|
||||
|
||||
# Check if the geometry is valid
|
||||
if not geom.is_valid:
|
||||
print(f"Invalid geometry: {explain_validity(geom)}")
|
||||
continue # Skip invalid geometries
|
||||
|
||||
# Plot polygons
|
||||
if isinstance(geom, Polygon):
|
||||
x, y = geom.exterior.xy
|
||||
ax.plot(x, y, color='black', linewidth=1) # Plot only the edges
|
||||
elif isinstance(geom, MultiPolygon):
|
||||
for poly in geom.geoms:
|
||||
x, y = poly.exterior.xy
|
||||
ax.plot(x, y, color='black', linewidth=1) # Plot only the edges
|
||||
else:
|
||||
print(f"Unhandled geometry type: {type(geom)}")
|
||||
continue
|
||||
|
||||
# Prepare and plot the network graph
|
||||
G = network_graph
|
||||
|
||||
# Get positions from node attributes
|
||||
pos = nx.get_node_attributes(G, 'pos')
|
||||
|
||||
# Draw nodes, using different colors based on node type
|
||||
node_types = nx.get_node_attributes(G, 'type')
|
||||
colors = {'building': 'blue', 'generation': 'green', 'junction': 'red'}
|
||||
node_colors = [colors.get(node_types.get(node, 'junction'), 'black') for node in G.nodes()]
|
||||
|
||||
nx.draw_networkx_nodes(G, pos, ax=ax, node_size=50, node_color=node_colors)
|
||||
nx.draw_networkx_edges(G, pos, ax=ax, edge_color="red", width=1.2)
|
||||
|
||||
# Remove axes, ticks, and background
|
||||
ax.axis("off")
|
||||
|
||||
# Adjust plot limits to the data
|
||||
x_values = [coord[0] for coord in pos.values()]
|
||||
y_values = [coord[1] for coord in pos.values()]
|
||||
ax.set_xlim(min(x_values) - 0.001, max(x_values) + 0.001)
|
||||
ax.set_ylim(min(y_values) - 0.001, max(y_values) + 0.001)
|
||||
|
||||
# Save the plot with transparency
|
||||
plt.savefig("network_plot.png", bbox_inches='tight', pad_inches=0, transparent=True)
|
||||
plt.show()
|
Loading…
Reference in New Issue
Block a user