-
Notifications
You must be signed in to change notification settings - Fork 43
Description
Describe the dataset issue
ALADIN53 and ALADIN63 datasets have the projection coordinates shifted, leading to incorrect plots.


The units of the projected coordinates are also given in km instead of m.
For ALADIN53, the projection coordinates are created as auxiliary coordinates because they are not monotonic, so after fixing them, they need to be promoted to DimCoords.
Additionally, in the case of ALADIN53 tas
variable, the metadata of the projection contains false_easting
and false_northing
values that are different than 0, which in other variables of the dataset, these attributes are set 0.
I thought that the only way to fix the projection coordinates would be by regridding the datasets to a rotated pole grid, but there may be another way to derive the projected coordinate points.
I took a look at correct CORDEX datasets and noticed that the way the projection coordinates are arranged is by having the central point at 0, which makes sense because the coordinate system spans from a central longitude and a central latitude point. Then, the difference between points corresponds to the resolution of the grid. In the case of DOMAIN-11 domains, that is 12500 m; in the case of DOMAIN-22 domains, that is 25000m; and in the case of DOMAIN-44 domains, that is 50000m.
Knowing that a grid is formed by (x_points, y_points), that the difference between points is given by a fixed step that depends on the resolution, and that the central point in the coordinates is set at 0, the coordinate points can be derived in the following way:
step = 12500 # in the case of DOMAIN-11 datasets
nx = cube.coord('projection_x_coordinate').shape[0]
ny = cube.coord('projection_y_coordinate').shape[0]
x_points = np.linspace(-step*(nx-1)/2, step*(nx-1)/2, nx)
y_points = np.linspace(-step*(ny-1)/2, step*(ny-1)/2, ny)
This method seems to fix the plotting of ALADIN EUR-11 datasets:


And I also tried it with data in other domains, such as MED-11, and it seems to work as well:

Even though this domain is out of scope of the work needed to be done.
In terms of how to proceed, we could add this fix for all variables in ALADIN53 and ALADIN63 datasets. I think trying to add a general fix for all Lambert Conformal Conic datasets is more risky, because there are datasets that are already correct, so I think it would be best to apply those grid fixes just in the datasets that need it based on visual inspection.
I attach below a recipe that loads and plots ALADIN53, ALADIN63 data:
documentation:
title: |
test
authors:
- loosveldt-tomas_saskia
description: |
test
preprocessors:
ts_pp:
custom_order: true
monthly_statistics:
operator: mean
climate_statistics:
period: full
datasets:
- {project: CORDEX, domain: EUR-11, dataset: ALADIN53, driver: CNRM-CERFACS-CNRM-CM5, ensemble: r1i1p1, institute: CNRM, rcm_version: v1}
- {project: CORDEX, domain: EUR-11, dataset: ALADIN63, driver: CNRM-CERFACS-CNRM-CM5, ensemble: r1i1p1, institute: CNRM, rcm_version: v2}
- {project: CORDEX, domain: MED-11, dataset: ALADIN52, driver: CNRM-CERFACS-CNRM-CM5, ensemble: r1i1p1, institute: CNRM, rcm_version: v1}
diagnostics:
bias:
variables:
tas:
short_name: tas
mip: day
exp: historical
timerange: 20030101/20030102
preprocessor: ts_pp
scripts:
plot: &plot_multi_dataset_default
plot_folder: '{plot_dir}'
plot_filename: '{plot_type}_{real_name}_{alias}_{mip}'
facet_used_for_labels: 'alias'
script: monitor/multi_datasets.py
plots:
map:
common_cbar: true
fontsize: 10
show_stats: false
plot_kwargs_bias:
levels: [-10.0, -7.5, -5.0, -2.5, 0.0, 2.5, 5.0, 7.5, 10.0]
x_pos_stats_avg: 0.5
x_pos_stats_bias: 0.5
In order to be able to generate the plots, the diagnostic needs the changes in the monitor/multi_datasets.py
script that are implemented in ESMValGroup/ESMValTool#4199
Metadata
Metadata
Assignees
Labels
Type
Projects
Status