PATCH: DODS driver can now read 3-D datasets, metadata, projection, remote NetCDF files
|Reported by:||korosov||Owned by:||warmerdam|
|Severity:||normal||Keywords:||dods driver netcdf hdf patch|
|Cc:||blaa_katt, etourigny, warmerdam|
Patch for the DODS driver (dodsdataset2.cpp) and DODS autotest (dods.py).
- The new DODS driver can now read N-dimensional datasets. The N-D input matrix is represented as a sequence of 2D bands. E.g. a 3D datasets (3 x 100 x 200) is returned as three bands 200 x 100 pixels each, a 4D dataset (3 x 2 x 300 x 500) is returned as 6 bands 300 x 500 pixels.
- DODS driver gets names of dimensions of each variable from the file and does not assume only lat/lon or x/y.
- DODS driver provides location of the band in high order dimensions in the band attributes. E.g.: if a remote NetCDF file has 4D variable with dimensions [time][depth][y][x] the following attributes will appear in each 2D band fetched by the DODS driver:
It shows that 'depth' is the third and 'time' is the fourth dimension. This band is the fourth layer on time and the first layer on depth dimension.
- DODS driver can read data both from HDF or NetCDF remote files
- DODS driver fetches all global and band metadata is from remote server
- DODS driver reads projection information from the server
- If only the filename is given in the URL all bands are retrieved from all subdatasets. If a 'subdataset' (variable) name is specified after '?' only band(s) from this subdataset are returned. If order of dimension is not specified at the end of the subdataset name in square brackets the CF-compliant order is assumed (e.g. [time][y][x]).
- The new DODS autotest has correct URL of TOVS_MONTHLY_PM_8502_NF.HDF.Z
- DODS autotest tries to read all bands from a file containing 2D and 3D subdatasets
- DODS autotest tries to read one band from a 3D subdataset
- DODS autotest tries to read metadata
- DODS autotest tries to read projection from NetCDF file
gdalinfo http://disc1.sci.gsfc.nasa.gov/opendap/tovs/TOVSAMNF/1985/032/TOVS_MONTHLY_PM_8502_NF.HDF.Z gdalinfo http://disc1.sci.gsfc.nasa.gov/opendap/tovs/TOVSAMNF/1985/032/TOVS_MONTHLY_PM_8502_NF.HDF.Z?Data-Set-11 gdalinfo http://disc1.sci.gsfc.nasa.gov/opendap/tovs/TOVSAMNF/1985/032/TOVS_MONTHLY_PM_8502_NF.HDF.Z?Data_Set_9 gdalinfo http://disc1.sci.gsfc.nasa.gov/opendap/tovs/TOVSAMNF/1985/032/TOVS_MONTHLY_PM_8502_NF.HDF.Z?Data_Set_9[x][y]
- DODS and NetCDF drivers have much in common. In fact some of the parts were just copied from the NetCDF driver. Duplication of code is generally a very bad habit and therefore should be omitted. Inheritance of DODS from NetCDF sounds like a best approach. But we are limited in resource to implement that.
- DODS driver supports HTTP-like URLS: the subdataset name is provided after '?'. Ideally it should be similar to NeCDF or HDF driver syntax (HDF4_EOS:EOS_SWATH:"FILENAME":MODIS_SWATH_Type_L1B:EV_1KM_RefSB).
- DODS driver has posibility to specify order of dimensions. Thats what NetCDF and HDF drivers are missing.
- The driver was largely updated by blaa_katt, autotest - by korosov.