A geoscales::geoscales Geoscale for pypsa_eur_41: the model regions as polygons,
with the sync -> country -> bus hierarchy PyPSA-Eur clusters them by.
Format
A geoscales::geoscales Geoscale with 41 atoms and attached geometry.
Source
Same provenance and ODbL-1.0 data licence as pypsa_eur_models.
Regenerated by data-raw/make_geoscales.R.
Details
This ships separately from the model rather than attached to it. The
models are the modelling artefact and stay exactly as convert_pypsa()
produces them; the map is a convenience for looking at them. Attach it when
you want one:
m <- setGeoscale(pypsa_eur_41, pypsa_eur_41_gs)Two geoframes, coarsest first: country (36) and bus (41 model regions,
the atoms). Five countries — DK, ES, FR, GB, IT — are split into two buses
each, which is how 36 becomes 41.
PyPSA's synchronous zones are carried as a sync column, deliberately
not as a geoframe. sync is a genuine partition of the atoms and is coarser
than country by member count (7 against 36), but it does not nest
inside it: those same five countries each straddle two zones. A geoframe
chain must nest — listing sync in it made those countries children of two
parents, and the spatial roll-up would then add each one's balance into both
zones. Group by the column, or build a separate geoscale from it, when
synchronous zones are what you want.
The geometry is simplified
The upstream onshore boundaries are 13 MB of GeoJSON. They are reduced with
rmapshaper::ms_simplify(keep = 0.03, keep_shapes = TRUE), which drops
vertices while guaranteeing every polygon survives — islands included; the
build script refuses to save an object that lost a region.
It is therefore a display geometry. Do not compute areas or distances
from it. Rebuild at full resolution from a PyPSA-Eur clone with
pypsa_geo_layers() and pypsa_geoscale() if you need those.
No map ships for pypsa_eur_5; its GeoJSON sidecars are in the package
instead, reachable through reneuro_example_geo().
Examples
attr(pypsa_eur_41_gs, "reneuro_provenance")$simplify_keep
#> [1] 0.03
