[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netCDF #UMG-544863]: netcdf error



Hi Luis,

> Hi fellows am having some issues with two different kinds of netcdf one
> came from grads sdfwrite command which I have been using it since I need
> to write my MM5OUTPUT into netcdf. It was working good but when I try to
> load it into IDV and do some aggregation I get and error because the
> netcdf does not have the time dimension so I when to grads script and
> add the parameter -4d to add 2 more dimensions and it works now I have
> time and level dimensions now.
> 
> The thing is here we are trying to generate a product which need to be
> in netcdf but we are using ArcGIS to generate it when we try to export
> the shape or the raster file into a netcdf file we don't get the file
> with the time dimension and level dimension and I have try to add them
> using the netcdf java tool but without success. I am trying to do that
> because I want to use both in IDV but when I make a try the IDV send me
> an error saying type mismatch.
> 
> Attach are 2 of those files. Someone can help me

We don't have ArcGIS here, so can't help with generating the time or
level dimensions that way, but you may be able to use the ncdump and
ncgen utility programs that come with netCDF to do what you want.

For test_Sh.nc, for example, just run 

  ncdump test_Sh.nc > test_Sh.cdl

to get the netCDF file in CDL form.  Then run an editor on that CDL
file, editing the declaration of a time and level dimension, as well
as use of the time dimension by the hum_aoi0 variable, something like:

dimensions:
        lon = 377 ;
        lat = 298 ;
        lev = 4;  // or how ever many levels you have
        time = 100; // or how many times you have
variables:
        double lon(lon) ;
                lon:long_name = "longitude coordinate" ;
                lon:standard_name = "longitude" ;
                lon:units = "degrees_east" ;
        double lat(lat) ;
                lat:long_name = "latitude coordinate" ;
                lat:standard_name = "latitude" ;
                lat:units = "degrees_north" ;
        double lev(lev) ; // example, if using pressure for level
                lev:long_name = "pressure level" ;
                lev:positive = "down" ;
                lev:units = "hPa" ;  // hecto Pascals, same as millibars
        double time(time) ;
                time:long_name = "time" ;
                time:units = "days since 1970-01-01 00:00:00" ;

        byte hum_aoi0(time, lev, lat, lon) ;
    ...
data:
    ...
     lev = 1000, 850, 500, 100;  // or whatever ...
     time = ... // whatever
    ...
}

Then, use ncgen to get the edited CDL converted back to a netCDF file, 
for example 

   ncgen -o test_Sh_with_lev_time.nc test_Sh.cdl

will read your edited CDL file and convert it to a new netCDF file
named test_Sh_with_lev_time.nc.

The ncdump and ncgen programs are part of the standard netCDF software
distribution.

--Russ

Russ Rew                                         UCAR Unidata Program
address@hidden                      http://www.unidata.ucar.edu



Ticket Details
===================
Ticket ID: UMG-544863
Department: Support netCDF
Priority: High
Status: Closed