Only add buses in specified countries (#1308)

* Only add buses in specified countries

This is necessary for the new OSM-based base network, where loaded
buses already have a "country" attribute.

* Add release note
This commit is contained in:
Koen van Greevenbroek 2024-09-18 16:29:05 +02:00 committed by GitHub
parent bb8363a650
commit 38f2dc7a75
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 3 deletions

View File

@ -73,6 +73,8 @@ Upcoming Release
* Added 98% imperfect capture rate of Allam cycle gas turbine.
* Resolved a problem where excluding certain countries from `countries` configuration led to clustering errors.
PyPSA-Eur 0.13.0 (13th September 2024)
======================================

View File

@ -135,7 +135,7 @@ def _find_closest_links(links, new_links, distance_upper_bound=1.5):
)
def _load_buses(buses, europe_shape, config):
def _load_buses(buses, europe_shape, countries, config):
buses = (
pd.read_csv(
buses,
@ -161,6 +161,12 @@ def _load_buses(buses, europe_shape, config):
lambda p: europe_shape_prepped.contains(Point(p)), axis=1
)
buses_in_countries_b = (
buses.country.isin(countries)
if "country" in buses
else pd.Series(True, buses.index)
)
v_nom_min = min(config["electricity"]["voltages"])
v_nom_max = max(config["electricity"]["voltages"])
@ -173,7 +179,9 @@ def _load_buses(buses, europe_shape, config):
)
logger.info(f"Removing buses outside of range AC {v_nom_min} - {v_nom_max} V")
return pd.DataFrame(buses.loc[buses_in_europe_b & buses_with_v_nom_to_keep_b])
return pd.DataFrame(
buses.loc[buses_in_europe_b & buses_in_countries_b & buses_with_v_nom_to_keep_b]
)
def _load_transformers(buses, transformers):
@ -712,6 +720,7 @@ def base_network(
europe_shape,
country_shapes,
offshore_shapes,
countries,
parameter_corrections,
config,
):
@ -736,7 +745,7 @@ def base_network(
)
logger.info(logger_str)
buses = _load_buses(buses, europe_shape, config)
buses = _load_buses(buses, europe_shape, countries, config)
transformers = _load_transformers(buses, transformers)
lines = _load_lines(buses, lines)
@ -1006,6 +1015,7 @@ if __name__ == "__main__":
europe_shape,
country_shapes,
offshore_shapes,
countries,
parameter_corrections,
config,
)