Code Duplication    Length = 63-66 lines in 2 locations

src/egon/data/datasets/power_plants/assign_weather_data.py 1 location

@@ 8-70 (lines=63) @@
5
import egon.data.config
6
7
8
def assign_bus_id(power_plants, cfg):
9
    """Assigns bus_ids to power plants according to location and voltage level
10
11
    Parameters
12
    ----------
13
    power_plants : pandas.DataFrame
14
        Power plants including voltage level
15
16
    Returns
17
    -------
18
    power_plants : pandas.DataFrame
19
        Power plants including voltage level and bus_id
20
21
    """
22
23
    mv_grid_districts = db.select_geodataframe(
24
        f"""
25
        SELECT * FROM {cfg['sources']['egon_mv_grid_district']}
26
        """,
27
        epsg=4326,
28
    )
29
30
    ehv_grid_districts = db.select_geodataframe(
31
        f"""
32
        SELECT * FROM {cfg['sources']['ehv_voronoi']}
33
        """,
34
        epsg=4326,
35
    )
36
37
    # Assign power plants in hv and below to hvmv bus
38
    power_plants_hv = power_plants[power_plants.voltage_level >= 3].index
39
    if len(power_plants_hv) > 0:
40
        power_plants.loc[power_plants_hv, "bus_id"] = gpd.sjoin(
41
            power_plants[power_plants.index.isin(power_plants_hv)],
42
            mv_grid_districts,
43
        ).bus_id
44
45
    # Assign power plants in ehv to ehv bus
46
    power_plants_ehv = power_plants[power_plants.voltage_level < 3].index
47
48
    if len(power_plants_ehv) > 0:
49
        ehv_join = gpd.sjoin(
50
            power_plants[power_plants.index.isin(power_plants_ehv)],
51
            ehv_grid_districts,
52
        )
53
54
        if "bus_id_right" in ehv_join.columns:
55
            power_plants.loc[power_plants_ehv, "bus_id"] = gpd.sjoin(
56
                power_plants[power_plants.index.isin(power_plants_ehv)],
57
                ehv_grid_districts,
58
            ).bus_id_right
59
60
        else:
61
            power_plants.loc[power_plants_ehv, "bus_id"] = gpd.sjoin(
62
                power_plants[power_plants.index.isin(power_plants_ehv)],
63
                ehv_grid_districts,
64
            ).bus_id
65
66
    # Assert that all power plants have a bus_id
67
    assert power_plants.bus_id.notnull().all(), f"""Some power plants are
68
    not attached to a bus: {power_plants[power_plants.bus_id.isnull()]}"""
69
70
    return power_plants
71
72
73
@timer_func

src/egon/data/datasets/power_plants/__init__.py 1 location

@@ 534-599 (lines=66) @@
531
    return mastr_loc.voltage_level
532
533
534
def assign_bus_id(power_plants, cfg, drop_missing=False):
535
    """Assigns bus_ids to power plants according to location and voltage level
536
537
    Parameters
538
    ----------
539
    power_plants : pandas.DataFrame
540
        Power plants including voltage level
541
542
    Returns
543
    -------
544
    power_plants : pandas.DataFrame
545
        Power plants including voltage level and bus_id
546
547
    """
548
549
    mv_grid_districts = db.select_geodataframe(
550
        f"""
551
        SELECT * FROM {cfg['sources']['egon_mv_grid_district']}
552
        """,
553
        epsg=4326,
554
    )
555
556
    ehv_grid_districts = db.select_geodataframe(
557
        f"""
558
        SELECT * FROM {cfg['sources']['ehv_voronoi']}
559
        """,
560
        epsg=4326,
561
    )
562
563
    # Assign power plants in hv and below to hvmv bus
564
    power_plants_hv = power_plants[power_plants.voltage_level >= 3].index
565
    if len(power_plants_hv) > 0:
566
        power_plants.loc[power_plants_hv, "bus_id"] = gpd.sjoin(
567
            power_plants[power_plants.index.isin(power_plants_hv)],
568
            mv_grid_districts,
569
        ).bus_id
570
571
    # Assign power plants in ehv to ehv bus
572
    power_plants_ehv = power_plants[power_plants.voltage_level < 3].index
573
574
    if len(power_plants_ehv) > 0:
575
        ehv_join = gpd.sjoin(
576
            power_plants[power_plants.index.isin(power_plants_ehv)],
577
            ehv_grid_districts,
578
        )
579
580
        if "bus_id_right" in ehv_join.columns:
581
            power_plants.loc[power_plants_ehv, "bus_id"] = gpd.sjoin(
582
                power_plants[power_plants.index.isin(power_plants_ehv)],
583
                ehv_grid_districts,
584
            ).bus_id_right
585
586
        else:
587
            power_plants.loc[power_plants_ehv, "bus_id"] = gpd.sjoin(
588
                power_plants[power_plants.index.isin(power_plants_ehv)],
589
                ehv_grid_districts,
590
            ).bus_id
591
592
    if drop_missing:
593
        power_plants = power_plants[~power_plants.bus_id.isnull()]
594
595
    # Assert that all power plants have a bus_id
596
    assert power_plants.bus_id.notnull().all(), f"""Some power plants are
597
    not attached to a bus: {power_plants[power_plants.bus_id.isnull()]}"""
598
599
    return power_plants
600
601
602
def insert_hydro_biomass():