From f7c205422dfc051eb48e21abd4dde768272228c2 Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Wed, 3 Nov 2021 15:09:52 +0100 Subject: [PATCH 01/15] Fix crs problem --- src/egon/data/datasets/heat_etrago/power_to_heat.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/egon/data/datasets/heat_etrago/power_to_heat.py b/src/egon/data/datasets/heat_etrago/power_to_heat.py index c5e70a443..bfb832a20 100644 --- a/src/egon/data/datasets/heat_etrago/power_to_heat.py +++ b/src/egon/data/datasets/heat_etrago/power_to_heat.py @@ -242,7 +242,7 @@ def insert_power_to_heat_per_level( links.link_id = range(next_link_id, next_link_id + len(links)) # Insert data into database - links.to_postgis( + links.to_crs(4326).to_postgis( targets["heat_links"]["table"], schema=targets["heat_links"]["schema"], if_exists="append", From b34bf23e5b75529dc8262a7816ca2c7293358d51 Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Wed, 3 Nov 2021 15:43:14 +0100 Subject: [PATCH 02/15] Set all crs to 4326 --- src/egon/data/datasets/heat_etrago/power_to_heat.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/egon/data/datasets/heat_etrago/power_to_heat.py b/src/egon/data/datasets/heat_etrago/power_to_heat.py index bfb832a20..e14bb3cce 100644 --- a/src/egon/data/datasets/heat_etrago/power_to_heat.py +++ b/src/egon/data/datasets/heat_etrago/power_to_heat.py @@ -98,6 +98,7 @@ def insert_central_power_to_heat(scenario="eGon2035"): AND carrier = 'heat_pump' """, geom_col="geometry", + epsg=4326, ) # Assign voltage level @@ -137,6 +138,7 @@ def insert_central_power_to_heat(scenario="eGon2035"): AND carrier = 'resistive_heater' """, geom_col="geometry", + epsg=4326, ) # Assign voltage level @@ -242,7 +244,7 @@ def insert_power_to_heat_per_level( links.link_id = range(next_link_id, next_link_id + len(links)) # Insert data into database - links.to_crs(4326).to_postgis( + links.to_postgis( targets["heat_links"]["table"], schema=targets["heat_links"]["schema"], if_exists="append", @@ -344,7 +346,8 @@ def assign_electrical_bus(heat_pumps, carrier, multiple_per_mv_grid=False): SELECT bus_id, geom FROM {sources['egon_mv_grid_district']['schema']}. {sources['egon_mv_grid_district']['table']} - """ + """, + epsg=4326, ) # Map zensus cells to district heating areas @@ -363,7 +366,8 @@ def assign_electrical_bus(heat_pumps, carrier, multiple_per_mv_grid=False): WHERE a.scenario = 'eGon2035' AND b.scenario = 'eGon2035' GROUP BY (area_id, a.zensus_population_id, geom_point) - """ + """, + epsg=4326, ) # Select area_id per heat pump From 939670e3cff71f9e513ef8749f4d357c414557bc Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Thu, 4 Nov 2021 16:20:41 +0100 Subject: [PATCH 03/15] Move biomass CHP plants from PowerPlants to Chp dataset --- src/egon/data/datasets/chp/__init__.py | 129 +++++++++++++++--- src/egon/data/datasets/chp/small_chp.py | 3 +- .../data/datasets/power_plants/__init__.py | 66 ++++++--- 3 files changed, 160 insertions(+), 38 deletions(-) diff --git a/src/egon/data/datasets/chp/__init__.py b/src/egon/data/datasets/chp/__init__.py index 5183c7856..123f1ad38 100644 --- a/src/egon/data/datasets/chp/__init__.py +++ b/src/egon/data/datasets/chp/__init__.py @@ -12,8 +12,10 @@ existing_chp_smaller_10mw, extension_per_federal_state, select_target, + assign_use_case, ) from egon.data.datasets.etrago_setup import link_geom_from_buses +from egon.data.datasets.power_plants import filter_mastr_geometry, scale_prox2now, assign_voltage_level, assign_bus_id from sqlalchemy import Column, String, Float, Integer, Sequence, Boolean from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base @@ -182,25 +184,118 @@ def assign_heat_bus(scenario="eGon2035"): # Insert district heating CHP with heat_bus_id session = sessionmaker(bind=db.engine())() for i, row in chp.iterrows(): - entry = EgonChp( - id=i, - sources=row.sources, - source_id=row.source_id, - carrier=row.carrier, - el_capacity=row.el_capacity, - th_capacity=row.th_capacity, - electrical_bus_id=row.electrical_bus_id, - ch4_bus_id=row.ch4_bus_id, - district_heating_area_id=row.district_heating_area_id, - district_heating=row.district_heating, - voltage_level=row.voltage_level, - scenario=scenario, - geom=f"SRID=4326;POINT({row.geom.x} {row.geom.y})", - ) + if row.carrier != 'biomass': + entry = EgonChp( + id=i, + sources=row.sources, + source_id=row.source_id, + carrier=row.carrier, + el_capacity=row.el_capacity, + th_capacity=row.th_capacity, + electrical_bus_id=row.electrical_bus_id, + ch4_bus_id=row.ch4_bus_id, + district_heating_area_id=row.district_heating_area_id, + district_heating=row.district_heating, + voltage_level=row.voltage_level, + scenario=scenario, + geom=f"SRID=4326;POINT({row.geom.x} {row.geom.y})", + ) + else: + entry = EgonChp( + id=i, + sources=row.sources, + source_id=row.source_id, + carrier=row.carrier, + el_capacity=row.el_capacity, + th_capacity=row.th_capacity, + electrical_bus_id=row.electrical_bus_id, + district_heating_area_id=row.district_heating_area_id, + district_heating=row.district_heating, + voltage_level=row.voltage_level, + scenario=scenario, + geom=f"SRID=4326;POINT({row.geom.x} {row.geom.y})", + ) session.add(entry) session.commit() +def insert_biomass_chp(scenario): + """Insert biomass chp plants of future scenario + + Parameters + ---------- + scenario : str + Name of scenario. + + Returns + ------- + None. + + """ + cfg = config.datasets()["chp_location"] + + # import target values from NEP 2021, scneario C 2035 + target = select_target("biomass", scenario) + # import data for MaStR + mastr = pd.read_csv(cfg["sources"]["mastr_biomass"]).query( + "EinheitBetriebsstatus=='InBetrieb'" + ) + + # Drop entries without federal state or 'AusschließlichWirtschaftszone' + mastr = mastr[ + mastr.Bundesland.isin( + pd.read_sql( + f"""SELECT DISTINCT ON (gen) + REPLACE(REPLACE(gen, '-', ''), 'ü', 'ue') as states + FROM {cfg['sources']['vg250_lan']['schema']}. + {cfg['sources']['vg250_lan']['table']}""", + con=db.engine(), + ).states.values + ) + ] + + # Scaling will be done per federal state in case of eGon2035 scenario. + if scenario == "eGon2035": + level = "federal_state" + else: + level = "country" + + # Scale capacities to meet target values + mastr = scale_prox2now(mastr, target, level=level) + + # Choose only entries with valid geometries inside DE/test mode + mastr_loc = filter_mastr_geometry(mastr).set_geometry("geometry") + + # Assign bus_id + if len(mastr_loc) > 0: + mastr_loc["voltage_level"] = assign_voltage_level(mastr_loc, cfg) + mastr_loc = assign_bus_id(mastr_loc, cfg) + + mastr_loc = assign_use_case(mastr_loc, cfg['sources']) + + # Insert entries with location + session = sessionmaker(bind=db.engine())() + for i, row in mastr_loc.iterrows(): + if row.ThermischeNutzleistung > 0: + entry = EgonChp( + sources={ + "chp": "MaStR", + "el_capacity": "MaStR scaled with NEP 2021", + "th_capacity": "MaStR", + }, + source_id={"MastrNummer": row.EinheitMastrNummer}, + carrier="biomass", + el_capacity=row.Nettonennleistung, + th_capacity=row.ThermischeNutzleistung / 1000, + scenario=scenario, + district_heating=row.district_heating, + electrical_bus_id=row.bus_id, + voltage_level=row.voltage_level, + geom=f"SRID=4326;POINT({row.Laengengrad} {row.Breitengrad})", + ) + session.add(entry) + session.commit() + def insert_chp_egon2035(): """Insert CHP plants for eGon2035 considering NEP and MaStR data @@ -215,6 +310,8 @@ def insert_chp_egon2035(): sources = config.datasets()["chp_location"]["sources"] targets = config.datasets()["chp_location"]["targets"] + + insert_biomass_chp('eGon2035') # Insert large CHPs based on NEP's list of conventional power plants MaStR_konv = insert_large_chp(sources, targets["chp_table"], EgonChp) @@ -330,7 +427,7 @@ class Chp(Dataset): def __init__(self, dependencies): super().__init__( name="Chp", - version="0.0.1", + version="0.0.2.dev", dependencies=dependencies, tasks=( create_tables, diff --git a/src/egon/data/datasets/chp/small_chp.py b/src/egon/data/datasets/chp/small_chp.py index ca82b72c2..03e7c6296 100644 --- a/src/egon/data/datasets/chp/small_chp.py +++ b/src/egon/data/datasets/chp/small_chp.py @@ -370,7 +370,7 @@ def extension_district_heating( SELECT b.residential_and_service_demand - sum(a.el_capacity)*{flh_chp} as demand, b.area_id, - ST_Transform(ST_Centroid(geom_polygon), 4326) as geom + ST_Transform(ST_PointOnSurface(geom_polygon), 4326) as geom FROM {targets['chp_table']['schema']}. {targets['chp_table']['table']} a, @@ -538,6 +538,7 @@ def extension_per_federal_state(federal_state, EgonChp): FROM {target_table['schema']}. {target_table['table']} WHERE sources::json->>'el_capacity' = 'MaStR' + AND carrier != 'biomass' AND ST_Intersects(geom, ( SELECT ST_Union(geometry) FROM {sources['vg250_lan']['schema']}.{sources['vg250_lan']['table']} b diff --git a/src/egon/data/datasets/power_plants/__init__.py b/src/egon/data/datasets/power_plants/__init__.py index 8b90b0e83..d8e4121ae 100755 --- a/src/egon/data/datasets/power_plants/__init__.py +++ b/src/egon/data/datasets/power_plants/__init__.py @@ -55,7 +55,7 @@ class PowerPlants(Dataset): def __init__(self, dependencies): super().__init__( name="PowerPlants", - version="0.0.4", + version="0.0.5", dependencies=dependencies, tasks=( create_tables, @@ -220,7 +220,7 @@ def filter_mastr_geometry(mastr, federal_state=None): return mastr_loc -def insert_biomass_plants(scenario): +def insert_biomass_plants(scenario, chp=False): """Insert biomass power plants of future scenario Parameters @@ -266,7 +266,6 @@ def insert_biomass_plants(scenario): # Choose only entries with valid geometries inside DE/test mode mastr_loc = filter_mastr_geometry(mastr).set_geometry("geometry") - # TODO: Deal with power plants without geometry # Assign bus_id if len(mastr_loc) > 0: @@ -275,25 +274,48 @@ def insert_biomass_plants(scenario): # Insert entries with location session = sessionmaker(bind=db.engine())() - for i, row in mastr_loc.iterrows(): - entry = EgonPowerPlants( - sources={ - "chp": "MaStR", - "el_capacity": "MaStR scaled with NEP 2021", - "th_capacity": "MaStR", - }, - source_id={"MastrNummer": row.EinheitMastrNummer}, - carrier="biomass", - chp=type(row.KwkMastrNummer) != float, - el_capacity=row.Nettonennleistung, - th_capacity=row.ThermischeNutzleistung / 1000, - scenario=scenario, - bus_id=row.bus_id, - voltage_level=row.voltage_level, - geom=f"SRID=4326;POINT({row.Laengengrad} {row.Breitengrad})", - ) - session.add(entry) + + if not chp: + for i, row in mastr_loc.iterrows(): + if not row.ThermischeNutzleistung > 0: + entry = EgonPowerPlants( + sources={ + "chp": "MaStR", + "el_capacity": "MaStR scaled with NEP 2021", + "th_capacity": "MaStR", + }, + source_id={"MastrNummer": row.EinheitMastrNummer}, + carrier="biomass", + chp=type(row.KwkMastrNummer) != float, + el_capacity=row.Nettonennleistung, + th_capacity=row.ThermischeNutzleistung / 1000, + scenario=scenario, + bus_id=row.bus_id, + voltage_level=row.voltage_level, + geom=f"SRID=4326;POINT({row.Laengengrad} {row.Breitengrad})", + ) + session.add(entry) + else: + for i, row in mastr_loc.iterrows(): + if row.ThermischeNutzleistung > 0: + entry = EgonChp( + sources={ + "chp": "MaStR", + "el_capacity": "MaStR scaled with NEP 2021", + "th_capacity": "MaStR", + }, + source_id={"MastrNummer": row.EinheitMastrNummer}, + carrier="biomass", + chp=type(row.KwkMastrNummer) != float, + el_capacity=row.Nettonennleistung, + th_capacity=row.ThermischeNutzleistung / 1000, + scenario=scenario, + electrical_bus_id=row.bus_id, + voltage_level=row.voltage_level, + geom=f"SRID=4326;POINT({row.Laengengrad} {row.Breitengrad})", + ) + session.add(entry) session.commit() @@ -529,6 +551,8 @@ def assign_bus_id(power_plants, cfg): ehv_grid_districts, ).bus_id_right + # if not power_plants.bus_id.notnull().all(): + # import pdb; pdb.set_trace() # Assert that all power plants have a bus_id assert power_plants.bus_id.notnull().all(), f"""Some power plants are not attached to a bus: {power_plants[power_plants.bus_id.isnull()]}""" From 4f5b9da60c8d245463d66f9342145887a3b44ffc Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Thu, 4 Nov 2021 16:21:12 +0100 Subject: [PATCH 04/15] Insert biomass CHP to eTraGo tables --- src/egon/data/datasets.yml | 4 + src/egon/data/datasets/chp_etrago.py | 118 +++++++++++++++++++++++---- 2 files changed, 106 insertions(+), 16 deletions(-) diff --git a/src/egon/data/datasets.yml b/src/egon/data/datasets.yml index 5e071b624..48a392193 100644 --- a/src/egon/data/datasets.yml +++ b/src/egon/data/datasets.yml @@ -687,6 +687,7 @@ chp_location: vg250_lan: schema: 'boundaries' table: 'vg250_lan' + mastr_biomass: "bnetza_mastr_biomass_cleaned.csv" targets: chp_table: table: 'egon_chp_plants' @@ -710,6 +711,9 @@ chp_etrago: link: schema: 'grid' table: 'egon_etrago_link' + generator: + schema: 'grid' + table: 'egon_etrago_generator' DSM_CTS_industry: sources: diff --git a/src/egon/data/datasets/chp_etrago.py b/src/egon/data/datasets/chp_etrago.py index 532ccad48..b2910be27 100644 --- a/src/egon/data/datasets/chp_etrago.py +++ b/src/egon/data/datasets/chp_etrago.py @@ -3,6 +3,7 @@ """ import geopandas as gpd +import pandas as pd from egon.data import db, config from egon.data.datasets import Dataset @@ -20,6 +21,16 @@ def __init__(self, dependencies): def insert(): + """Insert combined heat and power plants into eTraGo tables. + + Gas CHP plants are modeled as links to the gas grid, + biomass CHP plants (only in eGon2035) are modeled as generators + + Returns + ------- + None. + + """ sources = config.datasets()["chp_etrago"]["sources"] @@ -33,6 +44,7 @@ def insert(): """ ) + # Select all CHP plants used in district heating chp_dh = db.select_dataframe( f""" SELECT electrical_bus_id, ch4_bus_id, a.carrier, @@ -55,41 +67,45 @@ def insert(): electrical_bus_id, ch4_bus_id, a.carrier, c.bus_id) """ ) + # Divide into biomass and gas CHP which are modelled differently + chp_link_dh = chp_dh[chp_dh.carrier != "biomass"].index + chp_generator_dh = chp_dh[chp_dh.carrier == "biomass"].index - # Create geodataframes for CHP plants + # Create geodataframes for gas CHP plants chp_el = link_geom_from_buses( gpd.GeoDataFrame( - index=chp_dh.index, + index=chp_link_dh, data={ "scn_name": "eGon2035", - "bus0": chp_dh.ch4_bus_id, - "bus1": chp_dh.electrical_bus_id, - "p_nom": chp_dh.el_capacity, + "bus0": chp_dh.loc[chp_link_dh, "ch4_bus_id"], + "bus1": chp_dh.loc[chp_link_dh, "electrical_bus_id"], + "p_nom": chp_dh.loc[chp_link_dh, "el_capacity"], "carrier": "urban central gas CHP", }, ), "eGon2035", ) - + # Set index chp_el["link_id"] = range( db.next_etrago_id("link"), len(chp_el) + db.next_etrago_id("link") ) - + # Insert into database chp_el.to_postgis( targets["link"]["table"], schema=targets["link"]["schema"], con=db.engine(), if_exists="append", ) - + + # chp_heat = link_geom_from_buses( gpd.GeoDataFrame( - index=chp_dh.index, + index=chp_link_dh, data={ "scn_name": "eGon2035", - "bus0": chp_dh.ch4_bus_id, - "bus1": chp_dh.heat_bus_id, - "p_nom": chp_dh.th_capacity, + "bus0": chp_dh.loc[chp_link_dh, "ch4_bus_id"], + "bus1": chp_dh.loc[chp_link_dh, "heat_bus_id"], + "p_nom": chp_dh.loc[chp_link_dh, "th_capacity"], "carrier": "urban central gas CHP heat", }, ), @@ -106,6 +122,52 @@ def insert(): con=db.engine(), if_exists="append", ) + + + # Insert biomass CHP as generators + # Create geodataframes for CHP plants + chp_el_gen = pd.DataFrame( + index=chp_generator_dh, + data={ + "scn_name": "eGon2035", + "bus": chp_dh.loc[chp_generator_dh, "electrical_bus_id"], + "p_nom": chp_dh.loc[chp_generator_dh, "el_capacity"], + "carrier": "urban central biomass CHP", + }, + ) + + chp_el_gen["generator_id"] = range( + db.next_etrago_id("generator"), len(chp_el_gen) + db.next_etrago_id("generator") + ) + + chp_el_gen.to_postgis( + targets["generator"]["table"], + schema=targets["generator"]["schema"], + con=db.engine(), + if_exists="append", + ) + + chp_heat_gen = pd.DataFrame( + index=chp_generator_dh, + data={ + "scn_name": "eGon2035", + "bus": chp_dh.loc[chp_generator_dh, "heat_bus_id"], + "p_nom": chp_dh.loc[chp_generator_dh, "th_capacity"], + "carrier": "urban central biomass CHP heat", + }, + ) + + chp_heat_gen["generator_id"] = range( + db.next_etrago_id("generator"), len(chp_heat_gen) + db.next_etrago_id("generator") + ) + + chp_heat_gen.to_sql( + targets["generator"]["table"], + schema=targets["generator"]["schema"], + con=db.engine(), + if_exists="append", + ) + chp_industry = db.select_dataframe( f""" @@ -117,15 +179,18 @@ def insert(): GROUP BY (electrical_bus_id, ch4_bus_id, carrier) """ ) + chp_link_ind = chp_industry[chp_industry.carrier != "biomass"].index + + chp_generator_ind = chp_industry[chp_industry.carrier == "biomass"].index chp_el_ind = link_geom_from_buses( gpd.GeoDataFrame( - index=chp_industry.index, + index=chp_link_ind, data={ "scn_name": "eGon2035", - "bus0": chp_industry.ch4_bus_id, - "bus1": chp_industry.electrical_bus_id, - "p_nom": chp_industry.el_capacity, + "bus0": chp_industry.loc[chp_link_ind, "ch4_bus_id"], + "bus1": chp_industry.loc[chp_link_ind, "electrical_bus_id"], + "p_nom": chp_industry.loc[chp_link_ind, "el_capacity"], "carrier": "industrial gas CHP", }, ), @@ -142,3 +207,24 @@ def insert(): con=db.engine(), if_exists="append", ) + # Insert biomass CHP as generators + chp_el_ind_gen = pd.DataFrame( + index=chp_generator_dh, + data={ + "scn_name": "eGon2035", + "bus": chp_industry.loc[chp_generator_ind, "electrical_bus_id"], + "p_nom": chp_industry.loc[chp_generator_ind, "el_capacity"], + "carrier": "industrial biomass CHP", + }, + ) + + chp_el_ind_gen["generator_id"] = range( + db.next_etrago_id("generator"), len(chp_el_ind_gen) + db.next_etrago_id("generator") + ) + + chp_el_ind_gen.to_sql( + targets["generator"]["table"], + schema=targets["generator"]["schema"], + con=db.engine(), + if_exists="append", + ) \ No newline at end of file From 2d5996b07cf5b785fabe617ccfbc6aa578622d70 Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Thu, 4 Nov 2021 17:26:15 +0100 Subject: [PATCH 05/15] Delete unused lines --- .../data/datasets/power_plants/__init__.py | 63 +++++++------------ 1 file changed, 22 insertions(+), 41 deletions(-) diff --git a/src/egon/data/datasets/power_plants/__init__.py b/src/egon/data/datasets/power_plants/__init__.py index d8e4121ae..bb6266a62 100755 --- a/src/egon/data/datasets/power_plants/__init__.py +++ b/src/egon/data/datasets/power_plants/__init__.py @@ -220,7 +220,7 @@ def filter_mastr_geometry(mastr, federal_state=None): return mastr_loc -def insert_biomass_plants(scenario, chp=False): +def insert_biomass_plants(scenario): """Insert biomass power plants of future scenario Parameters @@ -275,47 +275,28 @@ def insert_biomass_plants(scenario, chp=False): # Insert entries with location session = sessionmaker(bind=db.engine())() - if not chp: - for i, row in mastr_loc.iterrows(): - if not row.ThermischeNutzleistung > 0: - entry = EgonPowerPlants( - sources={ - "chp": "MaStR", - "el_capacity": "MaStR scaled with NEP 2021", - "th_capacity": "MaStR", - }, - source_id={"MastrNummer": row.EinheitMastrNummer}, - carrier="biomass", - chp=type(row.KwkMastrNummer) != float, - el_capacity=row.Nettonennleistung, - th_capacity=row.ThermischeNutzleistung / 1000, - scenario=scenario, - bus_id=row.bus_id, - voltage_level=row.voltage_level, - geom=f"SRID=4326;POINT({row.Laengengrad} {row.Breitengrad})", - ) - session.add(entry) - else: - for i, row in mastr_loc.iterrows(): - if row.ThermischeNutzleistung > 0: - entry = EgonChp( - sources={ - "chp": "MaStR", - "el_capacity": "MaStR scaled with NEP 2021", - "th_capacity": "MaStR", - }, - source_id={"MastrNummer": row.EinheitMastrNummer}, - carrier="biomass", - chp=type(row.KwkMastrNummer) != float, - el_capacity=row.Nettonennleistung, - th_capacity=row.ThermischeNutzleistung / 1000, - scenario=scenario, - electrical_bus_id=row.bus_id, - voltage_level=row.voltage_level, - geom=f"SRID=4326;POINT({row.Laengengrad} {row.Breitengrad})", - ) - session.add(entry) + for i, row in mastr_loc.iterrows(): + if not row.ThermischeNutzleistung > 0: + entry = EgonPowerPlants( + sources={ + "chp": "MaStR", + "el_capacity": "MaStR scaled with NEP 2021", + "th_capacity": "MaStR", + }, + source_id={"MastrNummer": row.EinheitMastrNummer}, + carrier="biomass", + chp=type(row.KwkMastrNummer) != float, + el_capacity=row.Nettonennleistung, + th_capacity=row.ThermischeNutzleistung / 1000, + scenario=scenario, + bus_id=row.bus_id, + voltage_level=row.voltage_level, + geom=f"SRID=4326;POINT({row.Laengengrad} {row.Breitengrad})", + ) + session.add(entry) + + session.commit() From 686d46e28c6dfc65f4830583e950b325eeee6bf4 Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Thu, 4 Nov 2021 17:26:38 +0100 Subject: [PATCH 06/15] Fix index and datatype for inserting into etrago tables --- src/egon/data/datasets/chp_etrago.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/egon/data/datasets/chp_etrago.py b/src/egon/data/datasets/chp_etrago.py index b2910be27..e453ae0db 100644 --- a/src/egon/data/datasets/chp_etrago.py +++ b/src/egon/data/datasets/chp_etrago.py @@ -77,8 +77,8 @@ def insert(): index=chp_link_dh, data={ "scn_name": "eGon2035", - "bus0": chp_dh.loc[chp_link_dh, "ch4_bus_id"], - "bus1": chp_dh.loc[chp_link_dh, "electrical_bus_id"], + "bus0": chp_dh.loc[chp_link_dh, "ch4_bus_id"].astype(int), + "bus1": chp_dh.loc[chp_link_dh, "electrical_bus_id"].astype(int), "p_nom": chp_dh.loc[chp_link_dh, "el_capacity"], "carrier": "urban central gas CHP", }, @@ -103,8 +103,8 @@ def insert(): index=chp_link_dh, data={ "scn_name": "eGon2035", - "bus0": chp_dh.loc[chp_link_dh, "ch4_bus_id"], - "bus1": chp_dh.loc[chp_link_dh, "heat_bus_id"], + "bus0": chp_dh.loc[chp_link_dh, "ch4_bus_id"].astype(int), + "bus1": chp_dh.loc[chp_link_dh, "heat_bus_id"].astype(int), "p_nom": chp_dh.loc[chp_link_dh, "th_capacity"], "carrier": "urban central gas CHP heat", }, @@ -130,7 +130,7 @@ def insert(): index=chp_generator_dh, data={ "scn_name": "eGon2035", - "bus": chp_dh.loc[chp_generator_dh, "electrical_bus_id"], + "bus": chp_dh.loc[chp_generator_dh, "electrical_bus_id"].astype(int), "p_nom": chp_dh.loc[chp_generator_dh, "el_capacity"], "carrier": "urban central biomass CHP", }, @@ -140,18 +140,19 @@ def insert(): db.next_etrago_id("generator"), len(chp_el_gen) + db.next_etrago_id("generator") ) - chp_el_gen.to_postgis( + chp_el_gen.to_sql( targets["generator"]["table"], schema=targets["generator"]["schema"], con=db.engine(), if_exists="append", + index=False ) chp_heat_gen = pd.DataFrame( index=chp_generator_dh, data={ "scn_name": "eGon2035", - "bus": chp_dh.loc[chp_generator_dh, "heat_bus_id"], + "bus": chp_dh.loc[chp_generator_dh, "heat_bus_id"].astype(int), "p_nom": chp_dh.loc[chp_generator_dh, "th_capacity"], "carrier": "urban central biomass CHP heat", }, @@ -166,6 +167,7 @@ def insert(): schema=targets["generator"]["schema"], con=db.engine(), if_exists="append", + index=False ) @@ -188,8 +190,8 @@ def insert(): index=chp_link_ind, data={ "scn_name": "eGon2035", - "bus0": chp_industry.loc[chp_link_ind, "ch4_bus_id"], - "bus1": chp_industry.loc[chp_link_ind, "electrical_bus_id"], + "bus0": chp_industry.loc[chp_link_ind, "ch4_bus_id"].astype(int), + "bus1": chp_industry.loc[chp_link_ind, "electrical_bus_id"].astype(int), "p_nom": chp_industry.loc[chp_link_ind, "el_capacity"], "carrier": "industrial gas CHP", }, @@ -212,7 +214,7 @@ def insert(): index=chp_generator_dh, data={ "scn_name": "eGon2035", - "bus": chp_industry.loc[chp_generator_ind, "electrical_bus_id"], + "bus": chp_industry.loc[chp_generator_ind, "electrical_bus_id"].astype(int), "p_nom": chp_industry.loc[chp_generator_ind, "el_capacity"], "carrier": "industrial biomass CHP", }, @@ -227,4 +229,5 @@ def insert(): schema=targets["generator"]["schema"], con=db.engine(), if_exists="append", + index=False ) \ No newline at end of file From e41a5fbaba4955b69dc7f27e64acb5a7f5f2a548 Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Thu, 4 Nov 2021 17:42:44 +0100 Subject: [PATCH 07/15] Change order of scaling --- src/egon/data/datasets/chp/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/egon/data/datasets/chp/__init__.py b/src/egon/data/datasets/chp/__init__.py index 123f1ad38..57c2f996f 100644 --- a/src/egon/data/datasets/chp/__init__.py +++ b/src/egon/data/datasets/chp/__init__.py @@ -260,11 +260,11 @@ def insert_biomass_chp(scenario): else: level = "country" - # Scale capacities to meet target values - mastr = scale_prox2now(mastr, target, level=level) - # Choose only entries with valid geometries inside DE/test mode mastr_loc = filter_mastr_geometry(mastr).set_geometry("geometry") + + # Scale capacities to meet target values + mastr_loc = scale_prox2now(mastr_loc, target, level=level) # Assign bus_id if len(mastr_loc) > 0: From c1fec846d1ff0b41ec765dd279ae91e15580e8e7 Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Thu, 4 Nov 2021 17:43:28 +0100 Subject: [PATCH 08/15] Change order to meet target values --- src/egon/data/datasets/power_plants/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/egon/data/datasets/power_plants/__init__.py b/src/egon/data/datasets/power_plants/__init__.py index bb6266a62..8db14760e 100755 --- a/src/egon/data/datasets/power_plants/__init__.py +++ b/src/egon/data/datasets/power_plants/__init__.py @@ -261,12 +261,12 @@ def insert_biomass_plants(scenario): else: level = "country" - # Scale capacities to meet target values - mastr = scale_prox2now(mastr, target, level=level) - # Choose only entries with valid geometries inside DE/test mode mastr_loc = filter_mastr_geometry(mastr).set_geometry("geometry") - + + # Scale capacities to meet target values + mastr_loc = scale_prox2now(mastr_loc, target, level=level) + # Assign bus_id if len(mastr_loc) > 0: mastr_loc["voltage_level"] = assign_voltage_level(mastr_loc, cfg) From 8c56a975568d9f40518b7a165463e133b627e3b0 Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Thu, 4 Nov 2021 17:44:04 +0100 Subject: [PATCH 09/15] Update version number --- src/egon/data/datasets/chp_etrago.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/egon/data/datasets/chp_etrago.py b/src/egon/data/datasets/chp_etrago.py index e453ae0db..d0ff5f304 100644 --- a/src/egon/data/datasets/chp_etrago.py +++ b/src/egon/data/datasets/chp_etrago.py @@ -14,7 +14,7 @@ class ChpEtrago(Dataset): def __init__(self, dependencies): super().__init__( name="ChpEtrago", - version="0.0.0", + version="0.0.1", dependencies=dependencies, tasks=(insert), ) @@ -43,7 +43,13 @@ def insert(): AND scn_name = 'eGon2035' """ ) - + db.execute_sql( + f""" + DELETE FROM {targets['generator']['schema']}.{targets['generator']['table']} + WHERE carrier LIKE '%%CHP%%' + AND scn_name = 'eGon2035' + """ + ) # Select all CHP plants used in district heating chp_dh = db.select_dataframe( f""" @@ -211,7 +217,7 @@ def insert(): ) # Insert biomass CHP as generators chp_el_ind_gen = pd.DataFrame( - index=chp_generator_dh, + index=chp_generator_ind, data={ "scn_name": "eGon2035", "bus": chp_industry.loc[chp_generator_ind, "electrical_bus_id"].astype(int), From 22d759c666949656297cb439c49b1b17a6d60f18 Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Fri, 5 Nov 2021 14:36:17 +0100 Subject: [PATCH 10/15] Update changelog --- CHANGELOG.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 9e793499f..f83a0c9c8 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -149,6 +149,8 @@ Added `#329 `_ * Include allocation of conventional (non CHP) power plants `#392 `_ +* Include biomass CHP plants to eTraGo tables + `#498 `_ .. _PR #159: https://github.com/openego/eGon-data/pull/159 From 3f87a23c22842d315ab657f436234ac6339a9150 Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Fri, 5 Nov 2021 14:36:38 +0100 Subject: [PATCH 11/15] Update version number --- src/egon/data/datasets/chp/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/egon/data/datasets/chp/__init__.py b/src/egon/data/datasets/chp/__init__.py index 57c2f996f..f986f6c71 100644 --- a/src/egon/data/datasets/chp/__init__.py +++ b/src/egon/data/datasets/chp/__init__.py @@ -427,7 +427,7 @@ class Chp(Dataset): def __init__(self, dependencies): super().__init__( name="Chp", - version="0.0.2.dev", + version="0.0.2", dependencies=dependencies, tasks=( create_tables, From b1aeca249eb697bae74beb2a9e494c3a1d4320cb Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Fri, 5 Nov 2021 14:49:31 +0100 Subject: [PATCH 12/15] Drop columns only used for CHP plats from power_plants table --- src/egon/data/datasets/power_plants/__init__.py | 8 -------- src/egon/data/datasets/power_plants/pv_ground_mounted.py | 2 -- src/egon/data/datasets/power_plants/wind_farms.py | 2 -- src/egon/data/datasets/power_plants/wind_offshore.py | 4 +--- 4 files changed, 1 insertion(+), 15 deletions(-) diff --git a/src/egon/data/datasets/power_plants/__init__.py b/src/egon/data/datasets/power_plants/__init__.py index 8db14760e..876a1d302 100755 --- a/src/egon/data/datasets/power_plants/__init__.py +++ b/src/egon/data/datasets/power_plants/__init__.py @@ -41,9 +41,7 @@ class EgonPowerPlants(Base): sources = Column(JSONB) source_id = Column(JSONB) carrier = Column(String) - chp = Column(Boolean) el_capacity = Column(Float) - th_capacity = Column(Float) bus_id = Column(Integer) voltage_level = Column(Integer) weather_cell_id = Column(Integer) @@ -280,15 +278,11 @@ def insert_biomass_plants(scenario): if not row.ThermischeNutzleistung > 0: entry = EgonPowerPlants( sources={ - "chp": "MaStR", "el_capacity": "MaStR scaled with NEP 2021", - "th_capacity": "MaStR", }, source_id={"MastrNummer": row.EinheitMastrNummer}, carrier="biomass", - chp=type(row.KwkMastrNummer) != float, el_capacity=row.Nettonennleistung, - th_capacity=row.ThermischeNutzleistung / 1000, scenario=scenario, bus_id=row.bus_id, voltage_level=row.voltage_level, @@ -374,12 +368,10 @@ def insert_hydro_plants(scenario): for i, row in mastr_loc.iterrows(): entry = EgonPowerPlants( sources={ - "chp": "MaStR", "el_capacity": "MaStR scaled with NEP 2021", }, source_id={"MastrNummer": row.EinheitMastrNummer}, carrier=carrier, - chp=type(row.KwkMastrNummer) != float, el_capacity=row.Nettonennleistung, scenario=scenario, bus_id=row.bus_id, diff --git a/src/egon/data/datasets/power_plants/pv_ground_mounted.py b/src/egon/data/datasets/power_plants/pv_ground_mounted.py index 4b7736d94..811fe6070 100644 --- a/src/egon/data/datasets/power_plants/pv_ground_mounted.py +++ b/src/egon/data/datasets/power_plants/pv_ground_mounted.py @@ -1141,8 +1141,6 @@ def pv_parks(pv_rora, pv_agri, pv_per_distr, scenario_name): # set static column values insert_pv_parks["carrier"] = "solar" - insert_pv_parks["chp"] = False - insert_pv_parks["th_capacity"] = 0 insert_pv_parks["scenario"] = scenario_name # change name and crs of geometry column diff --git a/src/egon/data/datasets/power_plants/wind_farms.py b/src/egon/data/datasets/power_plants/wind_farms.py index 7dd7f0da6..e21a17886 100755 --- a/src/egon/data/datasets/power_plants/wind_farms.py +++ b/src/egon/data/datasets/power_plants/wind_farms.py @@ -433,8 +433,6 @@ def match_district_se(x): # Set static column values insert_wind_farms["carrier"] = source - insert_wind_farms["chp"] = False - insert_wind_farms["th_capacity"] = 0 insert_wind_farms["scenario"] = scenario_year # Change name and crs of geometry column diff --git a/src/egon/data/datasets/power_plants/wind_offshore.py b/src/egon/data/datasets/power_plants/wind_offshore.py index d399bcd69..24a5a0455 100644 --- a/src/egon/data/datasets/power_plants/wind_offshore.py +++ b/src/egon/data/datasets/power_plants/wind_offshore.py @@ -117,11 +117,9 @@ def insert(): # Assign static values offshore["carrier"] = "wind_offshore" - offshore["chp"] = False offshore["el_capacity"] = offshore["C 2035"] offshore["scenario"] = "eGon2035" - offshore["th_capacity"] = 0 - + # Delete unnecessary columns offshore.drop( [ From a49f48edefd67ebd04f975b28fe1f63995a4fc37 Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Fri, 5 Nov 2021 14:50:24 +0100 Subject: [PATCH 13/15] Delete commented lines --- src/egon/data/datasets/power_plants/__init__.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/egon/data/datasets/power_plants/__init__.py b/src/egon/data/datasets/power_plants/__init__.py index 876a1d302..d7e8f3e6d 100755 --- a/src/egon/data/datasets/power_plants/__init__.py +++ b/src/egon/data/datasets/power_plants/__init__.py @@ -524,8 +524,6 @@ def assign_bus_id(power_plants, cfg): ehv_grid_districts, ).bus_id_right - # if not power_plants.bus_id.notnull().all(): - # import pdb; pdb.set_trace() # Assert that all power plants have a bus_id assert power_plants.bus_id.notnull().all(), f"""Some power plants are not attached to a bus: {power_plants[power_plants.bus_id.isnull()]}""" From 4f48b8563dbf3f87cbf94a171e5d1788435bfd07 Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Fri, 5 Nov 2021 14:53:51 +0100 Subject: [PATCH 14/15] Black --- src/egon/data/datasets/chp/__init__.py | 59 ++++++----- src/egon/data/datasets/chp/small_chp.py | 8 +- src/egon/data/datasets/chp_etrago.py | 97 +++++++++++-------- .../data/datasets/power_plants/__init__.py | 6 +- 4 files changed, 95 insertions(+), 75 deletions(-) diff --git a/src/egon/data/datasets/chp/__init__.py b/src/egon/data/datasets/chp/__init__.py index f986f6c71..a2a99e7f2 100644 --- a/src/egon/data/datasets/chp/__init__.py +++ b/src/egon/data/datasets/chp/__init__.py @@ -15,7 +15,12 @@ assign_use_case, ) from egon.data.datasets.etrago_setup import link_geom_from_buses -from egon.data.datasets.power_plants import filter_mastr_geometry, scale_prox2now, assign_voltage_level, assign_bus_id +from egon.data.datasets.power_plants import ( + filter_mastr_geometry, + scale_prox2now, + assign_voltage_level, + assign_bus_id, +) from sqlalchemy import Column, String, Float, Integer, Sequence, Boolean from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base @@ -184,7 +189,7 @@ def assign_heat_bus(scenario="eGon2035"): # Insert district heating CHP with heat_bus_id session = sessionmaker(bind=db.engine())() for i, row in chp.iterrows(): - if row.carrier != 'biomass': + if row.carrier != "biomass": entry = EgonChp( id=i, sources=row.sources, @@ -218,6 +223,7 @@ def assign_heat_bus(scenario="eGon2035"): session.add(entry) session.commit() + def insert_biomass_chp(scenario): """Insert biomass chp plants of future scenario @@ -262,7 +268,7 @@ def insert_biomass_chp(scenario): # Choose only entries with valid geometries inside DE/test mode mastr_loc = filter_mastr_geometry(mastr).set_geometry("geometry") - + # Scale capacities to meet target values mastr_loc = scale_prox2now(mastr_loc, target, level=level) @@ -270,32 +276,33 @@ def insert_biomass_chp(scenario): if len(mastr_loc) > 0: mastr_loc["voltage_level"] = assign_voltage_level(mastr_loc, cfg) mastr_loc = assign_bus_id(mastr_loc, cfg) - - mastr_loc = assign_use_case(mastr_loc, cfg['sources']) + + mastr_loc = assign_use_case(mastr_loc, cfg["sources"]) # Insert entries with location session = sessionmaker(bind=db.engine())() for i, row in mastr_loc.iterrows(): - if row.ThermischeNutzleistung > 0: - entry = EgonChp( - sources={ - "chp": "MaStR", - "el_capacity": "MaStR scaled with NEP 2021", - "th_capacity": "MaStR", - }, - source_id={"MastrNummer": row.EinheitMastrNummer}, - carrier="biomass", - el_capacity=row.Nettonennleistung, - th_capacity=row.ThermischeNutzleistung / 1000, - scenario=scenario, - district_heating=row.district_heating, - electrical_bus_id=row.bus_id, - voltage_level=row.voltage_level, - geom=f"SRID=4326;POINT({row.Laengengrad} {row.Breitengrad})", - ) - session.add(entry) + if row.ThermischeNutzleistung > 0: + entry = EgonChp( + sources={ + "chp": "MaStR", + "el_capacity": "MaStR scaled with NEP 2021", + "th_capacity": "MaStR", + }, + source_id={"MastrNummer": row.EinheitMastrNummer}, + carrier="biomass", + el_capacity=row.Nettonennleistung, + th_capacity=row.ThermischeNutzleistung / 1000, + scenario=scenario, + district_heating=row.district_heating, + electrical_bus_id=row.bus_id, + voltage_level=row.voltage_level, + geom=f"SRID=4326;POINT({row.Laengengrad} {row.Breitengrad})", + ) + session.add(entry) session.commit() - + + def insert_chp_egon2035(): """Insert CHP plants for eGon2035 considering NEP and MaStR data @@ -310,8 +317,8 @@ def insert_chp_egon2035(): sources = config.datasets()["chp_location"]["sources"] targets = config.datasets()["chp_location"]["targets"] - - insert_biomass_chp('eGon2035') + + insert_biomass_chp("eGon2035") # Insert large CHPs based on NEP's list of conventional power plants MaStR_konv = insert_large_chp(sources, targets["chp_table"], EgonChp) diff --git a/src/egon/data/datasets/chp/small_chp.py b/src/egon/data/datasets/chp/small_chp.py index 03e7c6296..aee035c5d 100644 --- a/src/egon/data/datasets/chp/small_chp.py +++ b/src/egon/data/datasets/chp/small_chp.py @@ -254,14 +254,18 @@ def extension_to_areas( areas.area_id == selected_areas.area_id.values[0] ], "demand", - ] -= (selected_chp.th_capacity * flh) + ] -= ( + selected_chp.th_capacity * flh + ) else: areas.loc[ areas.index[ areas.osm_id == selected_areas.osm_id.values[0] ], "demand", - ] -= (selected_chp.th_capacity * flh) + ] -= ( + selected_chp.th_capacity * flh + ) areas = areas[areas.demand > 0] else: diff --git a/src/egon/data/datasets/chp_etrago.py b/src/egon/data/datasets/chp_etrago.py index d0ff5f304..9244ba7f7 100644 --- a/src/egon/data/datasets/chp_etrago.py +++ b/src/egon/data/datasets/chp_etrago.py @@ -21,9 +21,9 @@ def __init__(self, dependencies): def insert(): - """Insert combined heat and power plants into eTraGo tables. - - Gas CHP plants are modeled as links to the gas grid, + """Insert combined heat and power plants into eTraGo tables. + + Gas CHP plants are modeled as links to the gas grid, biomass CHP plants (only in eGon2035) are modeled as generators Returns @@ -74,7 +74,7 @@ def insert(): """ ) # Divide into biomass and gas CHP which are modelled differently - chp_link_dh = chp_dh[chp_dh.carrier != "biomass"].index + chp_link_dh = chp_dh[chp_dh.carrier != "biomass"].index chp_generator_dh = chp_dh[chp_dh.carrier == "biomass"].index # Create geodataframes for gas CHP plants @@ -84,7 +84,9 @@ def insert(): data={ "scn_name": "eGon2035", "bus0": chp_dh.loc[chp_link_dh, "ch4_bus_id"].astype(int), - "bus1": chp_dh.loc[chp_link_dh, "electrical_bus_id"].astype(int), + "bus1": chp_dh.loc[chp_link_dh, "electrical_bus_id"].astype( + int + ), "p_nom": chp_dh.loc[chp_link_dh, "el_capacity"], "carrier": "urban central gas CHP", }, @@ -102,8 +104,8 @@ def insert(): con=db.engine(), if_exists="append", ) - - # + + # chp_heat = link_geom_from_buses( gpd.GeoDataFrame( index=chp_link_dh, @@ -128,22 +130,24 @@ def insert(): con=db.engine(), if_exists="append", ) - - - # Insert biomass CHP as generators + + # Insert biomass CHP as generators # Create geodataframes for CHP plants chp_el_gen = pd.DataFrame( index=chp_generator_dh, - data={ - "scn_name": "eGon2035", - "bus": chp_dh.loc[chp_generator_dh, "electrical_bus_id"].astype(int), - "p_nom": chp_dh.loc[chp_generator_dh, "el_capacity"], - "carrier": "urban central biomass CHP", - }, - ) + data={ + "scn_name": "eGon2035", + "bus": chp_dh.loc[chp_generator_dh, "electrical_bus_id"].astype( + int + ), + "p_nom": chp_dh.loc[chp_generator_dh, "el_capacity"], + "carrier": "urban central biomass CHP", + }, + ) chp_el_gen["generator_id"] = range( - db.next_etrago_id("generator"), len(chp_el_gen) + db.next_etrago_id("generator") + db.next_etrago_id("generator"), + len(chp_el_gen) + db.next_etrago_id("generator"), ) chp_el_gen.to_sql( @@ -151,21 +155,22 @@ def insert(): schema=targets["generator"]["schema"], con=db.engine(), if_exists="append", - index=False + index=False, ) chp_heat_gen = pd.DataFrame( index=chp_generator_dh, - data={ - "scn_name": "eGon2035", - "bus": chp_dh.loc[chp_generator_dh, "heat_bus_id"].astype(int), - "p_nom": chp_dh.loc[chp_generator_dh, "th_capacity"], - "carrier": "urban central biomass CHP heat", - }, - ) + data={ + "scn_name": "eGon2035", + "bus": chp_dh.loc[chp_generator_dh, "heat_bus_id"].astype(int), + "p_nom": chp_dh.loc[chp_generator_dh, "th_capacity"], + "carrier": "urban central biomass CHP heat", + }, + ) chp_heat_gen["generator_id"] = range( - db.next_etrago_id("generator"), len(chp_heat_gen) + db.next_etrago_id("generator") + db.next_etrago_id("generator"), + len(chp_heat_gen) + db.next_etrago_id("generator"), ) chp_heat_gen.to_sql( @@ -173,9 +178,8 @@ def insert(): schema=targets["generator"]["schema"], con=db.engine(), if_exists="append", - index=False + index=False, ) - chp_industry = db.select_dataframe( f""" @@ -188,7 +192,7 @@ def insert(): """ ) chp_link_ind = chp_industry[chp_industry.carrier != "biomass"].index - + chp_generator_ind = chp_industry[chp_industry.carrier == "biomass"].index chp_el_ind = link_geom_from_buses( @@ -196,8 +200,12 @@ def insert(): index=chp_link_ind, data={ "scn_name": "eGon2035", - "bus0": chp_industry.loc[chp_link_ind, "ch4_bus_id"].astype(int), - "bus1": chp_industry.loc[chp_link_ind, "electrical_bus_id"].astype(int), + "bus0": chp_industry.loc[chp_link_ind, "ch4_bus_id"].astype( + int + ), + "bus1": chp_industry.loc[ + chp_link_ind, "electrical_bus_id" + ].astype(int), "p_nom": chp_industry.loc[chp_link_ind, "el_capacity"], "carrier": "industrial gas CHP", }, @@ -215,19 +223,22 @@ def insert(): con=db.engine(), if_exists="append", ) - # Insert biomass CHP as generators + # Insert biomass CHP as generators chp_el_ind_gen = pd.DataFrame( index=chp_generator_ind, - data={ - "scn_name": "eGon2035", - "bus": chp_industry.loc[chp_generator_ind, "electrical_bus_id"].astype(int), - "p_nom": chp_industry.loc[chp_generator_ind, "el_capacity"], - "carrier": "industrial biomass CHP", - }, - ) + data={ + "scn_name": "eGon2035", + "bus": chp_industry.loc[ + chp_generator_ind, "electrical_bus_id" + ].astype(int), + "p_nom": chp_industry.loc[chp_generator_ind, "el_capacity"], + "carrier": "industrial biomass CHP", + }, + ) chp_el_ind_gen["generator_id"] = range( - db.next_etrago_id("generator"), len(chp_el_ind_gen) + db.next_etrago_id("generator") + db.next_etrago_id("generator"), + len(chp_el_ind_gen) + db.next_etrago_id("generator"), ) chp_el_ind_gen.to_sql( @@ -235,5 +246,5 @@ def insert(): schema=targets["generator"]["schema"], con=db.engine(), if_exists="append", - index=False - ) \ No newline at end of file + index=False, + ) diff --git a/src/egon/data/datasets/power_plants/__init__.py b/src/egon/data/datasets/power_plants/__init__.py index d7e8f3e6d..fa70cdabd 100755 --- a/src/egon/data/datasets/power_plants/__init__.py +++ b/src/egon/data/datasets/power_plants/__init__.py @@ -261,10 +261,10 @@ def insert_biomass_plants(scenario): # Choose only entries with valid geometries inside DE/test mode mastr_loc = filter_mastr_geometry(mastr).set_geometry("geometry") - + # Scale capacities to meet target values mastr_loc = scale_prox2now(mastr_loc, target, level=level) - + # Assign bus_id if len(mastr_loc) > 0: mastr_loc["voltage_level"] = assign_voltage_level(mastr_loc, cfg) @@ -272,7 +272,6 @@ def insert_biomass_plants(scenario): # Insert entries with location session = sessionmaker(bind=db.engine())() - for i, row in mastr_loc.iterrows(): if not row.ThermischeNutzleistung > 0: @@ -290,7 +289,6 @@ def insert_biomass_plants(scenario): ) session.add(entry) - session.commit() From 59b1a810aed5ff01df9350e9558518ba49ecf4ae Mon Sep 17 00:00:00 2001 From: ClaraBuettner Date: Fri, 5 Nov 2021 14:57:38 +0100 Subject: [PATCH 15/15] Apply isort --- src/egon/data/datasets/chp/__init__.py | 23 ++++++++++--------- src/egon/data/datasets/chp/match_nep.py | 11 +++++---- src/egon/data/datasets/chp/small_chp.py | 9 ++++---- src/egon/data/datasets/chp_etrago.py | 4 ++-- .../power_plants/pv_ground_mounted.py | 6 ++--- .../datasets/power_plants/wind_offshore.py | 8 ++++--- 6 files changed, 33 insertions(+), 28 deletions(-) diff --git a/src/egon/data/datasets/chp/__init__.py b/src/egon/data/datasets/chp/__init__.py index a2a99e7f2..d7f728ea1 100644 --- a/src/egon/data/datasets/chp/__init__.py +++ b/src/egon/data/datasets/chp/__init__.py @@ -3,30 +3,31 @@ (CHP) plants. """ -import pandas as pd +from geoalchemy2 import Geometry +from shapely.ops import nearest_points +from sqlalchemy import Boolean, Column, Float, Integer, Sequence, String +from sqlalchemy.dialects.postgresql import JSONB +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import sessionmaker import geopandas as gpd -from egon.data import db, config +import pandas as pd + +from egon.data import config, db from egon.data.datasets import Dataset from egon.data.datasets.chp.match_nep import insert_large_chp from egon.data.datasets.chp.small_chp import ( + assign_use_case, existing_chp_smaller_10mw, extension_per_federal_state, select_target, - assign_use_case, ) from egon.data.datasets.etrago_setup import link_geom_from_buses from egon.data.datasets.power_plants import ( + assign_bus_id, + assign_voltage_level, filter_mastr_geometry, scale_prox2now, - assign_voltage_level, - assign_bus_id, ) -from sqlalchemy import Column, String, Float, Integer, Sequence, Boolean -from sqlalchemy.orm import sessionmaker -from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.dialects.postgresql import JSONB -from geoalchemy2 import Geometry -from shapely.ops import nearest_points Base = declarative_base() diff --git a/src/egon/data/datasets/chp/match_nep.py b/src/egon/data/datasets/chp/match_nep.py index af45425b8..74e819a72 100644 --- a/src/egon/data/datasets/chp/match_nep.py +++ b/src/egon/data/datasets/chp/match_nep.py @@ -2,19 +2,20 @@ The module containing all code dealing with large chp from NEP list. """ -import pandas as pd +from sqlalchemy.orm import sessionmaker import geopandas -from egon.data import db, config +import pandas as pd + +from egon.data import config, db +from egon.data.datasets.chp.small_chp import assign_use_case from egon.data.datasets.power_plants import ( - assign_voltage_level, assign_bus_id, assign_gas_bus_id, + assign_voltage_level, filter_mastr_geometry, select_target, ) -from egon.data.datasets.chp.small_chp import assign_use_case from egon.data.datasets.scenario_capacities import map_carrier -from sqlalchemy.orm import sessionmaker ##################################### NEP treatment ################################# diff --git a/src/egon/data/datasets/chp/small_chp.py b/src/egon/data/datasets/chp/small_chp.py index aee035c5d..58e04b6e1 100644 --- a/src/egon/data/datasets/chp/small_chp.py +++ b/src/egon/data/datasets/chp/small_chp.py @@ -1,16 +1,17 @@ """ The module containing all code dealing with chp < 10MW. """ -from egon.data import db, config +from sqlalchemy.orm import sessionmaker +import geopandas as gpd +import numpy as np + +from egon.data import config, db from egon.data.datasets.power_plants import ( assign_bus_id, assign_gas_bus_id, filter_mastr_geometry, select_target, ) -from sqlalchemy.orm import sessionmaker -import geopandas as gpd -import numpy as np def insert_mastr_chp(mastr_chp, EgonChp): diff --git a/src/egon/data/datasets/chp_etrago.py b/src/egon/data/datasets/chp_etrago.py index 9244ba7f7..33467e67c 100644 --- a/src/egon/data/datasets/chp_etrago.py +++ b/src/egon/data/datasets/chp_etrago.py @@ -4,9 +4,9 @@ import geopandas as gpd import pandas as pd -from egon.data import db, config -from egon.data.datasets import Dataset +from egon.data import config, db +from egon.data.datasets import Dataset from egon.data.datasets.etrago_setup import link_geom_from_buses diff --git a/src/egon/data/datasets/power_plants/pv_ground_mounted.py b/src/egon/data/datasets/power_plants/pv_ground_mounted.py index 811fe6070..880d36493 100644 --- a/src/egon/data/datasets/power_plants/pv_ground_mounted.py +++ b/src/egon/data/datasets/power_plants/pv_ground_mounted.py @@ -1,10 +1,10 @@ +from shapely import wkb +import geopandas as gpd import numpy as np +import pandas as pd import psycopg2 -import geopandas as gpd -import pandas as pd from egon.data import db -from shapely import wkb def insert(): diff --git a/src/egon/data/datasets/power_plants/wind_offshore.py b/src/egon/data/datasets/power_plants/wind_offshore.py index 24a5a0455..2b3be6bcb 100644 --- a/src/egon/data/datasets/power_plants/wind_offshore.py +++ b/src/egon/data/datasets/power_plants/wind_offshore.py @@ -1,9 +1,11 @@ -import pandas as pd +from pathlib import Path + +from shapely.geometry import Point import geopandas as gpd import numpy as np +import pandas as pd + from egon.data import db -from shapely.geometry import Point -from pathlib import Path import egon.data.config