Skip to content

modelblocks-org/module_powerplants

Repository files navigation

Powerplants module

A data module to estimate global powerplant capacities for any region in the world at any resolution.

About

This is a modular snakemake workflow created as part of the Modelblocks project. It can be imported directly into any snakemake workflow.

For more information, please consult the Modelblocks documentation, the integration example, and the snakemake documentation.

Overview

Data processing steps:

  1. Stable version-controlled global datasets are downloaded, including:
  2. Individual powerplants are prepared into point-source categories: bioenergy, fossil, geothermal, hydropower, nuclear, large_solar, and wind.
    • Fuel-burning powerplants (fossil, bioenergy) are assigned unique fuel-classes depending on the combination of fuels they utilise.
    • For utility-scale solar projects, satellite detected TZ-Solar Asset Mapper facilities are matched to GEM-Global Solar Power Tracker data to obtain a highly complete dataset of large-scale solar facilities.
  3. Powerplants are selected according to the shapes file provided by the user. Depending on the configuration, their placement may be adjusted per technology and country.

  1. Powerplant start and end dates are imputed per category/technology using the configuration.
    • lifetime_years determines overall technology lifetime.
    • retirement_delay_years determines the remaining years of powerplants currently operating beyond their expected lifetime.

Note

Powerplant start/end dates are only imputed if they are not provided in the original dataset.

  1. Optionally, powerplant capacities are adjusted evenly per category and country to match EIA statistics.

Important

This stage may significantly inflate/deflate individual powerplants. We encourage users to carefully assess if this adjustment is merited by their use-case.

  1. Powerplant capacity is aggregated to the provided shapes, for either adjusted or unadjusted powerplants.

  1. Solar is processed as a special case because rooftop PV panels are not covered in GEM or Transition-Zero data.
    1. Per country: $solar_{rooftopPV} = solar_{nationalStatistics} - solar_{largeScale}$.
    2. A user-provided proxy raster is used to determine how to disaggregate $solar_{rooftopPV}$.
    3. This proxy is used to determine the aggregated rooftop PV capacity per-shape.
    4. The final aggregated solar output combines large_solar facilities with proxied rooftop PV capacity.

Note

Due to this assumption, the lifetime of rooftop PV capacity is left undetermined.

Important assumptions

  • The current reference year for operating capacity, national statistics adjustment, and status imputation is 2024.
  • User-provided shapes should add up to whole countries. This is required for national statistics and rooftop PV proxying to remain meaningful.
  • Adjusted outputs rescale operating powerplants to match EIA national category totals. Future and retired plants are kept unchanged.
  • large_solar is available as a point-source category for utility PV and CSP. solar is only available for aggregated outputs because rooftop PV is represented through a proxy raster rather than individual plant points.

Configuration

Please consult the configuration README and the configuration example for a general overview on the configuration options of this module.

Input / output structure

Required user inputs:

  • <shapes>: GeoParquet file with the target regional disaggregation. It must contain shape_id, country_id (ISO-3), shape_class (land or maritime), and valid polygon geometry.
  • <proxy_rooftop_pv>: GeoTIFF proxy raster to use for adjusted aggregated solar outputs.

Optional user inputs:

  • <imputed_powerplants>: category-specific GeoParquet files with additional point-source powerplants. These can add missing facilities or replace source records when combined with the excluded_ids configuration value.
  • <wemi>: Wind Energy Market Intelligence .xls file, required only when category.wind.source is set to wemi.

Main outputs:

  • <powerplants>: disaggregated point-source powerplants. unadjusted outputs are available for bioenergy, fossil, geothermal, hydropower, nuclear, large_solar, and wind; adjusted outputs are available for the same categories except large_solar.
  • <aggregated_capacity>: capacity aggregated to the user-provided shapes. bioenergy, fossil, geothermal, hydropower, nuclear, and wind are available as adjusted or unadjusted; large_solar is available as unadjusted; solar is available as adjusted.

Please consult the interface file for exact path variables and wildcards.

Development

We use pixi as our package manager for development. Once installed, run the following to clone this repository and install all dependencies.

git clone git@github.com:modelblocks-org/module_powerplants.git
cd module_powerplants
pixi install --all

Please be aware that this is a multi-environment project (see pixi.toml for details).

  • default: used for development and integration testing. Because it contains Snakemake, conda and pytest as dependencies it should not be used in Snakemake rules.
  • module: contains minimal dependencies used in Snakemake rules. If modified, be sure to export it to Snakemake so it can be recreated by module users:
# create module.yaml and conda-spec pin files in workflow/envs/
pixi run export-snakemake-env module

Testing

For testing, simply run:

pixi run test-integration

To test a minimal example of a workflow using this module:

pixi shell    # activate this project's environment
cd tests/integration/  # navigate to the integration example
snakemake --use-conda --cores 2  # run the workflow!

References

This module is based on the following research and datasets: For specific versions please consult our stable dataset repository.

Contributors ✨

Thanks goes to these wonderful people, sorted alphabetically (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!

About

Harmonised global powerplant data at any resolution 🏭⚡

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages