diff --git a/ChangeLog b/ChangeLog index f7eb7ff3d6a217b032a9ae8ff756614e337ee15d..60d0a39cd565c2e01a08634b16d6a5fcfd979c00 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,12 @@ -2024-11-?? Uwe Schulzweida +2024-11-28 Uwe Schulzweida * using CGRIBEX library version 2.3.1 * Version 2.5.0 released +2024-11-23 Uwe Schulzweida + + * NetCDF: improved HealPIX support + 2024-11-04 Uwe Schulzweida * reset chunktype if z and t are chunked diff --git a/src/stream_cdf_i.c b/src/stream_cdf_i.c index 748939062e120efe3b2e64320aafd88b8b1f975f..9b7565a012bdd95b2b93a32f63d07e6db6648768 100644 --- a/src/stream_cdf_i.c +++ b/src/stream_cdf_i.c @@ -55,6 +55,7 @@ typedef struct int ncid; int varStatus; bool ignoreVar; + bool isHealPIX; bool isCubeSphere; bool isCharAxis; bool isXaxis; @@ -588,6 +589,7 @@ init_ncvars(int nvars, ncvar_t *ncvars, int ncid) ncvar->ncid = ncid; ncvar->varStatus = UndefVar; ncvar->ignoreVar = false; + ncvar->isHealPIX = false; ncvar->isCubeSphere = false; ncvar->isCharAxis = false; ncvar->isXaxis = false; @@ -1486,6 +1488,14 @@ scan_vars_attr(int nvars, ncvar_t *ncvars, int ndims, ncdim_t *ncdims, int model { ncvar->gmapid = nc_gmap_id; cdf_set_var(&ncvars[ncvar->gmapid], CoordVar); + int nc_gmap_varid = ncvars[ncvar->gmapid].ncid; + if (cdfCheckAttText(nc_gmap_varid, nc_gmap_id, "grid_mapping_name")) + { + char gridMappingName[CDI_MAX_NAME]; + cdfGetAttText(nc_gmap_varid, nc_gmap_id, "grid_mapping_name", CDI_MAX_NAME, gridMappingName); + // if (str_is_equal(gridMappingName, "healpix")) ncvars[ncvar->gmapid].isHealPIX = true; + if (str_is_equal(gridMappingName, "healpix")) ncvar->isHealPIX = true; + } } else Warning("%s - %s", nc_strerror(status), attstring); @@ -1830,7 +1840,7 @@ cdf_set_dimtype(int nvars, ncvar_t *ncvars, ncdim_t *ncdims) dimtype = X_AXIS; lxdim = true; } - else if (!lydim && ncvar->gridtype != GRID_UNSTRUCTURED) + else if (!lydim && ncvar->gridtype != GRID_UNSTRUCTURED && ncvar->isHealPIX == false) // else if ( !lydim && ! (ncvars[ncvar->xvarid].dimids[0] == ncvars[ncvar->yvarid].dimids[0] && // ncvars[ncvar->xvarid].ndims == 1 && ncvars[ncvar->yvarid].ndims == 1)) {