Skip to contents

Reads one HaNi NHx or NOy deposition NetCDF (native 5-arcmin grid, total grams N deposited per native cell per year) and aggregates it to WHEP's 0.5-degree grid by summing the 6x6 fine cells inside each 0.5-degree block, since the source quantity is an extensive mass. Returns the summed mass per 0.5-degree cell; converting to a per-hectare rate needs the true cell area and is done downstream by build_n_deposition().

Usage

read_n_deposition(
  species = c("nhx", "noy"),
  hani_dir = NULL,
  years = NULL,
  example = FALSE
)

Source

Tian, H., Bian, Z., Shi, H., Qin, X., Pan, N., Lu, C., Pan, S., Tubiello, F. N., Chang, J., Conchedda, G., Liu, J., Mueller, N., Nishina, K., Xu, R., Yang, J., You, L. and Zhang, B. (2022). History of anthropogenic Nitrogen inputs (HaNi) to the terrestrial biosphere: a 5 arcmin resolution annual dataset from 1860 to 2019. Earth System Science Data 14(10), 4551-4568. doi:10.5194/essd-14-4551-2022

Arguments

species

Which HaNi species to read, "nhx" or "noy".

hani_dir

Path to the directory holding ndep_nhx.nc and ndep_noy.nc. Defaults to Sys.getenv("WHEP_HANI_DIR").

years

Optional integer vector of calendar years to keep. NULL reads every year present in the file.

example

If TRUE, return a small fixture instead of reading data. Defaults to FALSE.

Value

A tibble with lon, lat, year, value_g (total grams N deposited in the 0.5-degree cell that year) and method_deposition, the constant "hani". The provenance tag travels with the field so that build_n_deposition() can record where its deposition came from instead of asserting it; see that function's method_deposition note.

Measured European bias, growing backwards in time

HaNi is too flat over Europe: it largely misses both the European deposition peak around 1990 and the fall that emission controls drove afterwards. Measured against the EMEP MSC-W model (rv5.6, 2025 reporting round) on WHEP's own 0.5-degree grid, over the 3193 cells assigned to an EMEP core country, area-weighted kg N/ha/yr:

yearHaNiEMEPHaNi / EMEP
19909.8114.080.696
20009.6511.280.856
20109.049.560.946
20198.008.070.992

Across 1990-2019 HaNi falls 18.4% where EMEP falls 42.7%, and the shortfall summed over those cells and years is 22.6 Tg N.

Those are whole-cell figures, and part of the level gap in them is a measurement artifact: HaNi's mass is deposition to land within the cell while EMEP is a density over the whole cell, sea included, so dividing HaNi by whole-cell area reads low in every coastal cell (ratio 0.35 in 1990 over cells under half land). The trend does not depend on it. Restricted to the cells whose territory in build_polycell_support() is at least 98% of the cell (2605 cells):

yearHaNiEMEPHaNi / EMEP
199010.614.60.727
200010.411.50.901
20109.719.880.982
20198.618.281.04

HaNi falls 19% and EMEP 43%. The error is therefore a function of time, largest exactly when European deposition was largest, and it compounds backwards into the pre-1990 period where EMEP offers no check at all.

This reader returns HaNi as published. correct_n_deposition() applies an opt-in, year-resolved correction of the European trend toward EMEP (read_emep_deposition()), stamped method_deposition = "hani_emep_trend" on the rows it touches; whether it becomes the default, and how it is carried back before 1990, is the open decision in whep#1121. validation/n_deposition_emep.R reproduces both tables and writes the full per-country, per-year ratio series.

The comparison product is the EMEP MSC-W chemical transport model, run in support of the Convention on Long-Range Transboundary Air Pollution: Simpson, D. et al. (2012). The EMEP MSC-W chemical transport model – technical description. Atmospheric Chemistry and Physics 12(16), 7825-7865. doi:10.5194/acp-12-7825-2012

Examples

read_n_deposition(example = TRUE)
#> # A tibble: 1 × 5
#>     lon   lat  year  value_g method_deposition
#>   <dbl> <dbl> <int>    <dbl> <chr>            
#> 1 -0.25 -0.25  2020 30800000 hani