1 / 42

Netcdf course 2008-10-28

Netcdf course 2008-10-28. Intro CF convention Netcdf excercises. NetCDF. File format. library for fortran, c, c++, java, etc... text, xml and binary format From netcdf4 HDF storage. NetCDF. Data model. Data model for netcdf and others.

royce
Download Presentation

Netcdf course 2008-10-28

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Netcdf course 2008-10-28 • Intro • CF convention • Netcdf excercises

  2. NetCDF File format • library for fortran, c, c++, java, etc... • text, xml and binary format • From netcdf4 HDF storage

  3. NetCDF Data model Data model for netcdf and others. Also usable for hdf, opendap, grib, etc. See the java library for details

  4. Matlab >> url = 'http://tashtego.marine.rutgers.edu:8080/thredds/dodsC/roms/nena/SRTM/w100w20s10n90.nc'; >> lon = nc_varget ( url, 'lon' ); >> size(lon) ans = 9600 1 >> lon(1:5) ans = -99.9958 -99.9875 -99.9792 -99.9708 -99.9625 Using the open source MEXNC you can read and write netcdf from matlab.

  5. ArcGis ArcGis also reads and writes netcdf files.

  6. Excel ‘VBA interface to netcdf ReDim myVar(0 To dimLen - 1) 'Open Filestatus = nc_open(fileName, NC_NOWRITE, ncid)status = nc_inq_varid(ncid, varName, varid) status = nc_get_var_int(ncid, varid, myVar(0)) Excel is limited to 32768 rows. Be careful! Excel only understands 1D & 2D.

  7. Emacs xml representation of a netcdf file

  8. Other Tools Not so stable. Very useful IDV NCO #diff ncdiff -v time file1.nc file2.nc #compression & packingncpdq -4 -L 9 in.nc out.nc # Deflated packing (~80% lossy compression) #selecting variables by regex ncks -v '^Q..' in.nc # Q01--Q99, QAA--QZZ, etc. Web hyperslabs, cool!

  9. CF Standard Why netcdf? • Open standard • Transparent path to improvement • Prepares us for future innovations

  10. CF Standard Use case • Customer finds a output file and wants to understand it?

  11. An output file should contain: • What? (Quantity) • Where? (Location, cell centered, sigma, coordinate system?, projection?) • When? (Time, calendar, interval, timezone?) • How much? (Value, unit, , cell method)

  12. CF Standard Open standard • Climate & Forecasting Metadata convention • Version 1.3, 9 October, 2008 • Main contributors: NOAA, MetOffice, UCAR, NCAR, USGS, PCMDI • Formalized yet open • Well designed

  13. CF Standard Open standard • What is standardized? • Variable names • Units • Locations (lat, lon) • Levels (z, sigma, bar) • Cells (boundaries, measures) • Time

  14. CF Standard Variable names • runoff_amount: "Amount" means mass per unit area. Runoff is the liquid water which drains from land. If not specified, .... • runoff_flux: Runoff is the liquid water which drains from land. If not specified, "runoff" refers to the sum of surface runoff and subsurface drainage. In accordance with common ...

  15. CF Standard Variable names • sea_water_potential_temperature: Potential temperature is the temperature a parcel of air or sea water would have if moved adiabatically to sea level pressure. • normalized_difference_vegetation_index: "Normalized_difference_vegetation_index", usually abbreviated to NDVI, is an index calculated from reflectances ....

  16. CF Standard Variable names • http://cf-pcmdi.llnl.gov/documents/cf-standard-names (v10 21 oktober)

  17. Netcdf Excercise

  18. Checkout dhs-cursus http://svn.wldelft.nl/repos/dhs-cursus/trunk

  19. Add dependency

  20. Create dependency • Right click project -> project dependencies netcdf f77_netcdf f90_netcdf program

  21. Add include directory

  22. NetCDF Data model Data model for netcdf and others. Also usable for hdf, opendap, grib, etc. See the java library for details

  23. Dataset functions • NF90_CREATE • NF90_OPEN • NF90_CLOSE • NF90_REDEF • NF90_ENDDEF • NF90_INQUIRE Family • NF90_INQ_LIBVERS • NF90_STRERROR • NF90_SET_FILL

  24. NF90_CREATE function nf90_create(path, cmode, ncid) character (len = *), intent(in ) :: path integer, intent(in ) :: cmode integer, optional, intent(in ) :: initialsize integer, optional, intent(inout) :: chunksize integer, intent( out) :: ncid integer :: nf90_create

  25. NF90_CREATE

  26. Dimensions • NF90_DEF_DIM • NF90_INQ_DIMID • NF90_INQUIRE_DIMENSION • NF90_RENAME_DIM

  27. NF90_DEF_DIM function nf90_def_dim(ncid, name, len, dimid) integer, intent( in) :: ncid character (len = *), intent( in) :: name integer, intent( in) :: len integer, intent(out) :: dimid integer :: nf90_def_dim

  28. NF90_DEF_DIM

  29. Attributes • NF90_PUT_ATT • NF90_INQUIRE_ATTRIBUTE • NF90_GET_ATT • NF90_COPY_ATT • NF90_RENAME_ATT • NF90_DEL_ATT

  30. NF90_PUT_ATT function nf90_put_att(ncid, varid, name, values) integer, intent( in) :: ncid, varid character(len = *), intent( in) :: name any valid type, scalar or array of rank 1, & intent( in) :: values integer :: nf90_put_att

  31. NF90_PUT_ATT

  32. Variables • NF90_DEF_VAR: Create a Variable • NF90_DEF_VAR_CHUNKING: Set Var Chunking Parameters • NF90_INQ_VAR_CHUNKING: Get Var Chunking Parameters • NF90_DEF_VAR_DEFLATE: Set Var Compression Parameters • NF90_INQ_VAR_DEFLATE: Get Var Compression Parameters • NF90_DEF_VAR_FLETCHER32: Set Var Fletcher32 Filter • NF90_INQ_VAR_FLETCHER32: Get Var Fletcher32 Filter • NF90_DEF_VAR_ENDIAN: Set Var Endianness • NF90_INQ_VAR_ENDIAN: Get Var Endianness • NF90_INQUIRE_VARIABLE: Get Var Metadata • NF90_PUT_VAR: Write data • NF90_GET_VAR: Read data • NF90_RENAME_VAR

  33. NF90_DEF_VAR function nf90_def_var(ncid, name, xtype, dimids, varid) integer, intent( in) :: ncid character (len = *), intent( in) :: name integer, intent( in) :: xtype integer, dimension(:), intent( in) :: dimids integer, intent(out) :: varid integer :: nf90_def_var

  34. NF90_DEF_VAR

  35. NF90_PUT_VAR function nf90_put_var(ncid, varid, values, start, count, stride, map) integer, intent( in) :: ncid, varid any valid type, scalar or array of any rank, & intent( in) :: values integer, dimension(:), optional, intent( in) :: start, count, stride, map integer :: nf90_put_var

  36. NF90_PUT_VAR

  37. NF90_OPEN function nf90_open(path, mode, ncid, chunksize) character (len = *), intent(in ) :: path integer, intent(in ) :: mode integer, intent( out) :: ncid integer, optional, intent(inout) :: chunksize integer :: nf90_open

  38. NF90_INQUIRE function nf90_inquire(ncid, nDimensions, nVariables, nAttributes, & unlimitedDimId, formatNum) integer, intent( in) :: ncid integer, optional, intent(out) :: nDimensions, nVariables, & nAttributes, unlimitedDimId, & formatNum integer :: nf90_inquire

  39. NF90_INQUIRE

  40. NF90_INQUIRE_VARIABLE function nf90_inquire_variable(ncid, varid, name, xtype, ndims, dimids, nAtts) integer, intent( in) :: ncid, varid character (len = *), optional, intent(out) :: name integer, optional, intent(out) :: xtype, ndims integer, dimension(*), optional, intent(out) :: dimids integer, optional, intent(out) :: nAtts integer :: nf90_inquire_variable

  41. NF90_INQUIRE_VARIABLE

  42. Read the data using • nf90_inquire_attributes • nf90_get_var

More Related