Re: creating NETCDF file

From: Dennis Shea <shea_at_nyahnyahspammersnyahnyah>
Date: Wed, 25 Jun 2008 11:40:10 -0600

You defined the variable on the file to be named "diab_heating"

filevardef(fout, "diab_heating" ,typeof(diab_heating)
,(/"time","lat","lon"/))

but you wrote it to the file via

fout->T = (/diab_heating/)

change to
fout->diab_heating = (/diab_heating/)

==============================
The netCDF operators ncrcat and ncrename could be used also.

Good luck

aude Valade wrote:
>
> Hi,
> I am trying to create NETCDF files from other NETCDF files I already
> have. I am trying to use the example from the website (efiicient
> approach for netcdf output) but I get the error message:
>
> fatal:FileAddVar: an error occurred while adding a variable to a file,
> check to make sure data type is supported by the output format
> fatal:Execute: Error occurred at or near line 80 in file edit_file.ncl
>
>
> Below is the complete code.
> thank you
>
> *****************************************************************************
>
>
> begin
>
> ;do year=
> ;do month=
> ;do day=
> ;do hour=
>
> ;filename=2008010100 ;example for testing purposes
> ;*********************LOOP ON FILES****************************
> setfileoption("nc","DefineMode",True)
> ;===================================================================
> ;Read files
> ;===================================================================
>
> datafile=addfile("./NETCDF2m25/allyear_VAR_218/fcst_phy2m25.1979010100.nc
> <http://fcst_phy2m25.1979010100.nc>", "r")
> lat=datafile!0
> lon=datafile!1
> diab_heating=datafile->VAR_218_GDS0_SFC_acc6h
> time=diab_heating_at_initial_time
>
> ;===================================================================
> ; Assume variables T, PS and ORO exist and that they have
> ; associated meta data: (a) coordinate variables time, lev, lat, lon
> ; and (b) attributes
> ;===================================================================
> ntim = dimsizes(time) ; get dimension sizes
> nlat = dimsizes(lat)
>
> nlon = dimsizes(lon)
>
> diro =
> "./NETCDF2m25/allyear_VAR_218_edited/" ; Output
> directory
> ; filo = "fcst_phy2m25."+filename+".nc" ; Output file
> filo = "fcst_phy2m25.1979010100.nc
> <http://fcst_phy2m25.1979010100.nc>"
> system("/bin/rm -f " + diro + filo) ; remove if exists
> fout = addfile (diro + filo, "c") ; open output file
>
> ;===================================================================
> ; explicitly declare file definition mode. Improve efficiency.
> ;===================================================================
> setfileoption(fout,"DefineMode",True)
>
> ;===================================================================
> ; create global attributes of the file
> ;===================================================================
> fAtt = True ; assign file attributes
> fAtt_at_title = "NCL Efficient Approach to netCDF Creation"
> fAtt@source_file = "original-file.nc <http://original-file.nc>"
> fAtt_at_Conventions = "None"
> fAtt_at_creation_date = systemfunc ("date")
> fileattdef( fout, fAtt ) ; copy file attributes
> ;===================================================================
> ; predefine the coordinate variables and their dimensionality
> ; note: to get an UNLIMITED record dimension, we set the
> dimensionality
> ; to -1 and set the unlimited array to True.
> ;===================================================================
> dimNames = (/"time", "lat", "lon"/)
> dimSizes = (/ -1 , nlat, nlon /)
> dimUnlim = (/ True , False, False/)
> filedimdef(fout,dimNames,dimSizes,dimUnlim)
>
> ;===================================================================
> ; predefine the the dimensionality of the variables to be written out
> ; filevardef(output_file, name of variable, type of variable, CV's of
> ; variable) note: at this point, when you do an ncdump on the file, it
> ; will look like the variable is there. If you do not output the
> values,
> ; however, then an ncdump -v xxx will reveal that there is no data.
> ;===================================================================
> ; Here we are explicitly defining the variable's dimension name(s).
> ; However, the following could be replaced with:
> ; filevardef(fout, "time" ,typeof(time),getvardims(time))
> ;==================================================================
> ;===================================================================
> filevardef(fout, "time" ,typeof(time),"time")
> filevardef(fout, "lat" ,typeof(lat),"lat")
> filevardef(fout, "lon" ,typeof(lon),"lon")
> filevardef(fout, "diab_heating" ,typeof(diab_heating)
> ,(/"time","lat","lon"/))
>
> ;===================================================================
> ; Copy attributes associated with each variable to the file
> ; All attributes associated with each variable will be copied.
> ;====================================================================
> filevarattdef(fout,"diab_heating",diab_heating) ; copy
> diab_heating attributes
> filevarattdef(fout,"time",time) ; copy time
> attributes
> filevarattdef(fout,"lat",lat) ; copy lat
> attributes
> filevarattdef(fout,"lon",lon) ; copy lon
> attributes
>
> ;===================================================================
> ; explicitly exit file definition mode. **NOT REQUIRED**
> ;===================================================================
> setfileoption(fout,"DefineMode",False)
>
> ;===================================================================
> ; output only the data values since the dimensionality and such have
> ; been predefined. The "(/", "/)" syntax tells NCL to only output the
> ; data values to the predefined locations on the file.
> ;====================================================================
> fout->time = (/time/)
> fout->lat = (/lat/)
> fout->lon = (/lon/)
> fout->T = (/diab_heating/)
>
>
>
> ;end do
> ;end do
> ;end do
> ;end do
>
> end
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk_at_ucar.edu
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>

-- 
======================================================
Dennis J. Shea                  tel: 303-497-1361    |
P.O. Box 3000                   fax: 303-497-1333    |
Climate Analysis Section                             |
Climate & Global Dynamics Div.                       |
National Center for Atmospheric Research             |
Boulder, CO  80307                                   |
USA                        email: shea 'at' ucar.edu |
======================================================
_______________________________________________
ncl-talk mailing list
ncl-talk_at_ucar.edu
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Wed Jun 25 2008 - 11:40:10 MDT

This archive was generated by hypermail 2.2.0 : Wed Jun 25 2008 - 12:04:57 MDT