
NCL Home>
Application examples>
File IO ||
Data files for some examples
Support for NetCDF-4 files is in beta-testing in V6.1.1.
We encourage people to test it out and give us feedback on our ncl-talk email list.
Create a file to write NetCDF4 compound data.
In the above code segment, there are two setfileoptions, both can active NCL to use its advanced file strucuture.
Define dimensions:
Define the variable:
Write the compound data out, and close the file:
This script produced (use "ncl_filedump ncl_wrt_comp_dat.nc"):
Example pages containing:
tips |
resources |
functions/procedures
>
write netCDF
NCL: Write netCDF4 compound data
Support for NetCDF-4 files is in beta-testing in V6.1.1.
We encourage people to test it out and give us feedback on our ncl-talk email list.
Below is a script which demonstrates how to read/write NetCDF4 compound data.
Read NetCDF4 compound data from a file generated from NetCDF compound example code.
fin = "$NCARGTEST/nclscripts/nc4_files/compound.nc" fi = addfile(fin, "r") ;print(fi) ;printVarSummary(fi) sf_id = fi->/dimension_data.starfleet_id ;print(sf_id) ;printVarSummary(sf_id) abili = fi->/dimension_data.abilities ;print(abili) ;printVarSummary(abili) delete(fi)
Create a file to write NetCDF4 compound data.
;----------------------------------------------------- setfileoption("nc", "FileStructure", "Advanced") setfileoption("nc", "Format", "NetCDF4") fon = "ncl_wrt_comp_dat.nc" system("/bin/rm -f " + fon) fo = addfile(fon, "c")
In the above code segment, there are two setfileoptions, both can active NCL to use its advanced file strucuture.
At least one option should be used, as NCL must uses advanced file structure to handle compound data.
Define some file attributes:
;----------------------------------------------------- fAtt = True ; assign file attributes fAtt@title = "NCL generated netCDF file with compound" fAtt@source_file = fon fAtt@Conventions = "None" fAtt@creation_date = systemfunc("date") ;print(fAtt) fileattdef(fo, fAtt)
Define dimensions:
;=================================================================== nvals = 100 dimNames = (/"starfleet"/) dimSizes = (/ nvals /) dimUnlim = (/ False /) filedimdef(fo, dimNames, dimSizes, dimUnlim)
Define the variable:
;=================================================================== var_name = "nc4_compound_data" mem_name = (/"starfleet_id", "abilities"/) mem_type = (/"integer", "integer"/) mem_size = (/1, 7/) filecompounddef(fo, "compound_var", var_name, dimNames, \ mem_name, mem_type, mem_size) complist = new(dimSizes, list) printVarSummary(complist) do n = 0, nvals - 1 ListPush(complist[n], (/sf_id(n)/)) ListPush(complist[n], (/abili(n,:)/)) end do ;printVarSummary(complist)
Write the compound data out, and close the file:
;=================================================================== filewritecompound(fo, "compound_var", var_name, mem_name, complist) delete(fo)
This script produced (use "ncl_filedump ncl_wrt_comp_dat.nc"):
Variable: f Type: file filename: ncl_wrt_comp_dat path: ncl_wrt_comp_dat.nc User Defined Types: compound_var { starfleet_id, abilities, }; attributes: creation_date : Mon Jan 28 08:58:40 MST 2013 Conventions : None source_file : ncl_wrt_comp_dat.nc title : NCL generated netCDF file with compound dimensions: starfleet = 100 variables: nc4_compound_data:[ 100 ]