OEM Emissions#
The ds.oem accessor prepares ICON online emission module inputs from EDGAR
inventories using emiproc. It can download or load EDGAR NetCDF files,
remap emissions to the ICON grid already attached with ds.icon.add_grid(...),
and write the gridded emissions plus temporal and vertical profile files used
by OEM.
emiproc is an optional dependency; install it only when you need EDGAR/OEM
preprocessing:
pip install emiproc
The emiproc path uses the usual geospatial and NetCDF stack, including
geopandas, shapely, pyogrio, netCDF4, rasterio, and
dask.
Map EDGAR To ICON#
import xarray as xr
import artist
ds = xr.Dataset()
ds.icon.add_grid("icon_grid.nc")
gridded_emissions = ds.oem.map_edgar(
edgar_directory="./edgar",
year=2022,
species=["CH4", "CO2", "CO"],
output_dir="./output",
aux_data_path="./edgar/aux",
)
ds.icon.add_grid(...) remembers the ICON grid file path, so
ds.oem.map_edgar(...) can use the same grid. The return value is the
gridded emissions dataset. Temporal profiles such as dayofweek.nc,
hourofday.nc, and monthofyear.nc plus vertical_profiles.nc are
written by emiproc into output_dir.
Plot Emissions#
Plot the raw EDGAR inventory before remapping:
ds.oem.plot_raw_edgar()
plot_raw_edgar reuses the EDGAR directory, year, and species from the last
ds.oem.map_edgar(...) call. Pass them explicitly only when plotting a
different inventory.
Plot the gridded emissions after ICON remapping:
ax = ds.oem.plot_mapped_emissions(gridded_emissions)
Use Low-Level Helpers#
The same workflow is also available as functions in artist.oem:
from artist.oem import load_edgar_inventory, get_icon_grid, remap_to_icon
inv = load_edgar_inventory("./edgar", year=2022, substances=["CH4"])
gridfile, icon_grid = get_icon_grid("icon_grid.nc", download=False)
mapped = remap_to_icon(inv, icon_grid)