def street_nodes():
    """Tests the street nodes implementation
    """
    workspace = make_workspace('demo')

    a = Point(1.234567892345678923456789, 1)
    b = Point(1.234567892345678923456788, 1)
    assert a == b

    this_district = ug.UESGraph()
    sn_11 = this_district.add_street_node(position=Point(1, 1))
    sn_12 = this_district.add_street_node(position=Point(1, 2))
    sn_13 = this_district.add_street_node(position=Point(2, 2))
    sn_14 = this_district.add_street_node(position=Point(2, 1))

    this_district.add_edge(sn_11, sn_12)
    this_district.add_edge(sn_12, sn_13)
    this_district.add_edge(sn_13, sn_14)
    this_district.add_edge(sn_14, sn_11)

    for street_node in this_district.nodelist_street:
        print('Street node:', street_node, this_district.node[street_node])

    save_as = os.path.join(workspace, '09_Streets.png')
    vis_streets = ug.Visuals(this_district)
    vis_streets.show_network(save_as=save_as, show_plot=False)
def example_readme():
    """The example given in the README.md file
    """
    workspace = make_workspace('readme')

    graph = ug.UESGraph()

    supply = graph.add_building(
        name='Supply',
        position=Point(0, 10),
        is_supply_heating=True,
    )
    demand = graph.add_building(
        name='Building 1',
        position=Point(50, 15),
    )
    heating_node = graph.add_network_node(
        network_type='heating',
        position=Point(30, 5),
    )

    graph.add_edge(supply, heating_node)
    graph.add_edge(heating_node, demand)

    save_as = os.path.join(workspace, 'graph.png')
    vis = ug.Visuals(graph)
    vis.show_network(
        save_as=save_as,
        scaling_factor=30,
    )
Beispiel #3
0
def test_markers(example_district):
    """Tests marking a node and an edge
    """
    heating_network_1 = example_district.create_subgraphs(
        network_type='heating',
        all_buildings=False,
    )['default']

    edgelist = list(heating_network_1.edges())
    edgelist_tuples_sorted = []
    for edge in edgelist:
        edgelist_tuples_sorted.append(sorted(edge))

    edgelist_sorted = sorted(edgelist_tuples_sorted)

    for edge in edgelist_sorted:
        edge_to_mark = [edge[0], edge[1]]
        break

    nodelist = list(heating_network_1.nodes())
    nodelist_sorted = sorted(nodelist)

    node_to_mark = nodelist_sorted[2]

    scaling_factor = 10

    vis = ug.Visuals(heating_network_1)
    fig = vis.show_network(show_plot=False,
                           scaling_factor=scaling_factor,
                           node_markers=[node_to_mark],
                           edge_markers=[edge_to_mark],
                           labels='name',
                           label_size=30)
    return fig
Beispiel #4
0
def test_mass_flows(example_district):
    """Tests the plotting of mass flow rates with line thickness
    """
    random.seed(12345)

    heating_network_1 = example_district.create_subgraphs(
        network_type='heating',
        all_buildings=False,
    )['default']

    edgelist = list(heating_network_1.edges())
    edgelist_tuples_sorted = []
    for edge in edgelist:
        edgelist_tuples_sorted.append(sorted(edge))

    edgelist_sorted = sorted(edgelist_tuples_sorted)

    for edge in edgelist_sorted:
        flow = random.uniform(0.1, 1)
        heating_network_1.edges[edge[0], edge[1]]['mass_flow'] = flow

    scaling_factor = 10

    vis = ug.Visuals(heating_network_1)
    fig = vis.show_network(
        show_plot=False,
        scaling_factor=scaling_factor,
        show_mass_flows=True,
    )
    return fig
Beispiel #5
0
def test_diameters_scaling(example_district):
    """Tests the plotting of diameters with line thickness
    """
    random.seed(12345)

    heating_network_1 = example_district.create_subgraphs(
        network_type='heating',
        all_buildings=False,
    )['default']

    edgelist = list(heating_network_1.edges())
    edgelist_tuples_sorted = []
    for edge in edgelist:
        edgelist_tuples_sorted.append(sorted(edge))

    edgelist_sorted = sorted(edgelist_tuples_sorted)

    for edge in edgelist_sorted:
        diameter = random.uniform(0.05, 0.5)
        print('diameter', diameter)
        heating_network_1.edges[edge[0], edge[1]]['diameter'] = diameter

    print(heating_network_1.edges(data=True))
    scaling_factor = 10

    vis = ug.Visuals(heating_network_1)
    fig = vis.show_network(
        show_plot=False,
        scaling_factor=scaling_factor,
        scaling_factor_diameter=50,
        show_diameters=True,
    )
    return fig
Beispiel #6
0
def test_simple_plot(example_district):
    """Tests the plotting with simple set to True
    """
    scaling_factor = 50
    vis = ug.Visuals(example_district)
    fig = vis.show_network(
        show_plot=False,
        scaling_factor=scaling_factor,
        simple=True,
    )
    return fig
Beispiel #7
0
def test_network_explosion_all(example_district):
    """Tests the plotting of a network explosion drawing for all layers
    """
    scaling_factor = 50
    vis = ug.Visuals(example_district)
    fig = vis.network_explosion(
        show_plot=False,
        angle=250,
        scaling_factor=scaling_factor,
    )
    return fig
Beispiel #8
0
def test_cooling_network(example_district):
    """Tests the plotting of an extracted cooling network subgraph
    """
    cooling_network = example_district.create_subgraphs('cooling')['default']

    scaling_factor = 10
    vis = ug.Visuals(cooling_network)
    fig = vis.show_network(
        show_plot=False,
        scaling_factor=scaling_factor,
    )
    return fig
Beispiel #9
0
def test_basic_plot(example_district):
    """Tests a first plot with pytest-mpl

    Generated with `py.test --mpl-generate-path=tests/baseline_images`
    """
    scaling_factor = 10
    vis = ug.Visuals(example_district)
    fig = vis.show_network(
        show_plot=False,
        scaling_factor=scaling_factor,
    )
    return fig
Beispiel #10
0
def test_heating_network_2(example_district):
    """Tests the plotting of an extracted heating network subgraph
    """
    heating_network_2 = example_district.create_subgraphs(
        'heating')['heating_2']

    scaling_factor = 10
    vis = ug.Visuals(heating_network_2)
    fig = vis.show_network(
        show_plot=False,
        scaling_factor=scaling_factor,
    )
    return fig
Beispiel #11
0
def test_3D(example_district):
    """Tests the 3D plot
    """
    random.seed(12345)

    heating_network_1 = example_district.create_subgraphs(
        network_type='heating',
        all_buildings=False,
    )['default']

    nodelist = list(heating_network_1.nodes())
    nodelist_sorted = sorted(nodelist)

    for node in nodelist_sorted:
        pressure = random.uniform(2e5, 3e5)
        heating_network_1.nodes[node]['pressure'] = pressure

    vis = ug.Visuals(heating_network_1)
    fig = vis.show_3d(
        show_plot=False,
        label_size=30,
    )
    return fig
Beispiel #12
0
def test_temperatures(example_district):
    """Tests the plotting of temperatures with line colors
    """
    random.seed(12345)

    heating_network_1 = example_district.create_subgraphs(
        network_type='heating',
        all_buildings=False,
    )['default']

    edgelist = list(heating_network_1.edges())
    edgelist_tuples_sorted = []
    for edge in edgelist:
        edgelist_tuples_sorted.append(sorted(edge))

    edgelist_sorted = sorted(edgelist_tuples_sorted)

    for edge in edgelist_sorted:
        flow = random.uniform(0.1, 1)
        heating_network_1.edges[edge[0], edge[1]]['mass_flow'] = flow

    nodelist = list(heating_network_1.nodes())
    nodelist_sorted = sorted(nodelist)

    for node in nodelist_sorted:
        temp = random.uniform(50, 100)
        heating_network_1.nodes[node]['temperature_supply'] = temp

    scaling_factor = 10

    vis = ug.Visuals(heating_network_1)
    fig = vis.show_network(show_plot=False,
                           scaling_factor=scaling_factor,
                           add_edge_temperatures=True,
                           add_edge_flows=True,
                           label_size=30)
    return fig
def main():
    """
    Defines a building node dictionary and adds it to the graph.
    Adds network nodes to the graph and creates a district heating network
    graph.
    Exported to a json
    """

    # Read node and pipe data
    # node_data = pd.read_csv(
    #     'https://raw.githubusercontent.com/ibpsa/project1/WP3/'
    #     'wp_3_2_destest/Network/NetworkSizing/Node%20data.csv', sep=',')

    # pipe_data = pd.read_csv(
    #     'https://raw.githubusercontent.com/ibpsa/project1/WP3/'
    #     'wp_3_2_destest/Network/NetworkSizing/Pipe%20data.csv', sep=',')

    # 8 Buildings
    node_data = pd.read_csv('Node_data_8_buildings.csv', sep=',')
    pipe_data = pd.read_csv('Pipe_data_8_buildings.csv', sep=',')

    # 16 Buildings
    # node_data = pd.read_csv(
    #     'https://raw.githubusercontent.com/ibpsa/project1/WP3/'
    #     'wp_3_2_destest/Network/NetworkSizing/Node%20data.csv', sep=',')
    # pipe_data = pd.read_csv(
    #     'https://raw.githubusercontent.com/ibpsa/project1/WP3/'
    #     'wp_3_2_destest/Network/NetworkSizing/Pipe%20data.csv', sep=',')

    # 32 Buildings
    # node_data = pd.read_csv('Node_data_32_buildings.csv', sep=',')
    # pipe_data = pd.read_csv('Pipe_data_32_buildings.csv', sep=',')

    node_data = node_data.set_index('Node')

    # renaming for usability
    pipe_data = pipe_data.replace(to_replace='i', value='Destest_Supply')

    simple_district = ug.UESGraph()

    # Add supply exemplary as a single addition
    supply_heating_1 = simple_district.add_building(name="Destest_Supply",
                                                    position=Point(
                                                        44.0, -12.0),
                                                    is_supply_heating=True)

    # Add building and network nodes
    for node_name, values in node_data.iterrows():
        if node_name.startswith("Simple"):
            simple_district.add_building(name=node_name,
                                         position=Point(
                                             values['X-Position [m]'],
                                             values['Y-Position [m]']),
                                         is_supply_heating=False)
        else:
            simple_district.add_network_node('heating',
                                             name=node_name,
                                             position=Point(
                                                 values['X-Position [m]'],
                                                 values['Y-Position [m]']),
                                             is_supply_heating=False)

    # Help dictionary for drawing the connections / edges 8 buildings
    connection_dict_heating_nodes = {
        "c": ["d", "SimpleDistrict_10", "SimpleDistrict_11"],
        "g": ["h", "SimpleDistrict_9", "SimpleDistrict_12"],
        "d": ["Destest_Supply", "SimpleDistrict_16", "SimpleDistrict_15"],
        "h": ["Destest_Supply", "SimpleDistrict_14", "SimpleDistrict_13"],
    }

    # Help dictionary for drawing the connections / edges 16 buildings
    # connection_dict_heating_nodes = {
    #     "a": ["b", "SimpleDistrict_2", "SimpleDistrict_3"],
    #     "b": ["c", "SimpleDistrict_5", "SimpleDistrict_6"],
    #     "c": ["d", "SimpleDistrict_10", "SimpleDistrict_11"],
    #     "g": ["h", "SimpleDistrict_9", "SimpleDistrict_12"],
    #     "d": ["Destest_Supply", "SimpleDistrict_16", "SimpleDistrict_15"],
    #     "e": ["f", "SimpleDistrict_1", "SimpleDistrict_4"],
    #     "f": ["g", "SimpleDistrict_8", "SimpleDistrict_7"],
    #     "h": ["Destest_Supply", "SimpleDistrict_14", "SimpleDistrict_13"],
    # }

    # Help dictionary for drawing the connections / edges 32 buildings
    # connection_dict_heating_nodes = {
    #     "a": ["b", "SimpleDistrict_2", "SimpleDistrict_3"],
    #     "b": ["c", "SimpleDistrict_5", "SimpleDistrict_6"],
    #     "c": ["d", "SimpleDistrict_10", "SimpleDistrict_11"],
    #     "g": ["h", "SimpleDistrict_9", "SimpleDistrict_12"],
    #     "d": ["Destest_Supply", "SimpleDistrict_16", "SimpleDistrict_15"],
    #     "e": ["f", "SimpleDistrict_1", "SimpleDistrict_4"],
    #     "f": ["g", "SimpleDistrict_8", "SimpleDistrict_7"],
    #     "h": ["Destest_Supply", "SimpleDistrict_14", "SimpleDistrict_13"],
    #     "j": ["k", "SimpleDistrict_18", "SimpleDistrict_19"],
    #     "k": ["l", "SimpleDistrict_21", "SimpleDistrict_22"],
    #     "l": ["m", "SimpleDistrict_26", "SimpleDistrict_27"],
    #     "m": ["a", "SimpleDistrict_31", "SimpleDistrict_32"],
    #     "n": ["o", "SimpleDistrict_17", "SimpleDistrict_20"],
    #     "o": ["p", "SimpleDistrict_24", "SimpleDistrict_23"],
    #     "p": ["q", "SimpleDistrict_25", "SimpleDistrict_28"],
    #     "q": ["e", "SimpleDistrict_30", "SimpleDistrict_29"],
    # }

    # Adding the edges
    for key, values in connection_dict_heating_nodes.items():
        for value in values:
            simple_district.add_edge(simple_district.nodes_by_name[key],
                                     simple_district.nodes_by_name[value])

    # Add Diameter and Length information
    for index, row in pipe_data.iterrows():
        simple_district.edges[
            simple_district.nodes_by_name[row['Beginning Node']],
            simple_district.nodes_by_name[row['Ending Node']]][
                'diameter'] = row['Inner Diameter [m]']
        simple_district.edges[
            simple_district.nodes_by_name[row['Beginning Node']],
            simple_district.
            nodes_by_name[row['Ending Node']]]['length'] = row['Length [m]']
        simple_district.edges[
            simple_district.nodes_by_name[row['Beginning Node']],
            simple_district.nodes_by_name[row['Ending Node']]]['dIns'] = row[
                'Insulation Thickness [m]']
        simple_district.edges[
            simple_district.nodes_by_name[row['Beginning Node']],
            simple_district.
            nodes_by_name[row['Ending Node']]]['kIns'] = row['U-value [W/mK]']

    # Plotting / Visualization with pipe diameters scaling
    vis = ug.Visuals(simple_district)
    vis.show_network(save_as="uesgraph_destest_8.png",
                     show_diameters=True,
                     scaling_factor=15,
                     labels="name",
                     label_size=10,
                     scaling_factor_diameter=100)

    # write demand data to graph

    demand_data = pd.read_csv(
        'https://raw.githubusercontent.com/ibpsa/project1/WP3/'
        'wp_3_2_destest/Results/SimpleDistrict/SimpleDistrict_district.csv',
        sep=';',
        index_col=0)

    # x = range(0, 31536000, 900)
    # index_to_drop = []
    # j = 1
    # print('starting to iterate over df')
    # for i, row in enumerate(demand_data.iterrows()):
    #     if demand_data.index[i] not in x:
    #         index_to_drop.append(demand_data.index[i])
    # demand_data = demand_data.drop(index_to_drop)

    demand_data.columns = demand_data.columns.str.replace(' / W', '')

    # currently every building gets the same load, therefore we shorten this to
    # load one heatload (SimpleDistrict_1) and assign it to all buildings
    # old code is commented

    # for bldg in simple_district.nodelist_building:
    #     if not simple_district.nodes[bldg]['is_supply_heating']:
    #         demand = demand_data[
    #             simple_district.nodes[bldg]['name']].values.tolist()
    #         demand = demand_data[
    #             simple_district.nodes[bldg]['name']].values
    #         demand = [round(x, 1) for x in demand]
    #         # demand = [x if x else 83.6 for x in demand]
    #         simple_district.nodes[bldg]['input_heat'] = demand
    #         simple_district.nodes[bldg]['max_demand_heating'] = max(demand)
    #     else:
    #         simple_district.nodes[bldg]['T_supply'] = [273.15 + 50]
    #         simple_district.nodes[bldg]['p_supply'] = [3.4e5]

    demand = demand_data["SimpleDistrict_1"].values
    demand = [round(x, 1) for x in demand]

    for bldg in simple_district.nodelist_building:
        if not simple_district.nodes[bldg]['is_supply_heating']:
            simple_district.nodes[bldg]['input_heat'] = demand
            simple_district.nodes[bldg]['max_demand_heating'] = max(demand)
        else:
            simple_district.nodes[bldg]['T_supply'] = [273.15 + 50]
            simple_district.nodes[bldg]['p_supply'] = [3.4e5]

    # write general simulation data to graph
    # values needs to be revised for common excersise

    end_time = 365 * 24 * 3600
    time_step = 600
    n_steps = end_time / time_step

    simple_district.graph['network_type'] = 'heating'
    simple_district.graph['T_nominal'] = 273.15 + 50
    simple_district.graph['p_nominal'] = 3e5
    simple_district.graph['T_ground'] = [285.15] * int(n_steps)

    for node in simple_district.nodelist_building:
        simple_district.nodes[node]['dT_design'] = 20

    for edge in simple_district.edges():
        simple_district.edges[edge[0], edge[1]]['name'] = \
            str(edge[0]) + 'to' + str(edge[1])
        simple_district.edges[edge[0], edge[1]]['m_flow_nominal'] = 1
        simple_district.edges[edge[0], edge[1]]['fac'] = 1.0
        simple_district.edges[edge[0], edge[1]]['roughness'] = 2.5e-5  # Ref

    print("####")

    # simple_district = utils.size_hydronic_network(
    #     graph=simple_district,
    #     network_type="heating",
    #     delta_t_heating=5,
    #     dp_set=100.0,
    #     loop=False)

    # for edge in simple_district.edges:
    #     print(simple_district.edges[edge[0], edge[1]]["diameter"])

    # special m_flow estimation
    simple_district = sysmod_utils.estimate_m_flow_nominal_tablebased(
        simple_district, network_type='heating')

    # peak power m_flow estimation
    simple_district = sysmod_utils.estimate_m_flow_nominal(
        simple_district, dT_design=20, network_type='heating')

    dir_model = os.path.join(os.path.dirname(__file__), 'model')
    if not os.path.exists(dir_model):
        os.mkdir(dir_model)

    for edge in simple_district.edges:
        print(simple_district.edges[edge[0], edge[1]]["diameter"])

    for edge in simple_district.edges:
        simple_district.edges[edge[0], edge[1]]["diameter"] = 0

    # for bldg_node in simple_district.nodelist_building:
    #     if not simple_district.nodes[bldg_node]["is_supply_heating"]:
    #         simple_district.nodes[bldg_node]["max_demand_heating"] = max(
    #             simple_district.nodes[bldg_node]["input_heat"])

    print("####")

    simple_district = utils.size_hydronic_network(graph=simple_district,
                                                  network_type="heating",
                                                  delta_t_heating=20,
                                                  dp_set=100.0,
                                                  loop=False)

    # Plotting / Visualization with pipe diameters scaling
    vis = ug.Visuals(simple_district)
    vis.show_network(save_as="uesgraph_destest_8_selfsized.png",
                     show_diameters=True,
                     scaling_factor=15,
                     labels="name",
                     label_size=10,
                     scaling_factor_diameter=100)

    for edge in simple_district.edges:
        print(simple_district.edges[edge[0], edge[1]]["diameter"])

    new_model = UESModel(network_type=simple_district.graph['network_type'])
    new_model.stop_time = end_time
    new_model.timestep = time_step
    new_model.tolerance = 1e-5
    new_model.T_nominal = 273.15 + 35
    new_model.p_nominal = 3e5
    new_model.import_from_uesgraph(simple_district)
    new_model.set_connection(remove_network_nodes=True)
    new_model.add_ground_around_pipe = False
    new_model.ground_buried_cylindric = False
    new_model.ground_model = 't_ground_table'
    new_model.with_heat_flow_output = True
    new_model.with_heat_loss_output = True

    new_model.set_control_pressure(
        name_building='max_distance',
        # name_building='T1010_W',
        dp=1.2e5,
        name_supply='Destest_Supply',
        p_max=13e5)

    package = 'AixLib.Fluid.DistrictHeatingCooling.'
    model_supply_ideal = package + 'Supplies.OpenLoop.SourceIdeal'
    model_supply_power = package + 'Supplies.OpenLoop.SourcePowerDoubleMvar'
    model_demand = package +\
        'Demands.OpenLoop.VarTSupplyDpFixedTempDifferenceBypass'
    model_pipe = 'AixLib.Fluid.FixedResistances.PlugFlowPipe'

    new_model.add_return_network = True
    new_model.medium = 'AixLib.Media.Specialized.Water.ConstantProperties_pT'
    new_model.t_nominal = 273.15 + 35
    new_model.p_nominal = 3e5

    for node in new_model.nodelist_building:
        is_supply = 'is_supply_{}'.format(new_model.network_type)
        if new_model.nodes[node][is_supply]:
            new_model.nodes[node]['comp_model'] = model_supply_ideal
            new_model.nodes[node]['p_return'] = 3e5
            new_model.nodes[node]['T_return'] = 273.15 + 30
        else:
            new_model.nodes[node]['comp_model'] = model_demand
            input_heat = new_model.nodes[node]['input_heat']
            if new_model.network_type == 'heating':
                new_model.nodes[node]['Q_flow_nominal'] = max(input_heat)
                new_model.nodes[node]['m_flow_bypass'] = 0.0007

    for node in new_model.nodelist_pipe:
        new_model.nodes[node]['comp_model'] = model_pipe

    simulation_setup = {
        'data': {
            'start_time': 0,
            'stop_time': new_model.stop_time,
            'output_interval': new_model.timestep
        },
    }

    print('dir_model', dir_model)
    time_stamp = int(round(datetime.datetime.now().timestamp(), 0))
    time_stamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
    # Write Modelica code
    new_model.model_name = 'Sim' + str(time_stamp) + "Destest" +\
        '_open_loop_dT_var'
    new_model.write_modelica_package(save_at=dir_model)
Beispiel #14
0
def plot_example_networks():
    """Plots example networks to demo uesgraphs
    """
    example_district = e2.simple_dhc_model()
    example_district = e3.add_more_networks(example_district)

    workspace = make_workspace('demo')

    scaling_factor = 10

    # Plot full network layout

    save_as = os.path.join(workspace, '01_district.png')
    vis = ug.Visuals(example_district)
    vis.show_network(save_as=save_as,
                     show_plot=False,
                     scaling_factor=scaling_factor)

    # Plot heating network

    save_as = os.path.join(workspace, '02_heating_1.png')
    heating_network = example_district.create_subgraphs('heating')['default']
    vis_heating = ug.Visuals(heating_network)
    vis_heating.show_network(save_as=save_as,
                             show_plot=False,
                             scaling_factor=scaling_factor)

    # Plot cooling network

    save_as = os.path.join(workspace, '03_cooling_1.png')
    cooling_network = example_district.create_subgraphs('cooling')['default']
    vis_cooling = ug.Visuals(cooling_network)
    vis_cooling.show_network(save_as=save_as,
                             show_plot=False,
                             scaling_factor=scaling_factor)

    # Plot heating 2 network

    save_as = os.path.join(workspace, '04_heating_2.png')
    heating_network_2 = example_district.create_subgraphs(
        'heating')['heating_2']
    vis_heating_2 = ug.Visuals(heating_network_2)
    vis_heating_2.show_network(save_as=save_as,
                               show_plot=False,
                               scaling_factor=scaling_factor)

    # Plot cooling 2 network

    save_as = os.path.join(workspace, '05_cooling_2.png')
    cooling_network_2 = example_district.create_subgraphs(
        'cooling')['cooling_2']
    vis_cooling_2 = ug.Visuals(cooling_network_2)
    vis_cooling_2.show_network(save_as=save_as,
                               show_plot=False,
                               scaling_factor=scaling_factor)

    # Plot electricity network

    save_as = os.path.join(workspace, '06_electricity.png')
    electricity_network = example_district.create_subgraphs(
        'electricity')['default']
    vis_electricity = ug.Visuals(electricity_network)
    vis_electricity.show_network(save_as=save_as,
                                 show_plot=False,
                                 scaling_factor=scaling_factor)

    # Plot gas network

    save_as = os.path.join(workspace, '07_gas.png')
    gas_network = example_district.create_subgraphs('gas')['default']
    vis_gas = ug.Visuals(gas_network)
    vis_gas.show_network(save_as=save_as,
                         show_plot=False,
                         scaling_factor=scaling_factor)

    # Plot other networks

    save_as = os.path.join(workspace, '08_others.png')
    others_network = example_district.create_subgraphs('others')['default']
    vis_others = ug.Visuals(others_network)
    vis_others.show_network(save_as=save_as,
                            show_plot=False,
                            scaling_factor=scaling_factor)

    # Plot network in 3d layout

    save_as = os.path.join(workspace, '09_network_3d.png')
    vis = ug.Visuals(example_district)
    vis.network_explosion(save_as=save_as,
                          show_plot=False,
                          angle=250,
                          scaling_factor=scaling_factor * 5,
                          networks=[])

    # Plot network explosion

    save_as = os.path.join(workspace, '10_network_explosion.png')
    vis = ug.Visuals(example_district)
    vis.network_explosion(save_as=save_as,
                          show_plot=False,
                          angle=250,
                          scaling_factor=scaling_factor * 5)

    # Plot simple network visualization

    save_as = os.path.join(workspace, '11_simple.png')
    scaling_factor = 50
    vis = ug.Visuals(example_district)
    fig = vis.show_network(save_as=save_as,
                           show_plot=False,
                           scaling_factor=scaling_factor,
                           simple=True)

    # Plot diameters for two edges

    save_as = os.path.join(workspace, '12_diameters.png')
    random.seed(12345)
    heating_network_1 = example_district.create_subgraphs(
        network_type='heating', all_buildings=False)['default']
    edgelist = list(heating_network_1.edges())
    edgelist_tuples_sorted = []
    for edge in edgelist:
        edgelist_tuples_sorted.append(sorted(edge))
    edgelist_sorted = sorted(edgelist_tuples_sorted)
    for edge in edgelist_sorted:
        diameter = random.uniform(0.05, 0.5)
        print('diameter', diameter)
        heating_network_1.edges[edge[0], edge[1]]['diameter'] = diameter
    print(heating_network_1.edges(data=True))
    scaling_factor = 10
    vis = ug.Visuals(heating_network_1)
    fig = vis.show_network(save_as=save_as,
                           show_plot=False,
                           scaling_factor=scaling_factor,
                           show_diameters=True)

    # Plot diameters scaling

    save_as = os.path.join(workspace, '13_diameters_scaling.png')
    random.seed(12345)
    heating_network_1 = example_district.create_subgraphs(
        network_type='heating',
        all_buildings=False,
    )['default']
    edgelist = list(heating_network_1.edges())
    edgelist_tuples_sorted = []
    for edge in edgelist:
        edgelist_tuples_sorted.append(sorted(edge))
    edgelist_sorted = sorted(edgelist_tuples_sorted)
    for edge in edgelist_sorted:
        diameter = random.uniform(0.05, 0.5)
        print('diameter', diameter)
        heating_network_1.edges[edge[0], edge[1]]['diameter'] = diameter
    print(heating_network_1.edges(data=True))
    scaling_factor = 10
    vis = ug.Visuals(heating_network_1)
    fig = vis.show_network(save_as=save_as,
                           show_plot=False,
                           scaling_factor=scaling_factor,
                           scaling_factor_diameter=50,
                           show_diameters=True)

    # Plot mass flows

    save_as = os.path.join(workspace, '14_mass_flows.png')
    random.seed(12345)
    heating_network_1 = example_district.create_subgraphs(
        network_type='heating',
        all_buildings=False,
    )['default']
    edgelist = list(heating_network_1.edges())
    edgelist_tuples_sorted = []
    for edge in edgelist:
        edgelist_tuples_sorted.append(sorted(edge))
    edgelist_sorted = sorted(edgelist_tuples_sorted)
    for edge in edgelist_sorted:
        flow = random.uniform(0.1, 1)
        heating_network_1.edges[edge[0], edge[1]]['mass_flow'] = flow
    scaling_factor = 10
    vis = ug.Visuals(heating_network_1)
    fig = vis.show_network(save_as=save_as,
                           show_plot=False,
                           scaling_factor=scaling_factor,
                           show_mass_flows=True)

    # Plot temperatures

    save_as = os.path.join(workspace, '15_temperatures.png')
    random.seed(12345)
    heating_network_1 = example_district.create_subgraphs(
        network_type='heating',
        all_buildings=False,
    )['default']
    edgelist = list(heating_network_1.edges())
    edgelist_tuples_sorted = []
    for edge in edgelist:
        edgelist_tuples_sorted.append(sorted(edge))
    edgelist_sorted = sorted(edgelist_tuples_sorted)
    for edge in edgelist_sorted:
        flow = random.uniform(0.1, 1)
        heating_network_1.edges[edge[0], edge[1]]['mass_flow'] = flow
    nodelist = list(heating_network_1.nodes())
    nodelist_sorted = sorted(nodelist)
    for node in nodelist_sorted:
        temp = random.uniform(50, 100)
        heating_network_1.nodes[node]['temperature_supply'] = temp
    scaling_factor = 10
    vis = ug.Visuals(heating_network_1)
    fig = vis.show_network(save_as=save_as,
                           show_plot=False,
                           scaling_factor=scaling_factor,
                           add_edge_temperatures=True,
                           add_edge_flows=True,
                           label_size=30)

    # Plot markers

    save_as = os.path.join(workspace, '16_markers.png')
    heating_network_1 = example_district.create_subgraphs(
        network_type='heating',
        all_buildings=False,
    )['default']
    edgelist = list(heating_network_1.edges())
    edgelist_tuples_sorted = []
    for edge in edgelist:
        edgelist_tuples_sorted.append(sorted(edge))
    edgelist_sorted = sorted(edgelist_tuples_sorted)
    for edge in edgelist_sorted:
        edge_to_mark = [edge[0], edge[1]]
        break
    nodelist = list(heating_network_1.nodes())
    nodelist_sorted = sorted(nodelist)
    node_to_mark = nodelist_sorted[2]
    scaling_factor = 10
    vis = ug.Visuals(heating_network_1)
    fig = vis.show_network(save_as=save_as,
                           show_plot=False,
                           scaling_factor=scaling_factor,
                           node_markers=[node_to_mark],
                           edge_markers=[edge_to_mark],
                           labels='name',
                           label_size=25)

    # Plot real 3d

    save_as = os.path.join(workspace, '17_3D.png')
    random.seed(12345)
    heating_network_1 = example_district.create_subgraphs(
        network_type='heating',
        all_buildings=False,
    )['default']
    nodelist = list(heating_network_1.nodes())
    nodelist_sorted = sorted(nodelist)
    for node in nodelist_sorted:
        pressure = random.uniform(2e5, 3e5)
        heating_network_1.nodes[node]['pressure'] = pressure
    vis = ug.Visuals(heating_network_1)
    fig = vis.show_3d(save_as=save_as, show_plot=False, label_size=30)
#f_2 = elements.get('Längengrad')
#f_2 = pd.Series(f_2).values
#g_2 = pd.to_numeric(f_2, errors='coerce')
#
#demand = graph.add_building(
#    name='Building 1',
#    position=Point(g_2[0], g_1[0]),
#)
#graph.nodes[demand]['heat_load_kW'] = 200
#print(elements)

graph = ug.UESGraph()
ug.uesgraph.UESGraph.from_osm(
    graph, osm_file='EON.osm')  #einlesen der OSM-Datei als graph

vis = ug.Visuals(graph)
vis.show_network(
    show_plot=True,
    scaling_factor=30,
)

#
x = ug.uesgraph.UESGraph.number_of_nodes(graph, node_type='building')

d = graph.nodelist_building
j = graph.nodelist_building[0]  #
graph.nodes[j]['heat_load_kW'] = 200  #neues Attribut wird Knoten hinzugefügt
k = graph.nodes[graph.nodelist_building[
    0]]  #alle Attribute eines Knotens werden ausgegeben

e = graph.positions