Yes the netCDF driver in GDAL 3.4.2 is much stricter on what it assumes to be axis compatible of a geotransform (there were false positives now).

You can set the GDAL_NETCDF_IGNORE_XY_AXIS_NAME_CHECKS configuration option or IGNORE_XY_AXIS_NAME_CHECKS open option to YES to remove those new extra checks. See https://gdal.org/drivers/raster/netcdf.html

To have GDAL properly recognize the X/longitude & Y/latitude axis as such, the https://cfconventions.org/Data/cf-conventions/cf-conventions-1.10/cf-conventions.html should be followed. So have long_name, standard_name and units set on the variables associated with the dimensions such as

float lat(lat) ;
  lat:long_name = "latitude" ;
  lat:units = "degrees_north" ;
  lat:standard_name = "latitude" ;
float lon(lon) ;
  lon:long_name = "longitude" ;
  lon:units = "degrees_east" ;
  lon:standard_name = "longitude" ;

or

  double y(y);
    y:units = "km";
    y:long_name = "y coordinate of projection";
    y:standard_name = "projection_y_coordinate";
  double x(x);
    x:units = "km";
    x:long_name = "x coordinate of projection";
    x:standard_name = "projection_x_coordinate";

Even

Le 07/10/2022 à 14:03, Micha Silver a écrit :

Hello:

I'm using xarray and rioxarray in python to create a DataSet then export to Netcdf. After saving, when I check the exported files with gdalinfo using GDAL 3.2, I see the correct extent. However, when using GDAL >=3.4 (i.e in a conda env) it seems that the extents are lost, and the NetCDF dimensions appear instead. This causes the resulting NetCDF to appear at coords (0,0) - the wrong place - in QGIS (on a system with the newer GDAL).


Here is the output with my system installed GDAL:


micha@RMS:Kinneret$ gdalinfo --version
GDAL 3.2.2, released 2021/03/05
micha@RMS:Kinneret$ gdalinfo  NETCDF:"Kinneret_velocity.nc":v | grep -A 4 Corner
Warning 1: dimension #2 (x) is not a Longitude/X dimension.
Warning 1: dimension #1 (y) is not a Latitude/Y dimension.
Warning 1: dimension #0 (z) is not a Time or Vertical dimension.
Corner Coordinates:
Upper Left  (  735758.000, 3644806.000) ( 35d31'15.70"E, 32d54'57.98"N)
Lower Left  (  735758.000, 3621606.000) ( 35d30'54.46"E, 32d42'25.30"N)
Upper Right (  754558.000, 3644806.000) ( 35d43'18.74"E, 32d54'42.80"N)

Lower Right (  754558.000, 3621606.000) ( 35d42'55.82"E, 32d42'10.25"N)


However, in my conda environment, with a newer GDAL:


micha@RMS:Kinneret$ conda activate geo
(geo) micha@RMS:Kinneret$ gdalinfo --version
GDAL 3.5.2, released 2022/09/02
(geo) micha@RMS:Kinneret$ gdalinfo  NETCDF:"Kinneret_velocity.nc":v | grep -A 4 Corner
Warning 1: dimension #2 (x) is not a Longitude/X dimension.
Warning 1: dimension #1 (y) is not a Latitude/Y dimension.
Warning 1: dimension #0 (z) is not a Time or Vertical dimension.
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0,   58.0)
Upper Right (   47.0,    0.0)
Lower Right (   47.0,   58.0)

What do I need to add to the xarray Dataset so that the newer GDAL gets the correct extent?

In both cases all the "grid_mapping" metadata entries point to "spatial_ref", and the full spatial_ref details are available in the NetCDF file.


(Note: double posted to GIS.stackexchange at https://gis.stackexchange.com/questions/442323/changes-to-gdal-netcdf-driver-between-3-2-and-3-4)


Thanks

--
Micha Silver
Ben Gurion Univ.
Sde Boker, Remote Sensing Lab
cell: +972-523-665918

_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev

--
http://www.spatialys.com
My software is free, but my time generally not.
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to