Updated osm-prebuilt network to v0.4 and added version control to config (#1293)

* Updated base_network script and rules.

* Updated osm-prebuilt to version 0.4 and added version control.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Bobby Xiong 2024-09-13 14:55:52 +02:00 committed by GitHub
parent dbe7f48d6e
commit 42f2c37ebf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 53 additions and 19 deletions

View File

@ -88,6 +88,7 @@ co2_budget:
electricity: electricity:
voltages: [200., 220., 300., 380., 500., 750.] voltages: [200., 220., 300., 380., 500., 750.]
base_network: osm-prebuilt base_network: osm-prebuilt
osm-prebuilt-version: 0.4
gaslimit_enable: false gaslimit_enable: false
gaslimit: false gaslimit: false
co2limit_enable: false co2limit_enable: false

View File

@ -1,6 +1,7 @@
,Unit,Values,Description ,Unit,Values,Description
voltages,kV,"Any subset of {200., 220., 300., 380., 500., 750.}",Voltage levels to consider voltages,kV,"Any subset of {200., 220., 300., 380., 500., 750.}",Voltage levels to consider
base_network, --, "Any value in {'entsoegridkit', 'osm-prebuilt', 'osm-raw}", "Specify the underlying base network, i.e. GridKit (based on ENTSO-E web map extract, OpenStreetMap (OSM) prebuilt or raw (built from raw OSM data), takes longer." base_network, --, "Any value in {'entsoegridkit', 'osm-prebuilt', 'osm-raw}", "Specify the underlying base network, i.e. GridKit (based on ENTSO-E web map extract, OpenStreetMap (OSM) prebuilt or raw (built from raw OSM data), takes longer."
osm-prebuilt-version, --, "float, any value in range 0.1-0.4", "Choose the version of the prebuilt OSM network. Defaults to latest Zenodo release."
gaslimit_enable,bool,true or false,Add an overall absolute gas limit configured in ``electricity: gaslimit``. gaslimit_enable,bool,true or false,Add an overall absolute gas limit configured in ``electricity: gaslimit``.
gaslimit,MWhth,float or false,Global gas usage limit gaslimit,MWhth,float or false,Global gas usage limit
co2limit_enable,bool,true or false,Add an overall absolute carbon-dioxide emissions limit configured in ``electricity: co2limit`` in :mod:`prepare_network`. **Warning:** This option should currently only be used with electricity-only networks, not for sector-coupled networks.. co2limit_enable,bool,true or false,Add an overall absolute carbon-dioxide emissions limit configured in ``electricity: co2limit`` in :mod:`prepare_network`. **Warning:** This option should currently only be used with electricity-only networks, not for sector-coupled networks..

Can't render this file because it has a wrong number of fields in line 6.

View File

@ -299,10 +299,10 @@ Data in this section is retrieved and extracted in rules specified in ``rules/re
``data/osm-prebuilt`` ``data/osm-prebuilt``
- **Source:** OpenStreetMap; Xiong, B., Neumann, F., & Brown, T. (2024). - **Source:** OpenStreetMap; Xiong, B., Neumann, F., & Brown, T. (2024).
Prebuilt Electricity Network for PyPSA-Eur based on OpenStreetMap Data (0.3) Prebuilt Electricity Network for PyPSA-Eur based on OpenStreetMap Data (0.4)
[Data set]. Zenodo. https://doi.org/10.5281/zenodo.13358976 [Data set]. Zenodo. https://doi.org/10.5281/zenodo.13759222
- **Link:** https://zenodo.org/records/13358976 - **Link:** https://zenodo.org/records/13759222
- **License:** ODbL (`reference <https://zenodo.org/records/13358976>`) - **License:** ODbL (`reference <https://zenodo.org/records/13759222>`)
- **Description:** Pre-built data of high-voltage transmission grid in Europe from OpenStreetMap. - **Description:** Pre-built data of high-voltage transmission grid in Europe from OpenStreetMap.
``data/osm-raw`` ``data/osm-raw``

View File

@ -32,6 +32,10 @@ Release Notes
* The sources of nearly all data files are now listed in the documentation. * The sources of nearly all data files are now listed in the documentation.
* Updated osm-prebuilt network to version 0.4: https://doi.org/10.5281/zenodo.13759222 : Added Kosovo (XK) as dedicated region. Fixed major 330 kV line in Moldova (MD) (https://www.openstreetmap.org/way/33360284).
* Add version control to osm-prebuilt: `config["electricity"]["osm-prebuilt-version"]`. Defaults to latest Zenodo release, i.e. v0.4, Config is only considered when selecting `osm-prebuilt` as `base_network`.
PyPSA-Eur 0.12.0 (30th August 2024) PyPSA-Eur 0.12.0 (30th August 2024)
=================================== ===================================

View File

@ -52,12 +52,16 @@ rule build_powerplants:
def input_base_network(w): def input_base_network(w):
base_network = config_provider("electricity", "base_network")(w) base_network = config_provider("electricity", "base_network")(w)
osm_prebuilt_version = config_provider("electricity", "osm-prebuilt-version")(w)
components = {"buses", "lines", "links", "converters", "transformers"} components = {"buses", "lines", "links", "converters", "transformers"}
if base_network == "osm-raw": if base_network == "osm-raw":
inputs = {c: resources(f"osm-raw/build/{c}.csv") for c in components} inputs = {c: resources(f"osm-raw/build/{c}.csv") for c in components}
else: elif base_network == "osm-prebuilt":
inputs = {
c: f"data/{base_network}/{osm_prebuilt_version}/{c}.csv" for c in components
}
elif base_network == "entsoegridkit":
inputs = {c: f"data/{base_network}/{c}.csv" for c in components} inputs = {c: f"data/{base_network}/{c}.csv" for c in components}
if base_network == "entsoegridkit":
inputs["parameter_corrections"] = "data/parameter_corrections.yaml" inputs["parameter_corrections"] = "data/parameter_corrections.yaml"
inputs["links_p_nom"] = "data/links_p_nom.csv" inputs["links_p_nom"] = "data/links_p_nom.csv"
return inputs return inputs

View File

@ -534,24 +534,38 @@ if config["enable"]["retrieve"]:
if config["enable"]["retrieve"] and ( if config["enable"]["retrieve"] and (
config["electricity"]["base_network"] == "osm-prebuilt" config["electricity"]["base_network"] == "osm-prebuilt"
): ):
# Dictionary of prebuilt versions, e.g. 0.3 : "13358976"
osm_prebuilt_version = {
0.1: "12799202",
0.2: "13342577",
0.3: "13358976",
0.4: "13759222",
}
# update rule to use the correct version
rule retrieve_osm_prebuilt: rule retrieve_osm_prebuilt:
input: input:
buses=storage("https://zenodo.org/records/13358976/files/buses.csv"), buses=storage(
converters=storage( f"https://zenodo.org/records/{osm_prebuilt_version[config['electricity']['osm-prebuilt-version']]}/files/buses.csv"
"https://zenodo.org/records/13358976/files/converters.csv" ),
converters=storage(
f"https://zenodo.org/records/{osm_prebuilt_version[config['electricity']['osm-prebuilt-version']]}/files/converters.csv"
),
lines=storage(
f"https://zenodo.org/records/{osm_prebuilt_version[config['electricity']['osm-prebuilt-version']]}/files/lines.csv"
),
links=storage(
f"https://zenodo.org/records/{osm_prebuilt_version[config['electricity']['osm-prebuilt-version']]}/files/links.csv"
), ),
lines=storage("https://zenodo.org/records/13358976/files/lines.csv"),
links=storage("https://zenodo.org/records/13358976/files/links.csv"),
transformers=storage( transformers=storage(
"https://zenodo.org/records/13358976/files/transformers.csv" f"https://zenodo.org/records/{osm_prebuilt_version[config['electricity']['osm-prebuilt-version']]}/files/transformers.csv"
), ),
output: output:
buses="data/osm-prebuilt/buses.csv", buses=f"data/osm-prebuilt/{config['electricity']['osm-prebuilt-version']}/buses.csv",
converters="data/osm-prebuilt/converters.csv", converters=f"data/osm-prebuilt/{config['electricity']['osm-prebuilt-version']}/converters.csv",
lines="data/osm-prebuilt/lines.csv", lines=f"data/osm-prebuilt/{config['electricity']['osm-prebuilt-version']}/lines.csv",
links="data/osm-prebuilt/links.csv", links=f"data/osm-prebuilt/{config['electricity']['osm-prebuilt-version']}/links.csv",
transformers="data/osm-prebuilt/transformers.csv", transformers=f"data/osm-prebuilt/{config['electricity']['osm-prebuilt-version']}/transformers.csv",
log: log:
"logs/retrieve_osm_prebuilt.log", "logs/retrieve_osm_prebuilt.log",
threads: 1 threads: 1

View File

@ -717,6 +717,7 @@ def base_network(
): ):
base_network = config["electricity"].get("base_network") base_network = config["electricity"].get("base_network")
osm_prebuilt_version = config["electricity"].get("osm-prebuilt-version")
assert base_network in { assert base_network in {
"entsoegridkit", "entsoegridkit",
"osm-raw", "osm-raw",
@ -728,7 +729,12 @@ def base_network(
DeprecationWarning, DeprecationWarning,
) )
logger.info(f"Creating base network using {base_network}.") logger_str = (
f"Creating base network using {base_network}"
+ (f" v{osm_prebuilt_version}" if base_network == "osm-prebuilt" else "")
+ "."
)
logger.info(logger_str)
buses = _load_buses(buses, europe_shape, config) buses = _load_buses(buses, europe_shape, config)
transformers = _load_transformers(buses, transformers) transformers = _load_transformers(buses, transformers)
@ -764,7 +770,11 @@ def base_network(
converters = _set_electrical_parameters_converters(converters, config) converters = _set_electrical_parameters_converters(converters, config)
n = pypsa.Network() n = pypsa.Network()
n.name = f"PyPSA-Eur ({base_network})" n.name = (
f"PyPSA-Eur ({base_network}"
+ (f" v{osm_prebuilt_version}" if base_network == "osm-prebuilt" else "")
+ ")"
)
time = get_snapshots(snakemake.params.snapshots, snakemake.params.drop_leap_day) time = get_snapshots(snakemake.params.snapshots, snakemake.params.drop_leap_day)
n.set_snapshots(time) n.set_snapshots(time)