Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Netcdf course 2008-10-28 Intro CF convention Netcdf excercises."— Presentation transcript:

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

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

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

4 >> url = 'http://tashtego.marine.rutgers.edu:8080/thredds/dodsC/roms/nena/SR TM/w100w20s10n90.nc';http://tashtego.marine.rutgers.edu:8080/thredds/dodsC/roms/nena/SR TM/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 Matlab Using the open source MEXNC you can read and write netcdf from matlab.

5 ArcGis ArcGis also reads and writes netcdf files.

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

7 Emacs xml representation of a netcdf file

8 Other Tools 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. IDV Very useful Web hyperslabs, cool! Not so stable.

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

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

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

12 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 CF Standard

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

14 Variable names runoff_amount: "Amount" means mass per unit area. Runoff is the liquid water which drains from land. If not specified,.... accordance 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... CF Standard

15 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_inde x: "Normalized_difference_vegetation_ind ex", usually abbreviated to NDVI, is an index calculated from reflectances.... CF Standard

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

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 f77_netcdf f90_netcdf netcdf program

21 Add include directory

22 Data model NetCDF Data model for netcdf and others. Also usable for hdf, opendap, grib, etc. See the java library for details 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 VariableNF90_DEF_VAR NF90_DEF_VAR_CHUNKING: Set Var Chunking ParametersNF90_DEF_VAR_CHUNKING NF90_INQ_VAR_CHUNKING: Get Var Chunking ParametersNF90_INQ_VAR_CHUNKING NF90_DEF_VAR_DEFLATE: Set Var Compression ParametersNF90_DEF_VAR_DEFLATE NF90_INQ_VAR_DEFLATE: Get Var Compression ParametersNF90_INQ_VAR_DEFLATE NF90_DEF_VAR_FLETCHER32: Set Var Fletcher32 FilterNF90_DEF_VAR_FLETCHER32 NF90_INQ_VAR_FLETCHER32: Get Var Fletcher32 FilterNF90_INQ_VAR_FLETCHER32 NF90_DEF_VAR_ENDIAN: Set Var EndiannessNF90_DEF_VAR_ENDIAN NF90_INQ_VAR_ENDIAN: Get Var EndiannessNF90_INQ_VAR_ENDIAN NF90_INQUIRE_VARIABLE: Get Var MetadataNF90_INQUIRE_VARIABLE NF90_PUT_VAR: Write dataNF90_PUT_VAR NF90_GET_VAR: Read dataNF90_GET_VAR 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


Download ppt "Netcdf course 2008-10-28 Intro CF convention Netcdf excercises."

Similar presentations


Ads by Google