-
Notifications
You must be signed in to change notification settings - Fork 300
Description
✨ Feature Request
Preserve crs_wkt when loading and saving NetCDF files
Motivation
To add to some of the open issues and PRs on Coordinate reference system well known text (crs_wkt) requirements.
I would like to:
- load a cube from a netcdf file which defines a
crs_wkton a grid-mapping variable - make changes to the cube that do not affect the coordinate system
- Save the cube back to a new file and verify that the
crs_wktremains intact and is identical to the inputcrs_wkt
An example of this would be load a cube, calculate the mean temperature with respect to time which on saving it should have the same coorinate metadata.
There is a current problem with this that the crs_wkt just doesn't get loaded nor re-saved.
But there is a future problem in #4719 implementation of it that it can change the crs_wkt
These can be seen with a file loaded and saved using the save from #4719.
The input file has the crs_wkt:
PROJCRS[
"unknown",
BASEGEOGCRS[
"unknown",
DATUM[
"OSGB 1936",
ELLIPSOID["Airy 1830", 6377563.396, 299.3249646, LENGTHUNIT["metre", 1]],
ID["EPSG", 6277],
],
PRIMEM[
"Greenwich", 0, ANGLEUNIT["degree", 0.0174532925199433], ID["EPSG", 8901]
],
],
CONVERSION[
"unknown",
METHOD["Mercator (variant B)", ID["EPSG", 9805]],
PARAMETER[
"Latitude of 1st standard parallel",
0,
ANGLEUNIT["degree", 0.0174532925199433],
ID["EPSG", 8823],
],
PARAMETER[
"Longitude of natural origin",
0,
ANGLEUNIT["degree", 0.0174532925199433],
ID["EPSG", 8802],
],
PARAMETER["False easting", 0, LENGTHUNIT["metre", 1], ID["EPSG", 8806]],
PARAMETER["False northing", 0, LENGTHUNIT["metre", 1], ID["EPSG", 8807]],
],
CS[Cartesian, 2],
AXIS["(E)", east, ORDER[1], LENGTHUNIT["metre", 1, ID["EPSG", 9001]]],
AXIS["(N)", north, ORDER[2], LENGTHUNIT["metre", 1, ID["EPSG", 9001]]],
]
When this is saved it is output as:
GEOGCRS[
"OSGB36",
DATUM[
"Ordnance Survey of Great Britain 1936",
ELLIPSOID["Airy 1830", 6377563.396, 299.3249646, LENGTHUNIT["metre", 1]],
],
PRIMEM["Greenwich", 0, ANGLEUNIT["degree", 0.0174532925199433]],
CS[ellipsoidal, 2],
AXIS[
"geodetic latitude (Lat)",
north,
ORDER[1],
ANGLEUNIT["degree", 0.0174532925199433],
],
AXIS[
"geodetic longitude (Lon)",
east,
ORDER[2],
ANGLEUNIT["degree", 0.0174532925199433],
],
USAGE[
SCOPE["Geodesy."],
AREA[
"United Kingdom (UK) - offshore to boundary of UKCS within 49°45'N to 61°N and 9°W to 2°E; onshore Great Britain (England, Wales and Scotland). Isle of Man onshore."
],
BBOX[49.75, -9.01, 61.01, 2.01],
],
ID["EPSG", 4277],
]
Test Examples
I have written example tests for netCDF intergration, which can be viewed on my iris fork: View example tests.
The test loads a file which has a crs_wkt, tests that the crs_wkt is as expected, then it saves the cube and uses netCDF4 to verify that the correct metadata is still on the cube.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status