2. Analysis per polygon#

Output from PCR-GLOBWB can be validated against any other gridded dataset as long as it is a netCDF-file.

Settings

In each file containing polygons (PLY), it is important that each polygon has a unique identifier ply-id. For each of the polygons, the script will compute the spatial average for both simulations and observations for each time step. From the resulting timeseries, r, MSE, and RMSE are derived.

If the units between simulations and observations are not identical, it is possible to apply a --conversion-factor which will be multiplied with the simulated values. The default values is 1.

Should it be required to perform the analysis in another coordinate system than EPSG 4326, it can be provided via --coordinate-system. Default is EPSG 4326.

In some instances, anomalies are required instead of the raw timeseries. By specifying --anomaly, the scripts derives the anomalies of observation and simulation per time step. Default setting is off.

For some variables, PCR-GLOBWB outputs monthly totals. In case the observations are monthly averages, it is possible to derive monthly values by dividing the total with the number of days per month. This can be activated by setting the --sum switch. Default is off.

For a quick visual analysis of the output, it is possible to activate the --plot switch. Default is off.

Code documentation

Usage: pcr_utils_evaluate poly [OPTIONS] PLY SIM OBS OUT

Computes r, MSE, and RMSE for multiple polygons as provided by a shape-file
between simulated and observed data. Each polygon needs to have a unique
ID. Contains multiple options to align function settings with data and
evaluation properties.

Returns a GeoJSON-file of r, MSE, and RMSE per polygon, and if specified as
simple plot.
Also returns scores of r, MSE, and RMSE per polygon as dataframe.

PLY: path to shp-file or geojson-file with one or more polygons.

SIM: path to netCDF-file with simulated data.

OBS: path to netCDF-file with observed data.

OUT: Path to output folder. Will be created if not there yet.

Options:
    -id, --ply-id TEXT              unique identifier in file containing polygons.
    -o, --obs_var_name TEXT         variable name in observations.
    -s, --sim_var_name TEXT         variable name in simulations.
    -cf, --conversion-factor INT    conversion factor applied to simulated values to align variable units.
    -crs, --coordinate-system TEXT  coordinate system.
    --anomaly / --no-anomaly        whether or not to compute anomalies.
    --sum / --no-sum                whether or not the simulated values are monthly totals or not.
    --plot / --no-plot              whether or not to save a simple plot of results.
    --verbose / --no-verbose        more or less print output.
    --help                          Show this message and exit.

Example

In this example, simulated total_thickness_of_water_storage is validated against lwe_thickness from GRACE. Since GRACE data is in [cm], simulated data is converted from [m] by multiplying with 100. Also, the anomaly per time step is determined.

$ shp='/path/to/polygon.geojson'
$ obs='/path/to/GRACE.nc'
$ sim='/path/to/model_output.nc'
$ out='./OUT/'

$ pcr_utils_evaluate poly -o lwe_thickness -s total_thickness_of_water_storage -cf 100 -id ID --anomaly $shp $sim $obs $out