EDGAR v8.1 Global Air Pollutant Emissions
Overview
We have a data loader for EDGAR v8.1 monthly global air pollutant emissions, EDGARv81MonthlyEmis.
EDGAR (Emissions Database for Global Atmospheric Research) provides global gridded emissions at 0.1°×0.1° resolution for 2000-2022. Monthly flux data (kg m⁻² s⁻¹) is available for 9 pollutants (BC, CO, NH3, NMVOC, NOx, OC, PM10, PM2.5, SO2) across multiple emission sectors.
Reference: Crippa, M., et al. (2024). EDGAR v8.1 Global Air Pollutant Emissions. European Commission, Joint Research Centre (JRC). https://edgar.jrc.ec.europa.eu/dataset_ap81
EarthSciData.EDGARv81MonthlyEmis — Function
EDGARv81MonthlyEmis(
substance,
sector,
domaininfo;
scale,
name,
stream
)
A data loader for EDGAR v8.1 monthly global air pollutant emissions data at 0.1°×0.1° resolution. Data spans 2000-2022 and is available from: https://edgar.jrc.ec.europa.eu/dataset_ap81
substance is the pollutant name (one of: BC, CO, NH3, NMVOC, NOx, OC, PM10, PM2.5, SO2).
sector is the emission sector (e.g. "POWER_INDUSTRY", "TRANSPORT", "AGRICULTURE", etc.).
domaininfo should specify lon, lat, and lev coordinate variables.
scale is a scaling factor to apply to the emissions data.
stream specifies whether the data should be streamed in as needed or loaded all at once.
Note: emissions are applied only at the surface level (lev < 2) and converted from flux (kg m⁻² s⁻¹) to volumetric rate (kg m⁻³ s⁻¹) by dividing by the first-layer height Δz.
Equations
This is what its equation system looks like:
using EarthSciData, EarthSciMLBase
using ModelingToolkit, DynamicQuantities, DataFrames
using ModelingToolkit: t
using DynamicQuantities: dimension
using Dates
domain = DomainInfo(
DateTime(2020, 6, 1), DateTime(2020, 7, 1);
lonrange = deg2rad(-10.0):deg2rad(2.5):deg2rad(30.0),
latrange = deg2rad(40.0):deg2rad(2):deg2rad(60.0),
levrange = 1:10,
)
emis = EDGARv81MonthlyEmis("NOx", "POWER_INDUSTRY", domain)\[ \begin{align} \mathtt{fluxes}\left( t \right) &= ifelse\left( \mathtt{lev} < 2, \frac{\mathtt{fluxes\_itp}\left( t + \mathtt{t\_ref}, \mathtt{lon}, \mathtt{lat} \right)}{\mathtt{{\Delta}z}}, \mathtt{zero\_fluxes} \right) \end{align} \]
Variables
Here are the variables in tabular format:
function table(vars)
DataFrame(
:Name => [string(Symbolics.tosymbol(v, escape = false)) for v in vars],
:Units => [dimension(ModelingToolkit.get_unit(v)) for v in vars],
:Description => [ModelingToolkit.getdescription(v) for v in vars]
)
end
table(unknowns(emis))| Row | Name | Units | Description |
|---|---|---|---|
| String | Dimensio… | String | |
| 1 | fluxes | m⁻³ kg s⁻¹ | Power industry |
Parameters
Finally, here are the parameters in tabular format:
table(parameters(emis))| Row | Name | Units | Description |
|---|---|---|---|
| String | Dimensio… | String | |
| 1 | lon | Longitude | |
| 2 | lat | Latitude | |
| 3 | lev | Level Index | |
| 4 | Δz | m | Height of the first vertical grid layer |
| 5 | t_ref | s | Reference time |
| 6 | fluxes_itp | m⁻² kg s⁻¹ | Interpolated fluxes |
| 7 | zero_fluxes | m⁻³ kg s⁻¹ |