Code Duplication    Length = 63-66 lines in 2 locations

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

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

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