Skip to content
Snippets Groups Projects
Commit 9e670e14 authored by Uwe Schulzweida's avatar Uwe Schulzweida
Browse files

Docu update

parent bb581e54
No related branches found
No related tags found
No related merge requests found
......@@ -9,6 +9,7 @@
* mergegrid: added support for rotated lon/lat grids
* Seasstat: added env. CDO_SEASON_START to set the start month of seasons [request: Laurent Mortier]
* remapnn: added support for GRID_CELL without bounds (full grid search)
* import_cmsaf: read native float datatype and convert it to double
* ieg: added support for Gaussian grids [request: Ralf Podzun]
* store_link_cnsrv: remove two restrict keywords (bug fix) [report: Clement Alo]
* shifttime: bug fix for negative time increments [report: Andreas Hnsler]
......
......@@ -94,8 +94,28 @@ functionality.
@BeginExample
To convert a CM-SAF HDF5 file to netCDF use:
@C To convert a CM-SAF HDF5 file to netCDF use:
@C @BeginVerbatim
@C cdo -f nc import_cmsaf ifile.h5 ofile.nc
@C @EndVerbatim
A typical sequence of commands with this operator could look like this:
@BeginVerbatim
cdo -f nc import_cmsaf ifile.h5 ofile.nc
cdo -f nc remapbil,r360x180 -import_cmsaf cmsaf_product.hdf output.nc
@EndVerbatim
(bilinear remapping to a predefined global grid with 1 deg resolution and conversion to netcdf). \\
If you work with CM-SAF data on original satellite project, an additional file
with information on geolocation is required, to perform such spatial operations:
@BeginVerbatim
cdo -f nc remapbil,r720x360 -setgrid,cmsaf_latlon.h5 -import_cmsaf cmsaf.hdf output.nc
@EndVerbatim
Some CM-SAF data are stored as scaled integer values. For some operations, it
could be desirable (or necessary) to increase the accuracy of the converted
products:
@BeginVerbatim
cdo -b f32 -f nc fldmean -sellonlatbox,0,10,0,10 -remapbil,r720x360 \
-import_cmsaf cmsaf_product.hdf output.nc
@EndVerbatim
@EndExample
......@@ -985,9 +985,23 @@ void read_dataset(hid_t loc_id, const char *name, void *opdata)
if ( ftype )
{
status = H5Dread(dset_id, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, array);
if ( status < 0 )
cdoAbort("Reading of NATIVE_DOUBLE variable %s failed!", varname);
if ( dtype == DATATYPE_FLT32 )
{
float *farray;
int i;
farray = (float *) malloc(gridsize*nt*sizeof(float));
status = H5Dread(dset_id, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, farray);
if ( status < 0 )
cdoAbort("Reading of NATIVE_FLOAT variable %s failed!", varname);
for ( i = 0; i < gridsize*nt; ++i ) array[i] = farray[i];
free(farray);
}
else
{
status = H5Dread(dset_id, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT, array);
if ( status < 0 )
cdoAbort("Reading of NATIVE_DOUBLE variable %s failed!", varname);
}
}
else
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment