Download presentation
Presentation is loading. Please wait.
Published byMadlyn Baldwin Modified over 9 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.