ConceptioArchiveOpen Geospatial Consortium (OGC)
Open Geospatial Consortium (OGC)open access

CF-netCDF3 Data Model Extension standard — OGC 11-165r2

Open Geospatial Consortium · Open Geospatial Consortium (OGC)
Open Geospatial Consortium (OGC) · Standards · License: Open Access
Open Source ↗Direct PDF ↓
dataextensiongeospatialmodelogcogc11opengeospatialconsortium
ogc, geospatial, standard, open geospatial consortium, netcdf, ogc netcdf, 11-165r2, ogc 11-165r2, cf-netcdf3, data, model, extension

Open Geospatial Consortium Approval Date: 2012-12-17 Publication Date: 2013-01-03 External OGC identifier: http://www.opengis.net/doc/is/netcdf-data-model-extension/1.0 Reference number of this document: OGC 11-165r2 Version: 3.1 Category: OpenGIS® Standard Editors: Ben Domenico and Stefano Nativi

CF-netCDF3 Data Model Extension standard Copyright © 2013 Open Geospatial Consortium Copyright © 2013 Open Geospatial Consortium To obtain additional rights of use, visit http://www.opengeospatial.org/legal/.

Warning This document is an OGC Member approved international standard. This document is available on a royalty free, non-discriminatory basis. Recipients of this document are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.

Document type: Document subtype: Document stage: Document language :

OGC® Implementation Standard Encoding Approved for Public Release English

OGC 11-165r2

License Agreement Permission is hereby granted by the Open Geospatial Consortium, ("Licensor"), free of charge and subject to the terms set forth below, to any person obtaining a copy of this Intellectual Property and any associated documentation, to deal in the Intellectual Property without restriction (except as set forth below), including without limitation the rights to implement, use, copy, modify, merge, publish, distribute, and/or sublicense copies of the Intellectual Property, and to permit persons to whom the Intellectual Property is furnished to do so, provided that all copyright notices on the intellectual property are retained intact and that each person to whom the Intellectual Property is furnished agrees to the terms of this Agreement. If you modify the Intellectual Property, all copies of the modified Intellectual Property must include, in addition to the above copyright notice, a notice that the Intellectual Property includes modifications that have not been approved or adopted by LICENSOR. THIS LICENSE IS A COPYRIGHT LICENSE ONLY, AND DOES NOT CONVEY ANY RIGHTS UNDER ANY PATENTS THAT MAY BE IN FORCE ANYWHERE IN THE WORLD. THE INTELLECTUAL PROPERTY IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE DO NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE INTELLECTUAL PROPERTY WILL MEET YOUR REQUIREMENTS OR THAT THE OPERATION OF THE INTELLECTUAL PROPERTY WILL BE UNINTERRUPTED OR ERROR FREE. ANY USE OF THE INTELLECTUAL PROPERTY SHALL BE MADE ENTIRELY AT THE USER’S OWN RISK. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ANY CONTRIBUTOR OF INTELLECTUAL PROPERTY RIGHTS TO THE INTELLECTUAL PROPERTY BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM ANY ALLEGED INFRINGEMENT OR ANY LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR UNDER ANY OTHER LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH THE IMPLEMENTATION, USE, COMMERCIALIZATION OR PERFORMANCE OF THIS INTELLECTUAL PROPERTY. This license is effective until terminated. You may terminate it at any time by destroying the Intellectual Property together with all copies in any form. The license will also terminate if you fail to comply with any term or condition of this Agreement. Except as provided in the following sentence, no such termination of this license shall require the termination of any third party end-user sublicense to the Intellectual Property which is in force as of the date of notice of such termination. In addition, should the Intellectual Property, or the operation of the Intellectual Property, infringe, or in LICENSOR’s sole opinion be likely to infringe, any patent, copyright, trademark or other right of a third party, you agree that LICENSOR, in its sole discretion, may terminate this license without any compensation or liability to you, your licensees or any other party. You agree upon termination of any kind to destroy or cause to be destroyed the Intellectual Property together with all copies in any form, whether held by you or by any third party. Except as contained in this notice, the name of LICENSOR or of any other holder of a copyright in all or part of the Intellectual Property shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Intellectual Property without prior written authorization of LICENSOR or such copyright holder. LICENSOR is and shall at all times be the sole entity that may authorize you or any third party to use certification marks, trademarks or other special designations to indicate compliance with any LICENSOR standards or specifications.

ii

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Contents

Page

i.   Abstract  ...............................................................................................................  xv   ii.   Keywords  ...........................................................................................................  xvi   iii.   Preface  .............................................................................................................  xvii   iv.   Document  terms  and  definitions  .....................................................................  xviii   v.   Submitting  organizations  ....................................................................................  xix   vi.   Document  Contributor  Contact  Points  ................................................................  xx   vii.   Changes  to  the  OGC  Abstract  Specification  .......................................................  xxi   viii.

Future  work  ...................................................................................................  xxii

1   Scope  ....................................................................................................................  3   2   Conformance   ........................................................................................................  3   3   Normative  references  ............................................................................................  3   4   Terms  and  definitions  ............................................................................................  4   4.1   CDL  syntax  ..................................................................................................................  4   4.2   Coverage  ....................................................................................................................  4   4.2.1   Data  Model  ................................................................................................................  4   4.2.2   Feature  .......................................................................................................................  5   4.2.3   Grid  ............................................................................................................................  5   4.2.4   Multi-­‐point  coverage  .................................................................................................  5   4.2.5   NetCDF  .......................................................................................................................  5   5   Conventions  ..........................................................................................................  5   5.1   Namespace  prefix  conventions  ...................................................................................  5   6   NetCDF  Data  Model  extension  ..............................................................................  6   6.1   CF  Conventions  ...........................................................................................................  6   6.1.1   Introduced  Requirements  ..........................................................................................  7   7   CF-­‐netCDF  Data  Model  ..........................................................................................  9   7.1   Extension  packages  ....................................................................................................  9   7.2   CF-­‐netCDF  core  extension  data  model  ........................................................................  9   7.3   “CF-­‐netCDF  core”  requirements  class   .......................................................................  12   7.3.1   Structural  adherence  ...............................................................................................  12   7.3.2   General  Conventions  ................................................................................................  12   7.3.3   CF-­‐netCDF  Variables  and  Standard  Attributes  .........................................................  13   7.3.4   CF-­‐netCDF  Dimensions  and  Dimensional  Variables  .................................................  14   7.3.5   Units  attribute  ..........................................................................................................  15   7.3.6   CF-­‐NetCDF  Coordinate  Variables  and  Coordinate  Types  .........................................  15   iii

Copyright © 2013 Open Geospatial Consortium Copyright © 2013

OGC 11-165r2

7.3.7   Well-­‐known  coordinates  ..........................................................................................  17   7.3.8   Auxiliary  Coordinate  Variable  ..................................................................................  21   7.3.9   Scalar  Coordinate  Variables  .....................................................................................  22   7.3.10   Coordinate  Systems  ...............................................................................................  23   7.3.11   Grid  Cells  ................................................................................................................  25   7.3.12   Cell  Boundary  Variable  ...........................................................................................  25   7.3.13   Cell  Measure  Variable  ............................................................................................  26   7.4   The  Discrete  Sampling  Geometries  extension  data  model  ........................................  28   7.5   “CF-­‐netCDF  Discrete  Sampling”  requirements  class  ..................................................  30   7.5.1   Structural  adherence  ...............................................................................................  30   7.5.2   Features  and  Feature  Types  .....................................................................................  30   7.5.3   Collections,  instances  and  elements  ........................................................................  32   7.5.4   Representations  of  collections  of  features  in  data  variables  ...................................  32   7.5.5   Orthogonal  multidimensional  array  representation  ................................................  33   7.5.6   Incomplete  multidimensional  array  representation  ................................................  33   7.5.7   Contiguous  ragged  array  representation  .................................................................  33   7.5.8   Indexed  ragged  array  representation  ......................................................................  34   7.5.9   FeatureType  attribute  ..............................................................................................  35   7.5.10   Coordinates  and  metadata  ....................................................................................  35   7.5.11   Missing  Data  ..........................................................................................................  36   7.5.12   Examples  ................................................................................................................  36

8   CF-­‐netCDF  Mapping  to  ISO  Coverage  Model  .........................................................  37   8.1   ISO  Coverages  and  Grid  Coverages  ...........................................................................  37   8.2   Dimensionality  Challenges  ........................................................................................  37   8.3   CF-­‐netCDF  model  mapping  to  ISO  Coverage  types  ....................................................  38   8.3.1   CF-­‐netCDF  and  Continuous  coverages  .....................................................................  38   8.4   “CF-­‐netCDF  Mapping  onto  ISO  19123”  requirements  class  ........................................  39   8.4.1   Coverage  types  .........................................................................................................  39   8.4.2   Mapping  rules  ..........................................................................................................  42   8.4.3   Coordinate  System  ...................................................................................................  43   8.4.4   CF  Discrete  Sampling  Geometries  ............................................................................  47   8.4.5   Feature  collections  ...................................................................................................  48   9   Bibliography  .........................................................................................................  57   Annex  A  (normative)    Abstract  test  suite  ....................................................................  59   A.1  Conformance  Test  Classes:  CF-­‐netCDF-­‐1.6  ............................................................  59   A.2  CF-­‐netCDF-­‐1.6-­‐core  conformance  class  .................................................................  59   A.3  CF-­‐netCDF-­‐1.6-­‐DiscreteSampling  conformance  class  .............................................  72   A.4  CF-­‐netCDF-­‐1.6-­‐ISOMapping  conformance  class  .....................................................  77   Annex  B  Revision  History  ............................................................................................  86

iv

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Figures

Page

Figure 1 - NetCDF core data model [1]

6

Figure 2 - CF-netCDF data model extension packages

9

Figure 3 - CF-netCDF core data model: CF Variable and Standard Attributes

10

Figure 4 - CF-netCDF core data model: CF Coordinate Variables, Coordinate Types, Coordinate Systems, and Grid Cells

11

Figure 5 - Discrete Sampling Geometries data model: context

29

Figure 6 - Discrete Sampling Geometries data model: data representations

30

Figure 7 - CF-netCDF dataset mapping to ISO coverage types

40

Figure 8 - ISO19123:CV_DiscretePointCoverage data model

41

Figure 9 - ISO19123:CV_DiscreteGridPointCoverage data model

42

Figure 10 - CF-netCDF dataset mapping ISO19123:CV_DiscreteCoverage

43

Figure 11 - CF-netCDF Discrete Sampling Geometries mapping ISO19123: DiscreteCoverage

47

Tables

Page

Table 1. CF elements overruled from optional to mandatory ............................................. 7   Table 2. Mandatory dimensions for Feature Type ............................................................ 31   Table 3. Summary of relationships between CF-netCDF3 and CV_DiscreteGridPointCoverage models: main packages.......................................... 49   Table 4. Summary of relationship between CF-netCDF and CV_DiscreteCoverage models: Coverage Function package.......................................................................... 50   Table 5. Summary of relationship between the CF-netCDF and the DiscreteCoverage profile models: Coordinate System package .............................................................. 53   Table 6. Summary of relationship between the CF-netCDF and the DiscreteCoverage profile models: Discrete Sampling Geometries package ........................................... 55

v

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Requirements

Page

Requirement  1   /req/CF-­‐netCDF-­‐1.6-­‐core/structural-­‐adherence:  Any  data   instantiating  a  concrete  CF-netCDF dataset  shall  conform  with  the  UML   diagrams  in  Figure  3  and  Figure  4Figure  1.  ..................................................................  12   Requirement  2   ./req/CF-­‐netCDF-­‐1.6-­‐core/Conventions:  Any  CF-netCDF Dataset  that  uses  the  CF  convention  shall  define  the  global  attribute   Conventions  to  the  string  value  "CF-­‐1.6".  ..............................................................  12

Requirement  3   /req/CF-­‐netCDF-­‐1.6-­‐core/NamingConventions:  CF-netCDF Variable,  Dimension  and  Attribute  names  shall  begin  with  a  letter  and  be   composed  of  letters,  digits,  and  underscores.  ...........................................................  12   Requirement  4   /req/CF-­‐netCDF-­‐1.6-­‐core/ReservedAttributeNames:  CF-netCDF Attribute names  commencing  with  underscore  ('_')  shall  be  reserved  for  use  by   the  netCDF  library.  12   Requirement  5   /req/CF-­‐netCDF-­‐1.6-­‐core/StandardAttributeNames:  The  list  of  CFnetCDF Attribute names    reported  in  the  Appendix  A  of  [8]  shall  be  considered   standard  names  and  therefore  reserved.  ....................................................................  13   Requirement  6   /req/CF-­‐netCDF-­‐1.6-­‐core/StandardNames:  Any  CF-netCDF Variable  shall  define  either  a  standard_name  attribute  or  a  long_name attribute. Exception, this  is  not  mandatory  only  for Bounday Variable  ......  14

Requirement  7   /req/CF-­‐netCDF-­‐1.6-­‐core/StandardNameValues:  A  standard name  shall  contain  no  whitespace  and  shall  be  case  sensitive.    In  addition, the  set  of   permissible  standard  names  is  contained  in  the  CF  standard  name  table  published  at:   http://cf-­‐pcmdi.llnl.gov/documents/cf-­‐standard-­‐names/standard-­‐name-­‐table/18/cf-­‐ standard-­‐name-­‐table.xml  ...........................................................................................  14   Requirement  8   /req/CF-­‐netCDF-­‐1.6-­‐core/Dimensions:  For  any  CF-netCDF Variable, its  Dimension  names  shall  have  different  names.  ............................  14

Requirement  9   /req/CF-­‐netCDF-­‐1.6-­‐core/DimensionsShape:  For  a  given  spatial-­‐ temporal  CF-netCDF Variable, its  spatial-­‐temporal  Dimensions  order  shall   appear  in  the  relative  order  T,  then  Z,  then  Y,  then  X. In  addition,  any  other   dimension  shall  be  placed  to  the  left  of  the  spatiotemporal  dimensions.  ...................  14   Requirement  10   /req/CF-­‐netCDF-­‐1.6-­‐core/Units:  Any  dimensional  CF-netCDF Variable  (i.e.  CF-netCDF Variable  that  represents  dimensional  quantity)  shall   define  a  units attribute. Exception, this  is  not  mandatory  only  for Bounday Variable In  addition,  the  units  value  may  be  physically  equivalent  (not   necessarily  identical)  to  the  canonical  units  for  the  Variable.  .....................................  15   vi

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Requirement  11   /req/CF-­‐netCDF-­‐1.6-­‐core/UnitsValue:  any  units  attribute  value   shall  be  a  string  that  can  be  recognized  by  UNIDATA"s  Udunits  package  [9].    In   addition,  exceptions  are  the  units  level,  layer,  and  sigma_level.  ................................  15   Requirement  12   /req/CF-­‐netCDF-­‐1.6-­‐core/UnitsConsistency:  The  units  of  a  CFVariable  shall  be  consistent  with  the  units  given  in  the  standard  name  table   (published  at:).    http://cf-­‐pcmdi.llnl.gov/documents/cf-­‐standard-­‐names/standard-­‐ name-­‐table/18/cf-­‐standard-­‐name-­‐table.xml    In  addition,  the  units  must  also  be   consistent  with  a  specified  cell_methods  attribute,  if  one  is  present.  ...................  15

Requirement  13   /req/CF-­‐netCDF-­‐1.6-­‐core/CoordinateData:  Any  Variable   containing  coordinate  data  shall  be:  a  Coordinate Variable | an Auxiliary Coordinate Variable  .................................................................  16   Requirement  14   /req/CF-­‐netCDF-­‐1.6-­‐core/CoordinateData/CoordinateVariable:  A   Coordinate Variable    shall  be  defined  for  each  Dimension  that  correspond  to   one  dimensional  space  or  time  coordinates.  ..............................................................  17   Requirement  15   /req/CF-­‐netCDF-­‐1.6-­‐core/CoordinateVariableDimension:  any   Coordinate Variable    shall  have  a  single  Dimension  whose  name  matches  the   the  Variable  name.   ...............................................................................................  17   Requirement  16   /req/CF-­‐netCDF-­‐1.6-­‐core/CoordinateVariableValues:   Coordinate Variable  values  shall  be  ordered  monotonically.  ...........................  17

Requirement  17   /req/CF-­‐netCDF-­‐1.6-­‐core/CoordinateVariable/AxisAttribute:  for   any  Coordinate Variable  the  attribute  axis shall  be  given  one  of  the  values  X,   Y,  Z or  T. In  addition these  values stand  for  a  longitude,  latitude,  vertical,  or   time  axis  respectively  for  the  CF-­‐netCDF  cordinate  types:  LongitudeCoordinate, LatitudeCoordinate, VerticalCoordinate,  TimeCoordinate  .  ..........  17   Requirement  18   /req/CF-­‐netCDF-­‐1.6-­‐ core/CoordinateVariable/AxisAttributeSemantic:  The  values  X and  Y for  the  axis   attribute  shall  be  used  to  identify  horizontal  coordinate  variables.  ............................  17   Requirement  19   /req/CF-­‐netCDF-­‐1.6-­‐ core/CoordinateVariable/Missing_valuesAttribute:  Coordinate Variable  shall   not  define  an  attribute  missing_values.  ..............................................................  17

Requirement  20   /req/CF-­‐netCDF-­‐1.6-­‐core/LatitudeCoordinate:  For  any  Latitude   Coordinate  the  units  attribute  values  shall  be:  degrees_north | degree_north |  degree_N,  |  degrees_N  |  degreeN  |  degreesN.    In   addition,  Coordinates  of  latitude  with  respect  to  a  rotated  pole  should  be  given  units   of  degrees,  not  degrees_north  or  equivalents,  ..................................................  18   Requirement  21   /req/CF-­‐netCDF-­‐1.6-­‐core/LongitudeCoordinate:  For  any   Longitude  Coordinate  the  units  attribute  values  shall  be:  degrees_east | degree_east |  degree_E,  |  degrees_E  |  degreeE  |  degreesE.    In  addition,   Copyright © 2013 Open Geospatial Consortium vii

OGC 11-165r2

Coordinates  of  longitude  with  respect  to  a  rotated  pole  should  be  given  units  of   degrees,  not  degrees_east  or  equivalents,  ........................................................  18   Requirement  22   /req/CF-­‐netCDF-­‐1.6-­‐core/VerticalCoordinatePositiveAttribute:   Any  Vertical  Coordinate  shall  define  the  positive  attribute  whose  values   shall  be:  up | down.  ...............................................................................................  19   Requirement  23   /req/CF-­‐netCDF-­‐1.6-­‐core/VerticalCoordinateUnitsAttribute:  For   any  Vertical  Coordinate  the  units  attribute  values  shall  be:  units  of  pressure   as  listed  in  the  file  udunits.dat (e.g. bar,  millibar,  decibar,  atmosphere (atm),  pascal (Pa),  and  hPa) | units  of  length  as  listed  in  the  file   udunits.dat (e.g. meter, metre, m, kilometer, km) |  other  units   listed  in  the  file  udunits.dat  that  may  under  certain  circumstances  reference   vertical  position  such  as  units  of  density  or  temperature.  ..........................................  19   Requirement  24   /req/CF-­‐netCDF-­‐1.6-­‐core/DimensionlessVerticalCoordinate:  Any   Dimensionless  Vertical  Coordinate  shall  be  defined  in  Appendix  D  of  [8].  .  19   Requirement  25   /req/CF-­‐netCDF-­‐1.6-­‐ core/DimensionlessVerticalCoordinateFormula_TermsAttribute:  Any   Dimensionless  Vertical  Coordinate  shall  define  the  formula_terms   attribute.   19   Requirement  26   /req/CF-­‐netCDF-­‐1.6-­‐core/TimeCoordinateUnitsAttribute:  For  any   Time  Coordinate  the  units  attribute  values  shall  be  units  of  time  as  listed  in  the   file  udunits.dat (e.g. day or (d),  hour or (hr, h),  minute or (min), and  second or (sec, s)  ).  .................................................................................  20   Requirement  27   /req/CF-­‐netCDF-­‐1.6-­‐core/TimeCoordinateCalendarAttribute:  Any   Time  Coordinate  shall  define  the  calendar attribute    In  addition,  the  values   currently  defined  for  calendar are:  gregorian or  standard | proleptic_gregorian | noleap or  365_day | all_leap or  366_day | 360_day | julian | none.  .........................................................................  21   Requirement  28   /req/CF-­‐netCDF-­‐1.6-­‐core/TimeCoordinateNonstandardCalendar:   Any  Time  Coordinate  characterized  by  a  nonstandard  calendar  shall  define  the   month_lengths  attribute  to  specify  its  calendar.      In  addition,  the  attribute  value   shall  be  for  non-­‐leap  year: a  vector  of  size  12,  specifying  the  number  of  days  in  the   months  from  January  to  December.    In  addition,  for  leap  year  two  other  attributes  of   the  time  axis  shall  be  defined:  leap_year  and  leap_month.  ..............................  21   Requirement  29   /req/CF-­‐netCDF-­‐1.6-­‐core/AuxiliaryCoordinateVariable:    An   Auxiliary Coordinate Variable  shall  be  identified  by  the    coordinates   attribute  defined  by  a  netCDF Variable.    In  addition,  The  value  of  the   coordinates  attribute  is  a  blank  separated  list  of  the  names  of  Auxiliary   Coordinate  Variables  .......................................................................................  22   viii

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Requirement  30   /req/CF-­‐netCDF-­‐1.6-­‐core/ScalarCoordinateVariable:    A  Scalar Coordinate Variable  shall  define  a  coordinate  which  is  single-­‐valued.    In   addition,  the  Scalar Coordinate Variable  name  shall  not  match  the  name  of   any  dimension  in  the  netCDF  dataset.  ........................................................................  23   Requirement  31   /req/CF-­‐netCDF-­‐1.6-­‐core/HorizontalCRS:  For  any  CF Variable   defined  on  an  horizontal  grid  not  defined  on  latitude  and  longitude  dimensions,  true   latitude  and  longitude  coordinates  shall  be  supplied  as  Coordinate Variables   and  associated  via  the  coordinates attribute.    In  addition:  the  attribute   grid_mapping may  be  used  to  supply  the  description  of  the  mapping  between  the   given  grid  coordinate  variables  and  the  true  latitude  and  longitude  coordinates.    In   addition:  the  grid_mapping attribute  takes  a  string  value  which  is  the  name  of  a   Grid Mapping Variable  ...................................................................................  23   Requirement  32   /req/CF-­‐netCDF-­‐1.6-­‐core/GridMappingVariable:  Any  Grid Mapping Variable  shall  define  the  grid_mapping_name attribute..  ............  24

Requirement  33   /req/CF-­‐netCDF-­‐1.6-­‐core/BoundaryVariable:  Any  Boundary Variable  shall  define  one  more  dimension  than  its  associated  Coordinate  or   Auxiliary Coordinate  Variable.    In  addition,  The  additional  dimension  shall     be  the  most  rapidly  varying  one,  and  its  size  is  the  maximum  number  of  cell  vertices  25   Requirement  34   /req/CF-­‐netCDF-­‐1.6-­‐core/CellMeasures:  cell_measures   attribute  shall  be    a  string  attribute  comprising  a  list  of  blank-­‐separated  pairs  of  words   of  the  form  "measure:  name".  ...................................................................................  26   Requirement  35   /req/CF-­‐netCDF-­‐1.6-­‐core/MeasureVariable:  Measure Variable  dimensions  shall  be  the  same  as  or  a  subset  of  the  dimensions  of  the  CF   Variable  to  which  they  are  related.  .......................................................................  26   Requirement  36   /req/CF-­‐netCDF-­‐1.6-­‐core/CellMethods:  cell_methods   attribute  shall  be    a  string  attribute  comprising  a  list  of  blank-­‐separated  words  of  the   form  "name:  method".    In  addition,  name  can  be:  a  Dimension  of  the  variable   (defining  the  attribute),  a  Scalar Coordinate Variable,  a  valid  standard   name,  or  the  word  "area".    In  addition,  the  value  of  method  should  be:  point  |  sum   |  mean |  maximum |  minimum  |  mid_range |  standard_deviation  |   variance,  mode |  median.  ..................................................................................  27   Requirement  37   /req/CF-­‐netCDF-­‐1.6-­‐ DiscreteSampling/DistrictSamplingGeometriesModel:  Any  data  instantiating  a   concrete  CF-netCDF DistrictSamplingGeometry dataset  shall  conform   with  the  UML  diagrams  in  Figure  5  and  Figure  6.  ........................................................  30   Requirement  38   /req/CF-­‐netCDF-­‐1.6-­‐DiscreteSampling/FeatureCollection:  CFnetCDF Feature Collection  shall  contain  Feature  instances  of  the  same   type.   31   ix

Copyright © 2013 Open Geospatial Consortium Copyright © 2013

OGC 11-165r2

Requirement  39   /req/CF-­‐netCDF-­‐1.6-­‐DiscreteSampling/Feature:  CF-netCDF Dataset shall  contain  Feature Collection  variables  of  the  same  feature  type.   31   Requirement  40   /req/CF-­‐netCDF-­‐1.6-­‐DiscreteSampling/FeatureTypeDimension:   Any  CF-netCDF Feature Collection variable implementing  a Feature type shall  define  the  Dimensions  specified  in Table  2.  .......................................  32   Requirement  41   /req/CF-­‐netCDF-­‐1.6-­‐DiscreteSampling/MultidimensionalArray:   Any  Multidimensional  Array  Feature  Collection  shall  have  both  an  Instance  Dimension   and  an  Element  Dimension.  ........................................................................................  33   Requirement  42   /req/CF-­‐netCDF-­‐1.6-­‐DiscreteSampling/RaggedArray:  Any  Ragged Array  Feature Collection  shall  have  a  Sample Dimension.    In  addition,   the  Sample Dimension  is  occupied  by  both  an  Instance Dimension  and  an   Element Dimension.  ..........................................................................................  33   Requirement  43   /req/CF-­‐netCDF-­‐1.6-­‐ DiscreteSampling/OrthogonalMultidimensionalArray:  Any  Feature  instance  of  an   Orthogonal Multidimensional Array Feature Collection  shall  have   identical  Coordinates  along  the  Element  Dimension.  .....................................  33   Requirement  44   /req/CF-­‐netCDF-­‐1.6-­‐DiscreteSampling/ContiguousRaggedArray:   Any  Contiguous Ragged Array dataset  shall  have  a  Count Variable.  .....  34   Requirement  45   /req/CF-­‐netCDF-­‐1.6-­‐ DiscreteSampling/ContiguousRaggedArraySampleDimension:  Any  Count Variable   shall  define  the  attribute  sample_dimension.      In  addition,  the  attribute   sample_dimension names  the  Sample Dimension  being  counted.  ...............  34   Requirement  46   /req/CF-­‐netCDF-­‐1.6-­‐DiscreteSampling/IndexedRaggedArray:  Any   Indexed Ragged Array dataset  shall  have  an  Index Variable.      In  addition,   the  Index Variable must  be  of  type integer. In  addition, the  Index Variable must have the  Sample Dimension  as  its  single  dimension.  ............  34   Requirement  47   /req/CF-­‐netCDF-­‐1.6-­‐ DiscreteSampling/IndexedRaggedArrayInstanceDimension:  Any  Index Variable   shall  define  the  attribute  instance_dimension.      In  addition,  the  attribute   instance_dimension names  the  Instance Dimension  characterizing  the   Instance Variables  of  the  dataset  ...................................................................  35   Requirement  48   /req/CF-­‐netCDF-­‐1.6-­‐DiscreteSampling/Feature_type:  Any   Ragged Array  and  Multidimensional  Array  dataset  shall  define  an  attribute   feature_type.      In  addition,  the  attribute  feature_type  must  be:    point  |   timeSeries  |  trajectory  |  profile  |  timeSeriesProfile  |   trajectoryProfile.  ...........................................................................................  35   x

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Requirement  49   /req/CF-­‐netCDF/FeatureCollectionCoordinates:  Any  Feature Collection  data  variable  shall  define  an  attribute  coordinates.  ......................  35   Requirement  50   /req/CF-­‐netCDF-­‐1.6-­‐DiscreteSampling/Cf_role:  The  attribute   cf_role  must  be:  timeseries_id  |  profile_id  |  trajectory_id.  ...........  35   Requirement  51   /req/CF-­‐netCDF-­‐1.6-­‐DiscreteSampling/MissingData:  Auxiliary Coordinate Variables  characterizing  Feature Collection  shall  define  the   attribute  missing_values.  ...................................................................................  36

Requirement  52   /req/CF-­‐netCDF-­‐1.6-­‐ISOMapping/discreteGridPointCoverage:  Any   group  of  CF-­‐netCDF  data  variables  that  share  the  same  set  of  spatial/temporal   coordinate  variables  shall  realize  ISO19123:CV_DiscreteCoverage sub-­‐types: ISO19123:CV_DiscreteGridPointCoverage or ISO19123:CV_DiscretePointCoverage.    In  addition,  the   ISO19123:CV_CoverageFunction  shall  not  define  any  interpolation  method.  .  40   Requirement  53   /req/CF-­‐netCDF-­‐1.6-­‐ISOMapping/CoverageDomain:  the  set  of   spatial/temporal  Coordinate Variables,  shared  by  CF-­‐netCDF  data   Variables,  shall  realize  either  an   ISO19123:CV_DiscreteGridPointCoverage.CV_GridValueMatrix. CV_GridPoint.gridCoord  or ISO19123:CV_PointValuePair.geometry.   .................................................  43   Requirement  54   /req/CF-­‐netCDF-­‐1.6-­‐ISOMapping/DatasetCS:  the  CF-­‐netCDF   Coordinate System  type,  which  is  comprised  of  a  set  of  spatial/temporal   coordinate  variables  shared  by  CF-­‐netCDF  data  variables,  shall  realize   ISO19123:CV_DiscreteCoverage.SC_CRS.SC_CoordinateSystem or a   subtype  of  it  (i.e.   ISO19123:CV_DiscreteGridPointCoverage.SC_CRS.SC_CoordinateSy stem or ISO19123:CV_DiscretePointCoverage.SC_CRS.SC_CoordinateSystem ).    Additionally,  the  spatial/temporal  Coordinate Variables  and  its  subtypes   (i.e.  Vertical Coordinate,  Latitude Coordinate,  Longitude Coordinate,  Time Coordinate elements),  and  the  Auxiliary Coordinate Variables  shall  realize  the  related  set  of   SC_CRS.SC_CoordinateSystem.SC_CoordinateSystemAxis  ..................  44   Requirement  55   /req/CF-­‐netCDF-­‐1.6-­‐ISOMapping/DatasetCRS:  the  Grid Mapping Variable  projection  information  characterizing  a  set  of  spatial/temporal   coordinate  variables,  shared  by  CF-­‐netCDF  data  variables,  shall  realize     ISO19123:CV_DiscreteCoverage.SC_CRS.SC_CoordinateSystem.type or a  subtype  of  it.   44   Requirement  56   /req/CF-­‐netCDF-­‐1.6-­‐ISOMapping/DatasetRange:  the  CF-­‐netCDF   data  Variables  sharing  the  common  set  of  spatial/temporal  Coordinate

xi

Copyright © 2013 Open Geospatial Consortium Copyright © 2013

OGC 11-165r2

Variables,  shall  realize  one  of  the  following  objects:    (a)   ISO19123:CV_DiscreteGridPointCoverage.CV_GridValuesMatrix. values or  a  subtype  of  it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValuePair.value Additionally,  the  CF  Variable  data  values  generate  the  CV_GeometryValuePair   record  value(s):  (a)  CV_GridValueMatrix.values.record  entry  (i.e.   AttributeName, Any);  (b)  CV_PointValuePair.value.record  entry  (i.e.   AttributeName, Any).  ........................................................................................  45   Requirement  57   /req/CF-­‐netCDF-­‐1.6-­‐ISOMapping/DatasetRangeType:  the  CF-­‐ netCDF  data  Variables  sharing  a  common  set  of  spatial/temporal  coordinate   variables/auxiliary  coordinate  variables,  shall  realize  one  of  the  following  objects:    (a)   CV_DiscreteGridPointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName)  or  a  subtype  of  it; (b) CV_DiscretePointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName)  or  a  subtype  of  it.  .................................................  45   Requirement  58   /req/CF-­‐netCDF-­‐1.6-­‐ISOMapping/DatasetParametricRangeValues:   the  CF-­‐netCDF  Auxiliary Coordinate Variables  (part  of  the  dataset  shared   coordinate  system)  which  are  not  space  or  time  dimension,  shall  realize  one  of  the   following  objects:    (a)   ISO19123:CV_DiscreteGridPointCoverage.CV_GridValuesMatrix. values or  a  subtype  of  it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValuePair.value  ..  46   Requirement  59   /req/CF-­‐netCDF-­‐1.6-­‐ISOMapping/DatasetParametricRangeType:   the  CF-­‐netCDF  Auxiliary Coordinate Variables  (part  of  the  dataset  shared   coordinate  system)  which  are  not  space  or  time  dimension,  shall  realize  one  of  the   following  objects:    (a)   CV_DiscreteGridPointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName)  or  a  subtype  of  it; (b) CV_DiscretePointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName).   ............................................................................  46   Requirement  60   /req/CF-­‐netCDF-­‐1.6-­‐ ISOMapping/MeasureVariableMapping/RangeValues:  any  CF-­‐netCDF  Measure Variable  (characterising  a  CF  Variable)  shall  realize  one  of  the  following  objects:     (a)   ISO19123:CV_DiscreteGridPointCoverage.CV_GridValuesMatrix. values or  a  subtype  of  it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValuePair.value  ..  46   Requirement  61   /req/CF-­‐netCDF-­‐1.6-­‐ ISOMapping/MeasureVariableMapping/RangeType:  any  CF-­‐netCDF  Measure Variable  (characterising  a  CF  Variable)  shall  realize  one  of  the  following  objects:     xii

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

(a)  CV_DiscreteGridPointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName)  or  a  subtype  of  it; (b) CV_DiscretePointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName).   ............................................................................  46   Requirement  62   /req/CF-­‐netCDF-­‐1.6-­‐ ISOMapping/DiscreteSamplingGeometriesMapping/RaggedArray:  Any  CF-­‐netCDF   Ragged Array  shall  realize  ISO19123:CV_DiscreteCoverage sub-­‐type: ISO19123:CV_DiscreteGridPointCoverage    In  addition,  the   ISO19123:CV_CoverageFunction  shall  not  define  any  interpolation  method.  .  47   Requirement  63   /req/CF-­‐netCDF-­‐1.6-­‐ ISOMapping/DiscreteSamplingGeometriesMapping/MultidimensionalArray:  Any  CF-­‐ netCDF  Multidimensional Array  shall  realize   ISO19123:CV_DiscreteCoverage sub-­‐types: ISO19123:CV_DiscreteGridPointCoverage or ISO19123:CV_DiscretePointCoverage.    In  addition,  the   ISO19123:CV_CoverageFunction  shall  not  define  any  interpolation  method.  .  48   Requirement  64   /req/CF-­‐netCDF-­‐1.6-­‐ ISOMapping/MultidimensionalArrayFeatureCollectionMapping/RangeValues:  Any  CF-­‐ netCDF  Multidimensional Array Feature Collection  shall  realize  one  of   the  following  objects: (a)   ISO19123:CV_DiscreteGridPointCoverage.CV_GridValuesMatrix. values or  a  subtype  of  it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValuePair.value  ..  48   Requirement  65   /req/CF-­‐netCDF-­‐1.6-­‐ ISOMapping/MultidimensionalArrayFeatureCollectionMapping/RangeType:  Any  CF-­‐ netCDF  Multidimensional Array Feature Collection  shall  realize  one  of   the  following  objects:    (a)   CV_DiscreteGridPointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName)  or  a  subtype  of  it; (b) CV_DiscretePointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName)  or  a  subtype  of  it.  .................................................  49   Requirement  66   /req/CF-­‐netCDF-­‐1.6-­‐ ISOMapping/RaggedArrayFeatureCollectionMapping/RangeValues:  Any  CF-­‐netCDF   Multidimensional Array Feature Collection  shall  realize  an ISO19123:CV_DiscretePointCoverage.CV_PointValuePair.value or   a  subtype  of  it.   49   Requirement  67   /req/CF-­‐netCDF-­‐1.6-­‐ ISOMapping/RaggedArrayFeatureCollectionMapping/RangeType:  Any  CF-­‐netCDF   Ragged Array Feature Collection  shall  realize  an     xiii

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

ISO10123:CV_DiscretePointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName)  or  a  subtype  of  it.  .........................................  49

xiv

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

i.

Abstract The OGC netCDF encoding supports electronic encoding of geospatial data, that is, digital geospatial information representing space and time-varying phenomena. This standard specifies the CF-netCDF data model extension. This standard specifies the CF-netCDF data model mapping onto the ISO 19123 coverage schema. This standard deals with multi-dimensional gridded data and multi-dimensional multipoint data. In particular, this extension standard encoding profile is limited to multi-point, and regular and warped grids; however, irregular grids are important in the CF-netCDF community and work is underway to expand the CF-netCDF to encompass other coverages types, including irregular gridded datasets.

xv

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

ii.

Keywords Ogcdoc, netcdf, data model extension, multi-dimensional

xvi

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

iii.

Preface This OGC standard provides an extension of the “netCDF core” Data Model standard: OGC 10-090 [1]. Suggested additions, changes, and comments on this standard are welcome and encouraged. Such suggestions may be submitted by email message or by submitting an official OGC Change Request using the online CR application: https://portal.opengeospatial.org/public_ogc/change_request.php

xvii

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

iv.

Document terms and definitions This document uses the standard terms defined in Subclause 5.3 of [OGC 06-121r9], which is based on the ISO/IEC Directives, Part 2. Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this standard.

xviii

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

v.

Submitting organizations The following organizations have submitted this standard to the Open Geospatial Consortium:

The University Corporation for Atmospheric Research (UCAR) The National Research Council of Italy (CNR)

xix

Copyright © 2013 Open Geospatial Consortium Copyright © 2013

OGC 11-165r2

vi.

Document Contributor Contact Points All questions regarding this document should be directed to the editors: Name Stefano Nativi Ben Domenico

xx

Organization/email CNR/IIA/ESSI-lab / stefano.nativi<at>cnr.it UCAR/Unidata / ben<at>unidata.ucar.edu

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

vii.

Changes to the OGC Abstract Specification The OGC® Abstract Specification does not require any changes to accommodate the technical contents of this document.

xxi

Copyright © 2013 Open Geospatial Consortium Copyright © 2013

OGC 11-165r2

viii.

Future work Improvements in this document are desirable to support changes and additions to CF conventions and netCDF binary and XML encodings. However, it is important that CF and netCDF remain “loosely coupled” in the sense that each can change and evolve without having to rewrite the other each time. In particular, this extension standard encoding profile is limited to multi-point, and regular and warped grids; however, irregular grids are important in the CF-netCDF community and work is underway to expand the CF-netCDF to encompass other coverages types, including irregular gridded datasets. The current plan is to include these augmentations in subsequent versions of this standard extension. This standard is written for netCDF version 3, but netCDF version 4 is now being released. Currently the plan is to submit a separate extension standard for CF-netCDF version 4 as it becomes more heavily used in the community. Finally, the Discrete Sampling extension model may be tied to O&M 2.0 Sampling Feature model; infact, that was partially inspired by CF. Such alignment is planned for next release of the standard.

xxii

Copyright © 2013 Open Geospatial Consortium

OGC® Implementation Standard

OGC 11-165r2

Foreword This document is an extension of the “netCDF core” Data Model standard: OGC 10-090 [1]. This standard deals with: multi-dimensional gridded data and multi-dimensional multipoint data. The data model specified by this document can be encoded using the “NetCDF Binary Encoding Extension Standard: NetCDF Classic and 64-bit Offset Format” [OGC 10-092]. Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights. Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.

Copyright © 2013 Open Geospatial Consortium

1

OGC 11-165r2

Introduction The OGC netCDF encoding supports electronic encoding of geospatial data, that is, digital geospatial information representing space and time-varying phenomena. NetCDF (network Common Data Form) is a data model for array-oriented scientific data, a freely distributed collection of access libraries implementing support for that data model, and a machine-independent format. Together, the interfaces, libraries, and format support the creation, access, and sharing of multi-dimensional scientific data. This document specifies the CF-netCDF data model extension; every CF-netCDF dataset shall adhere to this standard. CF-netCDF encoding format is netCDF conforming to the Climate and Forecast (CF) conventions (i.e. CF-netCDF). This standard is based on the netCDF (network Common Data Form) ver. 3.0 file format using the CF (Climate and Forecast) conventions ver. 1.6 For the scope of this standard, CF-netCDF data model deals with multi-dimensional discrete coverage data. This OGC CF-netCDF Data Model extension standard consists of the present document. The document has OGC URI http://www.opengis.net/spec/netCDF_data-model/IS/CFnetCDF/. Background information regarding the overall landscape of netCDF standards is presented in the CF-netCDF Primer, OGC 10-091, “CF-netCDF: Core and Extensions.” This stanard is an extension to the core standard for the netCDF Classic data model in OGC 10-090r3, “NetCDF Core Encoding Standard version 1.0”.

2

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

CF-netCDF3 Data Model Extension standard 1

Scope

This standard specifies the CF-netCDF data model extension. This standard specifies the CF-netCDF data model mapping onto the ISO 19123 coverage schema. This standard deals with multi-dimensional gridded data and multi-dimensional multipoint data. 2

Conformance

Standardization targets are: (a) CF-netCDF core implementations (currently encodings); (b) CF-netCDF Discrete Sampling implementations (currently encodings); (c) the mapping of CF-netCDF data model to ISO 19123. This document establishes three requirements classes, one for each standardization target: 1. CF-netCDF core, of http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core -for the standardization target (a); 2. CF-netCDF Discrete Sampling, of http://www.opengis.net/spec/netCDF_datamodel/req/CF-netCDF-1.6-DiscreteSampling -for the standardization target (b); 3. CF-netCDF Mapping onto ISO 19123, of http://www.opengis.net/spec/netCDF_data-model/req/CF-netCDF-1.6ISOMapping -for the standardization target (c); and three corresponding pertaining conformance class, CF-netCDF, with URIs: 1. http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-core. 2. http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling 3. http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping Requirements and conformance test URIs defined in this document are relative to http://www.opengis.net/spec/netCDF_data-model/. Annex A lists the conformance tests which shall be exercised on any software artifact claiming to implement an OGC CF-netCDF extension for netCDF. 3

Normative references

The following normative documents contain provisions that, through reference in this text, constitute provisions of this standard. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply. For undated references, the latest edition of the normative document referred to applies. 3

OGC 11-165r2

OGC 10-090r3, NetCDF Core Encoding Standard version 1.0 Classes used: Core with URI: http://www.opengis.net/spec/netcdf/1.0/conf/core OGC 10-092, NetCDF Binary Encoding Extension Standard: NetCDF Classic and 64-bit Offset Format version 1.0 Classes used: netCDF classic with URI: http://www.opengis.net/spec/netcdf_binaryencoding_netcdf-classic-and-64-bit-offset/1.0/conf /netcdf-classic netCDF 64-bit with URI: http://www.opengis.net/spec/netcdf_binaryencoding_netcdf-classic-and-64-bit-offset /1.0/conf /netcdf-64-bit-offset

For this standard, there is one external normative document contain provisions that are quoted verbatim in this text and hence constitute provisions of this standard: NASA ESDS-RFC-021v0.02, CF Metadata Conventions, April 2010. Available at: http://www.esdswg.org/spg/rfc/esds-rfc-021/ESDS-RFC-021-v0.01.pdf An overview of this standard is provided by [18]. 4

Terms and definitions

For the purposes of this document, the terms and definitions given in the above references apply. In addition, the following terms and definitions apply. 4.1

CDL syntax

The ASCII format used to describe the contents of a netCDF file is called CDL (network Common Data form Language). This format represents arrays using the indexing conventions of the C programming language, i.e., index values start at 0, and in multidimensional arrays, when indexing over the elements of the array, it is the last declared dimension that is the fastest varying in terms of file storage order. The netCDF utilities ncdump and ncgen use this format. 4.2

Coverage

feature that acts as a function to return values from its range for any direct position within its spatiotemporal domain [OGC 07-111/ISO19123] 4.2.1

Data Model

a description of the organization of data in a manner that reflects an information structure [ISO/IEC 11179-1 Specification and standardization of data elements – Part 1: Framework] 4

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

NOTE: netCDF literature reports the following definition for data model: a way of thinking about scientific data by applying a data model theory. It is an abstraction that describes how datasets are represented and used. In computer terms, a data model can be thought of as equivalent to an abstract object model in Object Oriented Programming in that an abstract data model describes data objects and what methods can be used on them. 4.2.2

Feature

abstraction of real world phenomena [ISO 19101]. NOTE A feature may occur as a type or an instance. 4.2.3

Grid

network composed of two or more sets of curves in which the members of each set intersect the members of the other sets in a algorithmic way [OGC 07-111/ISO19123]. NOTE: the curves partition a space into grid cells. 4.2.4

Multi-point coverage

A discrete coverage which is characterized by a finite domain consisting of points. Generally, the domain is a set of irregularly distributed points [OGC 07-111/ISO19123]. A set of hydrographic soundings is an example of a discrete point coverage. 4.2.5

NetCDF

NetCDF is a standard for data on complex grids –curvilinear in XY; sigma and densityrelated in Z; climatological and artificial calendars in T; and heading towards "tile mosaics" and 5D forecast ensembles in the near future. 5

Conventions

5.1

Namespace prefix conventions

The following namespaces are used in this document. The prefix abbreviations used constitute conventions used here, but are not normative. The namespaces to which the prefixes refer are normative, however. — Namespace mappings Prefix

Namespace URI

Description

xsd

http://www.w3.org/2001/XMLSchema

XML Schema

gml

http://www.opengis.net/gml/3.2

GML 3.2.1

ncml

http://unidata.ucar.edu/ncml

ncML schema

5

OGC 11-165r2

6

NetCDF Data Model extension

A formal specification of the netCDF data model is provided by [1]; while, [2] provides a general description of the netCDF technology. For reader’s convenience, the netCDF core data model is shown in Figure 1.

Figure 1 - NetCDF core data model [1]

6.1

CF Conventions

The purpose of the CF conventions is to require conforming datasets to contain sufficient metadata that they are self-describing in the sense that each variable in the file has an associated description of what it represents, including physical units if appropriate, and that each value can be located in space (relative to earth-based coordinates) and time. This enables users of data from different sources to decide which quantities are comparable, and facilitates building applications with powerful extraction, regridding, and display capabilities. This standard considers version 1.6 of the CF conventions. The full CF Conventions reference documentation is provided in [8] and [16]. For this standard, provisions were given by [18].

6

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

6.1.1

Introduced Requirements

Most of the introduced requirements are taken from the “CF Conformance Requirements and Recommendations” published by the Program for Climate Model Diagnosis & Intercomparison (PCMDI) [10], from the “NetCDF Climate and Forecast (CF) Metadata Conventions, Version 1.5” [8], and from "NetCDF Climate and Forecast (CF) Metadata Conventions, Version 1.6 -Chapter 9" [16]. For interoperability sake, the following requirement section specifies a CF 1.6 profile by restricting some of the original specifications –i.e. by transforming most of the recommendations into mandatory requirements. Table 1 reports the elements who are considered mandatory for this standard while they are optional for CF 1.6.

Table 1. CF elements overruled from optional to mandatory

Entity

Requirements

Condition

CF-netCDF Variable

standard_name   Mandatory   Optional   attribute  or  a   long_name attribute.

CF  1.6   condition

Exception   Bounday Variable

Coordinate axis  attribute   Variable

Manadtory   Optional

Dimensionless   formula_terms   attribute   Vertical   Coordinate

Mandatory   Optional

Mandatory   Optional

Mandatory   Conditional

Mandatory   Optional

Spatial-­‐ temporal CF-netCDF Variable,

Dimensions  order   shall  appear  in  the   relative  order  T,  then  Z,   then  Y,  then  X. In  addition,  any  other   Dimension  shall  be   placed  to  the  left  of  the   spatiotemporal   Dimensions

Vertical   Coordinate

Positive attribute

Time   Calendar attribute Coordinate

7

OGC 11-165r2

Time   month_lengths   Coordinate   attribute   characterized   by  a   nonstandard   calendar

Mandatory   Optional

Time   leap_year  and   Coordinate   leap_month characterized   attributes by  a   nonstandard   calendar  (for   leap  years)

Mandatory   Optional

Coordinate Variable   defined  on  a   horizontal   grid  not   defined  on   latitude  and   longitude   dimensions

coordinates attribute   which  associates  a  couple   of  Coordinate Variables  defining  the   true  latitude  and  longitude   coordinates

Mandatory   Optional

Measure Variable

Dimensions  shall  be   the  same  as  or  a  subset   of  the  dimensions  of  the   CF  Variable  to  which   they  are  related

Mandatory   Optional

8

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

7

CF-netCDF Data Model

7.1

Extension packages

Based on the OGC netCDF data model (OGC 10-090r3), the following extension packages are modeled by this standard (as depicted in Figure 2): General conventions; Variables and Standard attributes conventions; Dimensions and Dimensional Variables conventions; Coordinate Variables and Coordinate Types conventions; Coordinate Systems convention; Discrete Sampling Geometries.

«Conventions» Grid Cells

Core extension

«Conventions» Coordinate Variables and Coordinate Types

«Conventions» Discrete Sampling Geometries

«Conventions» Dimensions and Dimensional Variables

«Conventions» General

«Conventions» Coordinate Systems

«Conventions» Variables and Standard Attributes

Figure 2 - CF-netCDF data model extension packages

All the packages but the “Discrete Sampling Geometry” will be described as part of the CF-netCDF core extension data model. While the “Discrete Sampling Geometry” package realizes the CF-netCDF Discrete Sampling data model. 7.2

CF-netCDF core extension data model

For the scope of this standard, the core extension data model of CF-netCDF is shown in Figure 3 and Figure 4.

9

OGC 11-165r2

Figure 3 - CF-netCDF core data model: CF Variable and Standard Attributes

10

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Figure 4 - CF-netCDF core data model: CF Coordinate Variables, Coordinate Types, Coordinate Systems, and Grid Cells

11

OGC 11-165r2

7.3

“CF-netCDF core” requirements class

The “CF-netCDF core” requirements class (URI: http://www.opengis.net/spec/netCDF_data-model/req/CF-netCDF-1.6-core) must be applied to those datasets implementing the core extension data model of CF-netCDF (see Figure 3 and Figure 4). This requiremets class is comprised of 36 requirements (from req 1 to req 36) described by the following clauses. 7.3.1

Structural adherence

Requirement 1 /req/CF-netCDF-1.6-core/structural-adherence: Any data instantiating a concrete CF-netCDF dataset shall conform with the UML diagrams in Figure 3 and Figure 4Figure 1.

7.3.2

General Conventions

7.3.2.1 Conventions

To identify that the file uses the CF convention, the Conventions global attribute shall be given the string value of “CF-1.6” Requirement 2 ./req/CF-netCDF-1.6-core/Conventions: Any CF-netCDF Dataset that uses the CF convention shall define the global attribute Conventions to the string value "CF-1.6". 7.3.2.2 Naming conventions

Variable, dimension, and attribute names should begin with a letter and be

composed of letters, digits, and underscores.

Requirement 3 /req/CF-netCDF-1.6-core/NamingConventions: CF-netCDF Variable, Dimension and Attribute names shall begin with a letter and be composed of letters, digits, and underscores. 7.3.2.3 Reserved attribute names

Names commencing with underscore ('_') are reserved for use by the netCDF library. Most generic applications that process netCDF datasets assume standard attribute conventions. Requirement 4 /req/CF-netCDF-1.6-core/ReservedAttributeNames: CF-netCDF Attribute names commencing with underscore ('_') shall be reserved for use by the netCDF library.

12

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

7.3.2.4 Standard attribute names

Requirement 5 /req/CF-netCDF-1.6-core/StandardAttributeNames: The list of CFnetCDF Attribute names reported in the Appendix A of [8] shall be considered standard names and therefore reserved.

7.3.3

CF-netCDF Variables and Standard Attributes

Each variable in a netCDF file has an associated description which is provided by the attributes units, long_name, and standard_name. The units, and long_name attributes are defined in the netCDF User Guide document [7] and the standard_name attribute is defined in the CF conventions document [8]. Example of units, standard and long name values (CDL syntax): netcdf temperature { dimensions: lat = 45; lon = 57; variables: double lat(lat); lat:standard_name=”latitude”; lat:long_name=”latitude”; lat:units=”degrees_north”; double lon(lon); lon:standard_name=”longitude”; lon:long_name=”longitude”; lon:units=”degrees_east”;

}

double temperature(lon, lat); temperature:standard_name=”air_temperature”; temperature:long_name=”temperature”; temperature:units=”K”;

CF Standard names attribute A fundamental requirement for exchange of scientific data is the ability to describe precisely the physical quantities being represented. The standard_name attribute is the name used to identify the physical quantity. It is used to provide unique identifiers for variables. CF standard names conventions describe what the numbers in a netCDF dataset represent; e.g., temperature, pressure, wind speed, salinity, radiance, reflectivity. Besides, this attribute can be used to identify variables that contain coordinate data. Long name attribute The long_name attribute is defined to contain a long descriptive name which may, for example, be used for labeling plots. For backwards compatibility with COARDS this 13

OGC 11-165r2

attribute is optional. If a variable has no long_name attribute then an application may use, as a default the standard_name or the variable name itself [8]. 7.3.3.1 Standard names

Requirement 6 /req/CF-netCDF-1.6-core/StandardNames: Any CF-netCDF Variable shall define either a standard_name attribute or a long_name attribute. Exception, this is not mandatory only for Bounday Variable 7.3.3.2 Standard name values

Requirement 7 /req/CF-netCDF-1.6-core/StandardNameValues: A standard name shall contain no whitespace and shall be case sensitive. In addition, the set of permissible standard names is contained in the CF standard name table published at: http://cf-pcmdi.llnl.gov/documents/cf-standardnames/standard-name-table/18/cf-standard-name-table.xml

7.3.4

CF-netCDF Dimensions and Dimensional Variables

A variable may have any number of Dimensions, including zero, and the dimensions must all have different names. The dimensions of the variable define the axes of the quantity it contains. If any or all of the dimensions of a variable have the interpretations of "date or time" (T), "height or depth" (Z), "latitude" (Y), or "longitude" (X) then those dimensions must appear in the relative order T, then Z, then Y, then X. All other dimensions can be placed to the left of the spatiotemporal dimensions. 7.3.4.1 Dimensions

Requirement 8 /req/CF-netCDF-1.6-core/Dimensions: For any CF-netCDF Variable, its Dimension names shall have different names. 7.3.4.2 Dimensions shape

Requirement 9 /req/CF-netCDF-1.6-core/DimensionsShape: For a given spatialtemporal CF-netCDF Variable, its spatial-temporal Dimensions order shall appear in the relative order T, then Z, then Y, then X. In addition, any other dimension shall be placed to the left of the spatiotemporal dimensions.

14

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

7.3.5

Units attribute

CF units conventions describe what are the units of measure for the numbers in a netCDF dataset. The units attribute is required for all variables that represent dimensional quantities. The value of the units attribute must be a string that can be recognized by Unidata’s Udunits software package [9]. 7.3.5.1 Units

Requirement 10 /req/CF-netCDF-1.6-core/Units: Any dimensional CF-netCDF Variable (i.e. CF-netCDF Variable that represents dimensional quantity) shall define a units attribute. Exception, this is not mandatory only for Bounday Variable In addition, the units value may be physically equivalent (not necessarily identical) to the canonical units for the Variable. 7.3.5.2 Units value

Requirement 11 /req/CF-netCDF-1.6-core/UnitsValue: any units attribute value shall be a string that can be recognized by UNIDATA"s Udunits package [9]. In addition, exceptions are the units level, layer, and sigma_level. 7.3.5.3 Units consistency

Requirement 12 /req/CF-netCDF-1.6-core/UnitsConsistency: The units of a CFVariable shall be consistent with the units given in the standard name table (published at:). http://cf-pcmdi.llnl.gov/documents/cf-standard-names/standard-name-table/18/cfstandard-name-table.xml In addition, the units must also be consistent with a specified cell_methods attribute, if one is present.

7.3.6

CF-NetCDF Coordinate Variables and Coordinate Types

A variable's spatiotemporal dimensions are used to locate data values in time and space. This is accomplished by associating these dimensions with the relevant set of latitude, longitude, vertical, and time coordinates [8].

15

OGC 11-165r2

Variables with a single dimension whose names match the name of their dimension are called “coordinate variables”. By convention coordinate variables define the physical coordinate for that dimension (see the netCDF Users Guide [7]). For instance, the following dataset description shows a variable (i.e. xwind) that is defined on a set of spatiotemporal dimensions: latitude, longitude, vertical, and time dimension; each axis is identified by a coordinate variable. xwind(n,k,j,i) is associated with the coordinate values lon(i), lat(j), pres(k), and time(n). dimensions: lat = 18 ; lon = 36 ; pres = 15 ; time = 4 ; variables: float xwind(time,pres,lat,lon) ; xwind:long_name = "zonal wind" ; xwind:units = "m/s" ; float lon(lon) ; lon:long_name = "longitude" ; lon:units = "degrees_east" ; float lat(lat) ; lat:long_name = "latitude" ; lat:units = "degrees_north" ; float pres(pres) ; pres:long_name = "pressure" ; pres:units = "hPa" ; double time(time) ; time:long_name = "time" ; time:units = "days since 1990-1-1 0:0:0" ;

There are two methods used to identify variables that contain coordinate data. The first is to use the Coordinate Variable types, the second is the use of Auxiliary Coordinate Variables. The use of Coordinate Variables is required for all dimensions that correspond to one dimensional space or time coordinates. All of a variable's dimensions that are latitude, longitude, vertical, or time dimensions must have corresponding coordinate variables, i.e., one-dimensional variables with the same name as the dimension. Coordinate Variable is defined as a numeric data type with values that are ordered monotonically. Missing values are not allowed in coordinate variables. 7.3.6.1 Coordinate data

Requirement 13 /req/CF-netCDF-1.6-core/CoordinateData: Any Variable containing coordinate data shall be: a Coordinate Variable | an Auxiliary Coordinate Variable

16

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

7.3.6.2 Coordinate variable

Requirement 14 /req/CF-netCDF-1.6-core/CoordinateData/CoordinateVariable: A Coordinate Variable shall be defined for each Dimension that correspond to one dimensional space or time coordinates. 7.3.6.3 Coordinate variable dimension

Requirement 15 /req/CF-netCDF-1.6-core/CoordinateVariableDimension: any Coordinate Variable shall have a single Dimension whose name matches the the Variable name. 7.3.6.4 Coordinate variable values

Requirement 16 /req/CF-netCDF-1.6-core/CoordinateVariableValues: Coordinate Variable values shall be ordered monotonically. 7.3.6.5 Coordinate variable axis attribute

Requirement 17 /req/CF-netCDF-1.6-core/CoordinateVariable/AxisAttribute: for any Coordinate Variable the attribute axis shall be given one of the values X, Y, Z or T. In addition these values stand for a longitude, latitude, vertical, or time axis respectively for the CF-netCDF cordinate types: LongitudeCoordinate, LatitudeCoordinate, VerticalCoordinate, TimeCoordinate . 7.3.6.6 Coordinate variable axis attribute semantics

Requirement 18 /req/CF-netCDF-1.6core/CoordinateVariable/AxisAttributeSemantic: The values X and Y for the axis attribute shall be used to identify horizontal coordinate variables. 7.3.6.7 Coordinate variable missing values

Requirement 19 /req/CF-netCDF-1.6core/CoordinateVariable/Missing_valuesAttribute: Coordinate Variable shall not define an attribute missing_values.

7.3.7

Well-known coordinates

The CF convention gives special constraints to latitude, longitude, vertical, and time coordinates (i.e. LatitudeCoordinate, LongitudeCoordinate, VerticalCoordinate, TimeCoordinate).

17

OGC 11-165r2

7.3.7.1 Latitude Coordinate

The recommended unit of latitude is degrees_north. Also acceptable are degree_north, degree_N, degrees_N, degreeN, and degreesN. /req/CF-netCDF-1.6-core/LatitudeCoordinate: For any Latitude Coordinate the units attribute values shall be: degrees_north | degree_north | degree_N, | degrees_N | degreeN | degreesN.

Requirement 20

In addition, Coordinates of latitude with respect to a rotated pole should be given units of degrees, not degrees_north or equivalents,

Example of Latitude axis float lat(lat) ; lat:long_name = "latitude" ; lat:units = "degrees_north" ; lat:standard_name = "latitude" ;

7.3.7.2 Longitude Coordinate

The recommended unit of longitude is degrees_east. Also acceptable are degree_east, degree_E, degrees_E, degreeE, and degreesE. Requirement 21

/req/CF-netCDF-1.6-core/LongitudeCoordinate: For any Longitude Coordinate the units attribute values shall be: degrees_east | degree_east | degree_E, | degrees_E | degreeE | degreesE. In addition, Coordinates of longitude with respect to a rotated pole should be given units of degrees, not degrees_east or equivalents,

Example of Latitude axis float lon(lon) ; lon:long_name = "longitude" ; lon:units = "degrees_east" ; lon:standard_name = "longitude" ;

7.3.7.3 Vertical (Height, Depth, Dimensional) Coordinate

The direction of positive (i.e., the direction in which the coordinate values are increasing), whether up or down, cannot in all cases be inferred from the units. For this Copyright © 2013 Open Geospatial Consortium 18

OGC 11-165r2

reason the attribute positive is required. The positive attribute may have the value up or down (case insensitive). This attribute may be applied to either coordinate variables or auxillary coordinate variables that contain vertical coordinate data. Requirement 22 /req/CF-netCDF-1.6-core/VerticalCoordinatePositiveAttribute: Any Vertical Coordinate shall define the positive attribute whose values shall be: up | down.

The acceptable units for vertical (depth or height) coordinate variables are: units of pressure as listed in the file udunits.dat. For vertical axes the most commonly used of these include include bar, millibar, decibar, atmosphere (atm), pascal (Pa), and hPa. TMFALKG>D=F?L@9KDAKL=<AFL@=>AD=M<MFALK <9L !GJN=JLA;9D9P=KL@=EGKL;GEEGFDQ used of these include meter (metre, m), and kilometer (km). TGL@=JMFALKDAKLed in the file udunits.dat that may under certain circumstances reference vertical position such as units of density or temperature. 7.3.7.4 Vertical coordinate units

Requirement 23 /req/CF-netCDF-1.6-core/VerticalCoordinateUnitsAttribute: For any Vertical Coordinate the units attribute values shall be: units of pressure as listed in the file udunits.dat (e.g. bar, millibar, decibar, atmosphere (atm), pascal (Pa), and hPa) | units of length as listed in the file udunits.dat (e.g. meter, metre, m, kilometer, km) | other units listed in the file udunits.dat that may under certain circumstances reference vertical position such as units of density or temperature.

7.3.7.5 Dimensionless vertical coordinates

Dimensionless vertical coordinates are defined in the Appendix D of [8]. The standard_name attribute associates a coordinate with its definition which provides a mapping between the dimensionless coordinate values and dimensional values that can positively and uniquely indicate the location of the data. The formula_terms attribute is used to associate terms in the definitions with variables in a netCDF file; for this reason it is mandatory. Requirement 24 /req/CF-netCDF-1.6-core/DimensionlessVerticalCoordinate: Any Dimensionless Vertical Coordinate shall be defined in Appendix D of [8]. 7.3.7.6 Dimensionless vertical coordinate formula terms

Requirement 25 /req/CF-netCDF-1.6core/DimensionlessVerticalCoordinateFormula_TermsAttribute: Any

19

OGC 11-165r2

Dimensionless Vertical Coordinate shall define the formula_terms attribute.

Example of Atmosphere sigma coordinate float lev(lev) ; lev:long_name = "sigma at layer midpoints" ; lev:positive = "down" ; lev:standard_name = "atmosphere_sigma_coordinate" ; lev:formula_terms = "sigma: lev ps: PS ptop: PTOP" ;

The formula_terms attribute associates the variable lev with the term sigma, the variable PS with the term ps, and the variable PTOP with the term ptop. Thus the pressure at gridpoint (n,k,j,i) would be calculated by: p(n,k,j,i) = PTOP + lev(k)*(PS(n,j,i)-PTOP) 7.3.7.7 Time Coordinate

The units attribute takes a string value formatted as per the recommendations in the Udunits package [9]. Requirement 26 /req/CF-netCDF-1.6-core/TimeCoordinateUnitsAttribute: For any Time Coordinate the units attribute values shall be units of time as listed in the file udunits.dat (e.g. day or (d), hour or (hr, h), minute or (min), and second or (sec, s) ).

Example of Time axis: double time(time) ; time:long_name = "time" ; time:units = "days since 1990-1-1 0:0:0" ;

7.3.7.8 Calendar attribute

To calculate a new date and time given a base date, base time and a time increment one must know what calendar to use. For this purpose it is important the calendar be specified by the attribute calendar which is assigned to the time coordinate variable. The calendar attribute may be set to none in climate experiments that simulate a fixed time of year or when a non-standard calendar is being used -e.g. non-standard paleoclimate eras . 20

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Requirement 27 /req/CF-netCDF-1.6-core/TimeCoordinateCalendarAttribute: Any Time Coordinate shall define the calendar attribute In addition, the values currently defined for calendar are: gregorian or standard | proleptic_gregorian | noleap or 365_day | all_leap or 366_day | 360_day | julian | none. Example of Perpetual time axis variables: double time(time) ; time:long_name = "time" ; time:units = "days since 1-7-15 0:0:0" ; time:calendar = "none" ; data: time = 0., 1., 2., ...;

7.3.7.9 Non-standard calendars

If none of the standard calendars (e.g., calendars appropriate to a different paleoclimate era), a nonstandard calendar must be defined. The lengths of each month are explicitly defined with the month_lengths attribute of the time axis. If leap years are included, then two other attributes of the time axis should also be defined: leap_year and leap_month. Requirement 28 /req/CF-netCDF-1.6-core/TimeCoordinateNonstandardCalendar: Any Time Coordinate characterized by a nonstandard calendar shall define the month_lengths attribute to specify its calendar. In addition, the attribute value shall be for non-leap year: a vector of size 12, specifying the number of days in the months from January to December. In addition, for leap year two other attributes of the time axis shall be defined: leap_year and leap_month. 7.3.8

Auxiliary Coordinate Variable

In cases where coordinate variables are not applicable (e.g. a CF-Variable characterized by spatiotemporal dimensions that are not latitude, longitude, vertical, or time dimensions), Auxiliary Coordinate Variables are defined. The Auxiliary Coordinate Variables are identified (and linked to the CFVariable) through the coordinates attribute defined by the CF-Variable. Unlike Coordinate Variables, there is no relationship between the name of an auxiliary coordinate variable and the name(s) of its dimension(s). 21

OGC 11-165r2

Requirement 29 /req/CF-netCDF-1.6-core/AuxiliaryCoordinateVariable: An Auxiliary Coordinate Variable shall be identified by the coordinates attribute defined by a netCDF Variable. In addition, The value of the coordinates attribute is a blank separated list of the names of Auxiliary Coordinate Variables 7.3.9

Scalar Coordinate Variables

When a variable has an associated coordinate which is single-valued, that coordinate may be represented as a scalar variable. Since there is no associated dimension these scalar coordinate variables should be attached to a data variable via the coordinates attribute. Once a name is used for a scalar coordinate variable it cannot be used for a 1D coordinate variable. For this reason it is not allowed using a name for a scalar coordinate variable that matches the name of any dimension in the netCDF dataset. Example of Scalar Coordinate Variables (i.e. atime and P500 variables) [8]: dimensions: lat = 180 ; lon = 360 ; time = UNLIMITED ; variables: double atime atime:standard_name = "forecast_reference_time" ; atime:units = "hours since 1999-01-01 00:00" ; double time(time); time:standard_name = "time" ; time:units = "hours since 1999-01-01 00:00" ; double lon(lon) ; lon:long_name = "station longitude"; lon:units = "degrees_east"; double lat(lat) ; lat:long_name = "station latitude" ; lat:units = "degrees_north" ; double p500 p500:long_name = "pressure" ; p500:units = "hPa" ; p500:positive = "down" ; float height(time,lat,lon); height:long_name = "geopotential height" ; height:standard_name = "geopotential_height" ; height:units = "m" ; height:coordinates = "atime p500" ; data: time = 6., 12., 18., 24. ;

22

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

atime = 0. ; p500 = 500.

Requirement 30 /req/CF-netCDF-1.6-core/ScalarCoordinateVariable: A Scalar Coordinate Variable shall define a coordinate which is single-valued. In addition, the Scalar Coordinate Variable name shall not match the name of any dimension in the netCDF dataset.

7.3.10 Coordinate Systems Independent Latitude, Longitude, Vertical, and Time Axes When each of a variable's spatiotemporal dimensions is a latitude, longitude, vertical, or time dimension, then each axis is identified by a coordinate variable. Horizontal Coordinate Reference Systems, Grid Mappings, and Projections When the coordinate variables for an horizontal grid are not longitude and latitude, it is required that the true latitude and longitude coordinates be supplied via the coordinates attribute [8]. If in addition it is desired to describe the mapping between the given coordinate variables and the true latitude and longitude coordinates, the attribute grid_mapping may be used to supply this description. This attribute is attached to data variables so that variables with different mappings may be present in a single file. The attribute takes a string value which is the name of another variable in the file that provides the description of the mapping via a collection of attached attributes. This variable is called a grid mapping variable and is of arbitrary type since it contains no data. Its purpose is to act as a container for the attributes that define the mapping. The one attribute that all grid mapping variables must have is grid_mapping_name which takes a string value that contains the mapping's name. The other attributes that define a specific mapping depend on the value of grid_mapping_name. The valid values of grid_mapping_name along with the attributes that provide specific map parameter values are described in the Appendix F of [8]. 7.3.10.1 Horizontal CRS When the coordinate variables for an horizontal grid are longitude and latitude, a grid mapping variable with grid_mapping_name equal to latitude_longitude may be used to specify the ellipsoid and prime meridian. Requirement 31 /req/CF-netCDF-1.6-core/HorizontalCRS: For any CF Variable defined on an horizontal grid not defined on latitude and longitude dimensions, true latitude and longitude coordinates shall be supplied as Coordinate Variables and associated via the coordinates attribute.

23

OGC 11-165r2

In addition: the attribute grid_mapping may be used to supply the description of the mapping between the given grid coordinate variables and the true latitude and longitude coordinates. In addition: the grid_mapping attribute takes a string value which is the name of a Grid Mapping Variable 7.3.10.2 Grid mapping variable

Requirement 32 /req/CF-netCDF-1.6-core/GridMappingVariable: Any Grid Mapping Variable shall define the grid_mapping_name attribute..

Example of Horizontal grid data characterized by a grid mapping for rotated pole grid (i.e. T(let, rlat, rlon)) dimensions: rlon = 128 ; rlat = 64 ; lev = 18 ; variables: float T(lev,rlat,rlon) ; T:long_name = "temperature" ; T:units = "K" ; T:coordinates = "lon lat" ; T:grid_mapping = "rotated_pole" ; char rotated_pole rotated_pole:grid_mapping_name = "rotated_latitude_longitude" ; rotated_pole:grid_north_pole_latitude = 32.5 ; rotated_pole:grid_north_pole_longitude = 170. ; float rlon(rlon) ; rlon:long_name = "longitude in rotated pole grid" ; rlon:units = "degrees" ; rlon:standard_name = "grid_longitude"; float rlat(rlat) ; rlat:long_name = "latitude in rotated pole grid" ; rlat:units = "degrees" ; rlon:standard_name = "grid_latitude"; float lev(lev) ; lev:long_name = "pressure level" ; lev:units = "hPa" ; float lon(rlat,rlon) ; lon:long_name = "longitude" ; lon:units = "degrees_east" ; float lat(rlat,rlon) ; lat:long_name = "latitude" ; lat:units = "degrees_north" ;

24

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

7.3.11 Grid Cells When gridded data does not represent the point values of a field but instead represents some characteristic of the field within cells of finite "volume," a complete description of the variable should include metadata that describes the domain or extent of each cell, and the characteristic of the field that the cell values represent [8]. 7.3.12 Cell Boundary Variable The attribute bounds is used to represent cells to the appropriate coordinate variable(s). The value of bounds is the name of the variable that contains the vertices of the cell boundaries. This type of variable is referred as "boundary variable." A boundary variable will have one more dimension than its associated Coordinate or Auxiliary Coordinate Variable. The additional dimension must the most rapidly varying one, and its size is the maximum number of cell vertices. Since a boundary variable is considered to be part of a coordinate variable's metadata, it is not necessary to provide it with attributes such as long_name and units.

This approach supports both regular and non-regular grids (i.e. non-contiguous intervals defined on a given axis).

Requirement 33 /req/CF-netCDF-1.6-core/BoundaryVariable: Any Boundary Variable shall define one more dimension than its associated Coordinate or Auxiliary Coordinate Variable. In addition, The additional dimension shall be the most rapidly varying one, and its size is the maximum number of cell vertices

Example of cell boundaries on a latitude and longitude axes.

dimensions: lat = 45; lon = 57; nv = 2; // number of vertices variables: double lat(lat); lat:long_name = ”latitude”; lat:units = ”degrees_north”; lat:bounds = “lat_bnds”; double lon(lon); lon:long_name = ”longitude”; lon:units = ”degrees_east”; lon:bounds = “lon_bnds”;

25

OGC 11-165r2

double lat_bnds(lat, nv); double lon_bnds(lon, nv);

7.3.13 Cell Measure Variable

For some calculations, information is needed about the size, shape or location of the cells that cannot be deduced from the coordinates and bounds without special knowledge that a generic application cannot be expected to have [8]. To indicate such extra information, a cell_measures attribute may be defined for a variable. This is a string attribute comprising a list of blank-separated pairs of words of the form "measure: name". For the moment, "area" and "volume" are the only defined measures, but others may be supported in future. The "name" is the name of the variable containing the measure values, which we refer to as a "measure variable". The dimensions of the measure variable must be the same as or a subset of the dimensions of the variable to which they are related. In the case of area, for example, the field itself might be a function of longitude, latitude, and time, but the variable containing the area values would only include longitude and latitude dimensions. The measure variable must have a units attribute and may have other attributes such as a standard_name. 7.3.13.1 Cell measures

Requirement 34 /req/CF-netCDF-1.6-core/CellMeasures: cell_measures attribute shall be a string attribute comprising a list of blank-separated pairs of words of the form "measure: name". 7.3.13.2 Measure variable

Requirement 35 /req/CF-netCDF-1.6-core/MeasureVariable: Measure Variable dimensions shall be the same as or a subset of the dimensions of the CF Variable to which they are related.

Example of cell areas for a spherical geodesic grid.

dimensions: cell = 2562 ; // number of grid cells time = 12 ; nv = 6 ; // maximum number of cell vertices variables: float PS(time,cell) ; PS:units = "Pa" ; PS:coordinates = "lon lat" ; PS:cell_measures = "area: cell_area" ;

26

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

float lon(cell) ; lon:long_name = "longitude" ; lon:units = "degrees_east" ; lon:bounds="lon_vertices" ; float lat(cell) ; lat:long_name = "latitude" ; lat:units = "degrees_north" ; lat:bounds="lat_vertices" ; float time(time) ; time:long_name = "time" ; time:units = "days since 1979-01-01 0:0:0" ; float cell_area(cell) ; cell_area:long_name = "area of grid cell" ; cell_area:standard_name="area"; cell_area:units = "m2" float lon_vertices(cell,nv) ; float lat_vertices(cell,nv) ;

7.3.13.3 Cell Methods

To describe the characteristic of a field that is represented by cell values, the cell_methods attribute of the variable is defined. This is a string attribute comprising a list of blank-separated words of the form "name: method". Each "name: method" pair indicates that for an axis identified by name, the cell values representing the field have been determined or derived by the specified method [8]. For example, if data values have been generated by computing time means, then this could be indicated with cell_methods="t: mean", assuming here that the name of the time dimension variable is "t". In the specification of the cell_methods attribute, name can be a dimension of the variable, a scalar coordinate variable, a valid standard name, or the word "area". (See Section 7.3.4, “Cell methods when there are no coordinates” of [8] concerning the use of standard names in cell_methods). The values of method should be: point, sum, mean, maximum, minimum, mid_range, standard_deviation, variance, mode, and median. Requirement 36 /req/CF-netCDF-1.6-core/CellMethods: cell_methods attribute shall be a string attribute comprising a list of blank-separated words of the form "name: method". In addition, name can be: a Dimension of the variable (defining the attribute), a Scalar Coordinate Variable, a valid standard name, or the word "area". In addition, the value of method should be: point | sum | mean | maximum |

27

OGC 11-165r2

minimum | mid_range | standard_deviation | variance, mode | median.

Example: 12-hourly timeseries of pressure, temperature and precipitation from a number of stations, where pressure is measured instantaneously, maximum temperature for the preceding 12 hours is recorded, and precipitation is accumulated in a rain gauge [8]. dimensions: time = UNLIMITED; // (5 currently) station = 10; nv = 2; variables: float pressure(station,time)(time,station); pressure:long_name = "pressure"; pressure:units = "kPa"; pressure:cell_methods = "time: point"; float maxtemp(station,time)(time,station); maxtemp:long_name = "temperature"; maxtemp:units = "K"; maxtemp:cell_methods = "time: maximum"; float ppn(station,time)(time,station); ppn:long_name = "depth of water-equivalent precipitation"; ppn:units = "mm"; ppn:cell_methods = "time: sum"; double time(time); time:long_name = "time"; time:units = "h since 1998-4-19 6:0:0"; time:bounds = "time_bnds"; double time_bnds(time,nv); data: time = 0., 12., 24., 36., 48.; time_bnds = -12.,0., 0.,12., 12.,24., 24.,36., 36.,48.;

7.4

The Discrete Sampling Geometries extension data model

Datasets representing Discrete Sampling Geometries -such as time series, vertical profiles and trajectories- are characterized by a dimensionality that is lower than that of the space-time region that is sampled; discrete sampling geometries are typically “paths” through space-time. CF ver. 1.6 specification [16] represents Discrete Sampling Geometries datasets as Feature Collections which are a collection of Feature (i.e. instances) made up of data Elements. Figure 5 and Figure 6 shows the conventions model. CF partially inspired the O&M 2.0 Sampling Feature model [OGC 10-004r1], as well. Therefore, this extension model may be tied to O&M –see the Future Work paragraph. 28

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Figure 5 - Discrete Sampling Geometries data model: context

29

OGC 11-165r2

Figure 6 - Discrete Sampling Geometries data model: data representations

7.5

“CF-netCDF Discrete Sampling” requirements class

The “CF-netCDF Discrete Sampling” requirements class (URI: http://www.opengis.net/spec/netCDF_data-model/req/CF-netCDF-1.6-DiscreteSempling) must be applied to those datasets implementing the Discrete Sampling extension data model of CF-netCDF (see Figure 5 and Figure 6). This requiremets class is comprised of 15 requirements (from req 37 to req 51) described by the following clauses. 7.5.1

Structural adherence

Requirement 37 /req/CF-netCDF-1.6DiscreteSampling/DistrictSamplingGeometriesModel: Any data instantiating a concrete CF-netCDF DistrictSamplingGeometry dataset shall conform with the UML diagrams in Figure 5 and Figure 6.

7.5.2

Features and Feature Types

The features contained within a collection must always be of the same type; and all the collections contained in a CF file must be of the same feature type. 30

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

7.5.2.1 Feature collection

Requirement 38 /req/CF-netCDF-1.6-DiscreteSampling/FeatureCollection: CFnetCDF Feature Collection shall contain Feature instances of the same type. 7.5.2.2 Feature

Requirement 39 /req/CF-netCDF-1.6-DiscreteSampling/Feature: CF-netCDF Dataset shall contain Feature Collection variables of the same feature type. 7.5.2.3 Feature types

For the scope of this standard, Feature Types are listed in Table 2 along with their mandatory dimensions [16].

Table 2 - Mandatory dimensions for Feature Type Description of a single feature with this discrete sampling geometry featureType

point

timeSeries

trajectory

profile

Form of a data variable containing values defined on a collection of these features

a single data point (having no implied coordinate relationship to other points) data(i)

data(i,o)

x(i) y(i) t(i,o)

a series of data points along a path through space with monotonically increasing times data(i,o)

x(i,o) y(i,o) t(i,o)

an ordered set of data points along a vertical line at a fixed horizontal position and fixed time x(i) y(i) z(i,o) t(i)

a series of profile features at the same horizontal position with monotonically increasing times data(i,p,o)

trajectoryProfile

x(i) y(i) t(i)

a series of data points at the same spatial location with monotonically increasing times

data(i,o)

timeSeriesProfile

Mandatory space-time coordinates for a collection of these features

x(i) y(i) z(i,p,o) t(i,p)

a series of profile features located at points ordered along a trajectory data(i,p,o)

x(i,p) y(i,p) z(i,p,o) t(i,p)

i=instance dimension; o, p=element dimensions; x and y=horizontal dimensions; z=vertical dimension; t=temporal dimension.

31

OGC 11-165r2

Requirement 40 /req/CF-netCDF-1.6-DiscreteSampling/FeatureTypeDimension: Any CF-netCDF Feature Collection variable implementing a Feature type shall define the Dimensions specified in Table 2.

7.5.3

Collections, instances and elements

Referring to Table 2, the Instance Dimension (dimension with subscript i) identifies a particular feature within a collection of features. Instance Variable is a one-dimensional variable (defined in a Discrete Geometry CF Dataset), which has only this dimension (such as x(i) y(i) and z(i) for a TimeSeries. Instance Variables provide the metadata that differentiates individual features [16]. Feature data values are defined as Elements. The Element Dimensions (dimensions with subscripts o and p) distinguish the data elements that compose a single Feature. For example in a collection of TimeSeries features, each time series instance, i, has data values at various times, o. In a collection of Profile features, the subscript, o, provides the index position along the vertical axis of each profile instance [16] 7.5.4

Representations of collections of features in data variables

The individual Features within a Collection need not necessarily contain the same number of Elements. For example, observed in situ time series will commonly contain unique numbers of time points, reflecting different deployment dates of the instruments. Other data sources, such as the output of numerical models, may commonly generate features of identical size. Four types of representation are possible [16], see Figure 5: two Multidimensional Array representations, in which each Feature instance is allocated the identical amount of storage space. In these representations the Instance Dimension and the Element Dimension(s) are distinct CF Coordinate Axes; two Ragged Array representations, in which each Feature is provided with the minimum amount of space that it requires. In these representations the instances of the individual Features are stacked sequentially along the same array dimension as the Elements of the Features; this combined dimension is defined as Sample Dimension.

32

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

7.5.4.1 Multidimensional array

Requirement 41 /req/CF-netCDF-1.6-DiscreteSampling/MultidimensionalArray: Any Multidimensional Array Feature Collection shall have both an Instance Dimension and an Element Dimension. 7.5.4.2 Ragged array

Requirement 42 /req/CF-netCDF-1.6-DiscreteSampling/RaggedArray: Any Ragged Array Feature Collection shall have a Sample Dimension. In addition, the Sample Dimension is occupied by both an Instance Dimension and an Element Dimension.

7.5.5

Orthogonal multidimensional array representation

The Orthogonal Multidimensional Array representation is the simplest representation; it can be used if each Feature instance in the Collection has identical Coordinates along the Element Dimension of the Features. Requirement 43 /req/CF-netCDF-1.6DiscreteSampling/OrthogonalMultidimensionalArray: Any Feature instance of an Orthogonal Multidimensional Array Feature Collection shall have identical Coordinates along the Element Dimension.

7.5.6

Incomplete multidimensional array representation

The Incomplete Multidimensional Array representation can used if the features within a collection do not all have the same number of Elements, but sufficient storage space is available to allocate the number of Elements required by the longest Feature to all Features. That is, Features that are shorter than the longest Feature must be padded with missing values to bring all instances to the same storage size [16]. 7.5.7

Contiguous ragged array representation

The Contiguous Ragged Array representation can be used only if the size of each Feature is known at the time that it is created [16]. In this representation, the Dataset contains a Count Variable, which must be of type integer and must have the Instance Dimension as its sole dimension. The Count Variable contains the number of Elements that each Feature has. 33

OGC 11-165r2

This representation and its Count Variable are identifiable by the presence of an attribute, sample_dimension, found on the Count Variable, which names the Sample Dimension being counted. 7.5.7.1 Contiguous Ragged array

Requirement 44 /req/CF-netCDF-1.6-DiscreteSampling/ContiguousRaggedArray: Any Contiguous Ragged Array dataset shall have a Count Variable. 7.5.7.2 Contiguous ragged array sample dimension

Requirement 45 /req/CF-netCDF-1.6DiscreteSampling/ContiguousRaggedArraySampleDimension: Any Count Variable shall define the attribute sample_dimension. In addition, the attribute sample_dimension names the Sample Dimension being counted.

7.5.8

Indexed ragged array representation

The Indexed Ragged Array representation stores the features interleaved along the Sample Dimension in the Feature Collection data variable. The canonical use case for this representation is the storage of real-time data streams that contain reports from many sources. In this representation, the Dataset contains an Index Variable, which must be of type integer, and must have the Sample Dimension as its single dimension. The Index Variable contains the zero-based index of the Feature to which each Element belongs. This representation and its Index Variable are identifiable by the presence of an attribute, instance_dimension which names the dimension of the Instance Variables (i.e. the Instance Dimensions). 7.5.8.1 Indexed ragged array

Requirement 46 /req/CF-netCDF-1.6-DiscreteSampling/IndexedRaggedArray: Any Indexed Ragged Array dataset shall have an Index Variable. In addition, the Index Variable must be of type integer. In addition, the Index Variable must have the Sample Dimension as its single dimension.

34

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

7.5.8.2 Indexed ragged array instance dimension

Requirement 47 /req/CF-netCDF-1.6DiscreteSampling/IndexedRaggedArrayInstanceDimension: Any Index Variable shall define the attribute instance_dimension. In addition, the attribute instance_dimension names the Instance Dimension characterizing the Instance Variables of the dataset

7.5.9

FeatureType attribute

The global attribute, feature_type, is required for all Discrete Sampling Geometry representations. Requirement 48 /req/CF-netCDF-1.6-DiscreteSampling/Feature_type: Any Ragged Array and Multidimensional Array dataset shall define an attribute feature_type. In addition, the attribute feature_type must be: point | timeSeries | trajectory | profile | timeSeriesProfile | trajectoryProfile.

7.5.10 Coordinates and metadata

Every Element of every Feature must be unambiguously associated with its space and time coordinates and with the feature that contains it. The coordinates attribute must be attached to every Feature Collection data variable to indicate the spatiotemporal coordinate variables that are needed to geo-locate the data. 7.5.10.1 Feature collection coordinates

Requirement 49 /req/CF-netCDF/FeatureCollectionCoordinates: Any Feature Collection data variable shall define an attribute coordinates. 7.5.10.2 Cf role

The cf_role attribute of Instance Variable identifies the roles of variables that identify features in discrete sampling geometries. Requirement 50 /req/CF-netCDF-1.6-DiscreteSampling/Cf_role: The attribute cf_role must be: timeseries_id | profile_id | trajectory_id.

35

OGC 11-165r2

7.5.11 Missing Data

Auxiliary Coordinate Variables (spatial and time), characterizing Feature Collection, must contain missing values to indicate a void in data storage in the file but must not have missing data for any other reason.

Requirement 51 /req/CF-netCDF-1.6-DiscreteSampling/MissingData: Auxiliary Coordinate Variables characterizing Feature Collection shall define the attribute missing_values.

7.5.12 Examples

Annotated examples of Discrete Sampling Geometries are in Appendix A9 of [16].

36

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

file:///C:/Nativi/Activity/Standardization Initiatives/WCS-netCDF-CF/Grid mappings description:http:/cf-pcmdi.llnl.gov/documents/cf-conventions/1.1/ch05s06.html 8

CF-netCDF Mapping to ISO Coverage Model

Having defined the CF-netCDF extension data model (see Figure 2), it is essential to specify its mapping to the ISO coverage model. 8.1

ISO Coverages and Grid Coverages

According to ISO 19123 [4], a coverage is a feature (e.g. a Feature Collection instance) that acts as a function to return values from its range for any direct position within its spatial, temporal or spatiotemporal domain. The spatiotemporal domain of a discrete coverage may be a regular or semi-regular tessellation of the extent of the coverage. Point sets (multi-points coverages) and other sets of non-conterminous geometric objects do not form tessellations. Grid coverages employ a systematic tessellation of the domain. The principal advantage of such tessellations is that they support a sequential enumeration of the elements of the domain, which makes data storage and access more efficient. The tessellation may represent how the data were acquired or how they were computed in a model. The domain of a grid coverage is a set of grid points [4]. 8.2

Dimensionality Challenges

To explicitly map the CF-netCDF array data model (e.g. meteo-ocean multi-dimensional observation and physical model outputs) to the ISO Coverage data model, there is a need to address structural and semantics differences, applying the appropriate constraints and, hence, performing a mediation process. Points to consider include: CF-netCDF data model supports datasets characterized by multiple domains (e.g. more than one coordinate system is defined for a dataset), whereas an ISO coverage is characterized by a single coordinate system. CF-netCDF data model supports datasets characterized by arbitrary multidimensional domains (e.g. collections of spatiotemporal coverages), whereas an ISO coverage domain is either 2-D (space), 3-D (2D + vertical dimension or 2D + time), 4-D (2D + vertical dimension + time). Most commonly, the domain axes of a CF-netCDF dataset coincide with reference system axes. However, CF-netCDF allows arbitrary domain shapes, i.e. domain axes ordering. Thus, it is possible to have a variable v1 defined on a <x, y, t, z> domain and a variable v2 defined on a <z, x, t, y> domain. Since there is a fixed enumeration of allowed compound CRSs in ISO coverages, the transformation of such generalized domain coordinates to ISO CRS coordinates may not be an affine transformation. In other words, mapping CF-netCDF 37

OGC 11-165r2

domains to ISO (geo)rectified domains may require axes reshaping and reordering.

In this document, a two steps approach is adopted to address these mapping issues: a first step consists in defining appropriate profiles for both data models. The second step deals with defining a set of mapping constraint rules, here expressed as conformance requirements. 8.3

CF-netCDF model mapping to ISO Coverage types

Clearly, CF-netCDF datasets encode discrete observations and measurements –i.e. discrete coverages. CF-netCDF datasets (array oriented datasets) are mainly gridded and multi-point data. Thus, this standard will deal with multi-dimensional gridded point and multi-point data – i.e. gridded point coverages and multi-point coverages. 8.3.1

CF-netCDF and Continuous coverages

In most cases, a continuous coverage is also associated with a discrete coverage that provides a set of control values to be used as a basis for evaluating the continuous coverage. Evaluation of the continuous coverage at other direct positions is done by interpolating between the geometry value pairs of the control set. This often depends upon additional geometric objects constructed from those in the control set; these additional objects are typically of higher topological dimension than the control objects. In ISO 19123, such objects are called “geometry value objects”. A geometry value object is a geometric object associated with a set of geometry value pairs that provide the control for constructing the geometric object and for evaluating the coverage at direct positions within the geometric object. A common example of geometry value object is represented by quadrilateral grid cell whose vertices are represented by four grid points (i.e. the set of geometry value pairs). In the netCDF domain, the continuous quadrilateral grid coverage type is associated to a discrete grid point coverage type by sharing the same geometry grid and matrix values; the two coverage subclasses share the GridValueMatrix object and the derived GridPointValuePair objects. The real difference consists in the realization of the locate() operation, which is inherited from the Coverage super-type. Therefore, “the principal use of discrete point coverages is to provide a basis for continuous coverage functions, where the evaluation of the continuous coverage function is accomplished by interpolation between the points of the discrete point coverage”.

The same approach is applied in the case of a multi-point coverage (Discrete Point Coverage in ISO 19123). The principal use of discrete point coverages is to provide a basis for continuous coverage functions, where the evaluation of the continuous coverage 38

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

function is accomplished by interpolation between the points of the discrete point coverage. Most interpolation algorithms depend upon a structured pattern of spatial relationships between the points. This requires either that the points in the spatial domain of the discrete point coverage be arranged in a regular way, or that the spatial domain of the continuous coverage be partitioned in a regular way in relation to the points of the discrete point coverage. Grid coverages employ the first method; Thiessen polygon and TIN coverages employ the second [4].

In the case of netCDF data, the interpolation methods specified by the ISO continuous coverage classes do not apply in general. In fact, in most cases, any scientifically realistic interpolation depends on the physics of the situation as well as the geometry. Hence, any realistic interpolation is actually data dependent. Therefore the netCDF data types don’t implement the evaluation operation using interpolation methods. They are mapped to the ISO discrete coverages because they actually represent sampled points in a continuous space where the intermediate values depend on the solution to physics-based equations that depend on the values of the range data. 8.4

“CF-netCDF Mapping onto ISO 19123” requirements class

The “CF-netCDF Mapping onto ISO 19123” requirements class (URI: http://www.opengis.net/spec/netCDF_data-model/req/CF-netCDF-1.6-ISOMapping) must be applied to map the CF-netCDF datasets to the ISO Coverage model (see Figure 7, Figure 8 and Figure 9Figure 5). This requiremets class is comprised of 16 requirements (from req 52 to req 67) described by the following clauses. 8.4.1

Coverage types

The high-level abstract mapping model is depicted in Figure 7.

39

OGC 11-165r2

Figure 7. CF-netCDF dataset mapping to ISO coverage types

As far as the CF-netCDF and ISO19123 models are concerned, the following profiling constraints are introduced.

For the present standard, any group of CF-netCDF data variables that share the same set of spatial/temporal coordinate variables (e.g. Feature Collection objects) can be mapped to a single discrete coverage, ISO19123:CV_DiscreteCoverage. For the present standard, the following discrete coverage sub-types are considered: ISO19123:CV_DiscreteGridPointCoverage and ISO19123:CV_DiscretePointCoverage. 8.4.1.1 Discrete grid point coverage

Requirement 52 /req/CF-netCDF-1.6-ISOMapping/discreteGridPointCoverage: Any group of CF-netCDF data variables that share the same set of spatial/temporal coordinate variables shall realize ISO19123:CV_DiscreteCoverage sub-types: ISO19123:CV_DiscreteGridPointCoverage or ISO19123:CV_DiscretePointCoverage. In addition, the ISO19123:CV_CoverageFunction shall not define any interpolation method.

Figure 8 depicts the ISO19123:CV_DiscretePointCoverage data model considered

for this standard.

40

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Figure 8. ISO19123:CV_DiscretePointCoverage data model

Figure 9 depicts the ISO19123:CV_DiscreteGridPointCoverage data model

considered for this standard.

41

OGC 11-165r2

Figure 9. ISO19123:CV_DiscreteGridPointCoverage data model

8.4.2

Mapping rules

The abstract mapping between CF-netCDF data and ISO19123:CV_DiscreteCoverage is showed in Figure 10.

42

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Figure 10. CF-netCDF dataset mapping ISO19123:CV_DiscreteCoverage

8.4.3

Coordinate System

A set of spatial/temporal Coordinate Variables realizes the domain of the coverage, whose geometry is represented by either a single grid (ISO19123:CV_Grid) or subtype of it. 8.4.3.1 Coverage domain

Requirement 53 /req/CF-netCDF-1.6-ISOMapping/CoverageDomain: the set of spatial/temporal Coordinate Variables, shared by CF-netCDF data Variables, shall realize either an ISO19123:CV_DiscreteGridPointCoverage.CV_GridValueMatrix. CV_GridPoint.gridCoord or ISO19123:CV_PointValuePair.geometry.

NOTE 43

OGC 11-165r2

The domain of each coverage may be described by the extent of the related coordinate axis variables. 8.4.3.2 Dataset CS

CF-netCDF dataset Coordinate System is the composition of the set of coordinate variables / auxiliary coordinate variables commonly shared by CF-netCDF data variables. The coordinate variables / auxiliary coordinate variables realize the coordinate axes. CF Auxiliary Coordinate Variable are used for encoding non standard spatial/temporal dimension (e.g. non monotonically crescent axes).

Requirement 54 /req/CF-netCDF-1.6-ISOMapping/DatasetCS: the CF-netCDF Coordinate System type, which is comprised of a set of spatial/temporal coordinate variables shared by CF-netCDF data variables, shall realize ISO19123:CV_DiscreteCoverage.SC_CRS.SC_CoordinateSystem or a subtype of it (i.e. ISO19123:CV_DiscreteGridPointCoverage.SC_CRS.SC_CoordinateSys tem or ISO19123:CV_DiscretePointCoverage.SC_CRS.SC_CoordinateSystem). Additionally, the spatial/temporal Coordinate Variables and its subtypes (i.e. Vertical Coordinate, Latitude Coordinate, Longitude Coordinate, Time Coordinate elements), and the Auxiliary Coordinate Variables shall realize the related set of SC_CRS.SC_CoordinateSystem.SC_CoordinateSystemAxis 8.4.3.3 Dataset CRS

The grid mapping and/or projection information maps to the ISO1911:CRS and the associated ISO1911:CoordinateSystem (e.g. the units of the coordinate system). Requirement 55 /req/CF-netCDF-1.6-ISOMapping/DatasetCRS: the Grid Mapping Variable projection information characterizing a set of spatial/temporal coordinate variables, shared by CF-netCDF data variables, shall realize ISO19123:CV_DiscreteCoverage.SC_CRS.SC_CoordinateSystem.type or a subtype of it.

NOTES To model “engineering” gridded datasets –i.e. datasets which are referred to a local defined coordinate system- the CRS is an application defined (i.e. engineering) CRS, characterized by an “engineering” datum (see ISO 19111). The associated Coordinate System has the origin and offset attributes coincident with the data grid Cartesian system origin and axes versors (i.e. unit vectors). 44

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

A Scalar Coordinate Variable is a coordinate variable that contains coordinate data. Functionally, it is equivalent to either a size one coordinate variable or a size one auxiliary coordinate variable 8.4.3.4 Coverage function 8.4.3.5 Dataset range

The data variables in a CF-netCDF dataset make up a discrete coverage range with each variable being a separate range field. Requirement 56 /req/CF-netCDF-1.6-ISOMapping/DatasetRange: the CF-netCDF data Variables sharing the common set of spatial/temporal Coordinate Variables, shall realize one of the following objects: (a) ISO19123:CV_DiscreteGridPointCoverage.CV_GridValuesMatrix. values or a subtype of it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValuePair.value Additionally, the CF Variable data values generate the CV_GeometryValuePair record value(s): (a) CV_GridValueMatrix.values.record entry (i.e. AttributeName, Any); (b) CV_PointValuePair.value.record entry (i.e. AttributeName, Any).

NOTE The attribute values: Sequence <Record> shall be a sequence of N feature attribute value records where N is the number of grid points (or multi-point instances) within the section of the grid (or multi-point domain) specified by extent .

8.4.3.6 Dataset range type

The discrete coverage range is a list of records with an attribute for every related CFnetCDF variable sharing a common set of spatial/temporal coordinate variables. Requirement 57 /req/CF-netCDF-1.6-ISOMapping/DatasetRangeType: the CFnetCDF data Variables sharing a common set of spatial/temporal coordinate variables/auxiliary coordinate variables, shall realize one of the following objects: (a) CV_DiscreteGridPointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName) or a subtype of it; (b) CV_DiscretePointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName) or a subtype of it. 8.4.3.7 Mapping Auxiliary Coordinate Variables to range values CF-netCDF dataset may be characterized by arbitrary multi-dimensional domains, whereas an ISO coverage domain is either 2-D (space), 3-D (2D + vertical dimension or 2D + time), 4-D (2D + vertical dimension + time). Thus, the extra dimensions (called parametric dimensions and described by the CF Auxiliary Coordinate Variable entity) must be treated as variables realizing the coverage data range (i.e. CF_Variable).

45

OGC 11-165r2

Requirement 58 /req/CF-netCDF-1.6-ISOMapping/DatasetParametricRangeValues: the CF-netCDF Auxiliary Coordinate Variables (part of the dataset shared coordinate system) which are not space or time dimension, shall realize one of the following objects: (a) ISO19123:CV_DiscreteGridPointCoverage.CV_GridValuesMatrix. values or a subtype of it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValuePair.value 8.4.3.8 Mapping Auxiliary Coordinate Variables to range type

Requirement 59 /req/CF-netCDF-1.6-ISOMapping/DatasetParametricRangeType: the CF-netCDF Auxiliary Coordinate Variables (part of the dataset shared coordinate system) which are not space or time dimension, shall realize one of the following objects: (a) CV_DiscreteGridPointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName) or a subtype of it; (b) CV_DiscretePointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName). 8.4.3.9 Mapping measure variables to range values A CF-netCDF cell Measure Variable may be associated with a variable to indicate extra information about the spatial properties of a variable's grid cells (or point cells). Measure Variable data values must be treated as a range dimension of coverage data.

Requirement 60 /req/CF-netCDF-1.6ISOMapping/MeasureVariableMapping/RangeValues: any CF-netCDF Measure Variable (characterising a CF Variable) shall realize one of the following objects: (a) ISO19123:CV_DiscreteGridPointCoverage.CV_GridValuesMatrix. values or a subtype of it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValuePair.value 8.4.3.10 Mapping measure variables to range type

Requirement 61 /req/CF-netCDF-1.6ISOMapping/MeasureVariableMapping/RangeType: any CF-netCDF Measure Variable (characterising a CF Variable) shall realize one of the following objects: (a) CV_DiscreteGridPointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName) or a subtype of it; (b) CV_DiscretePointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName).

NOTE: 46

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

A Scalar Coordinate Variable is a coordinate variable that contains coordinate data. Functionally, it is equivalent to either a size one coordinate variable or a size one auxiliary coordinate variable 8.4.4

CF Discrete Sampling Geometries

In keeping the previous mapping requirements, Figure 11 depicts the CF Discrete Sampling Geometries mapping to ISO19123:DiscreteCoverage.

Figure 11 - CF-netCDF Discrete Sampling Geometries mapping ISO19123: DiscreteCoverage

CF RaggedArray and MultidimensionalArray entities are CF dataset subtypes; hence, they generate one or more ISO19123:CV_DiscreteCoverage instances. 8.4.4.1 Ragged array

Requirement 62 /req/CF-netCDF-1.6ISOMapping/DiscreteSamplingGeometriesMapping/RaggedArray: Any CFnetCDF Ragged Array shall realize ISO19123:CV_DiscreteCoverage sub-

47

OGC 11-165r2

type: ISO19123:CV_DiscreteGridPointCoverage In addition, the ISO19123:CV_CoverageFunction shall not define any interpolation method. 8.4.4.2 MultidimensionalArray

Requirement 63 /req/CF-netCDF-1.6ISOMapping/DiscreteSamplingGeometriesMapping/MultidimensionalArray: Any CF-netCDF Multidimensional Array shall realize ISO19123:CV_DiscreteCoverage sub-types: ISO19123:CV_DiscreteGridPointCoverage or ISO19123:CV_DiscretePointCoverage. In addition, the ISO19123:CV_CoverageFunction shall not define any interpolation method. 8.4.5

Feature collections

A CF-netCDF Feature Collection is a CF Variable; hence, it generates an ISO19123:CV_CoverageFunction instance. For CF Multidimensional Array Feature Collection, each feature instance is allocated the identical amount of storage space. Both orthogonal multidimensional array and incomplete multidimensional array representations may encode feature instances in the collection which have identical coordinates along the element axis of the features. Therefore, it is possible to map those arrays on either ISO19123:CV_DiscreteGridPointCoverage.CV_GridValuesMatrix or ISO19123:CV_DiscretePointCoverage.CV_PointValuePair.

Ragged Array Feature Collection comprises features which are not characterized by identical coordinates along the element axis of the features. In these representations the instances of the individual features are stacked sequentially along the same array dimension as the elements of the features. Hence, they can be mapped (in an unambiguous way) only to

ISO19123:CV_DiscretePointCoverage.CV_PointValuePair

8.4.5.1 Mapping multidimensional array feature collection to range values

Requirement 64 /req/CF-netCDF-1.6ISOMapping/MultidimensionalArrayFeatureCollectionMapping/RangeValues: Any CF-netCDF Multidimensional Array Feature Collection shall realize one of the following objects: (a) ISO19123:CV_DiscreteGridPointCoverage.CV_GridValuesMatrix. values or a subtype of it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValuePair.value

48

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

8.4.5.2 Mapping multidimensional array feature collection to range type

Requirement 65 /req/CF-netCDF-1.6ISOMapping/MultidimensionalArrayFeatureCollectionMapping/RangeType: Any CF-netCDF Multidimensional Array Feature Collection shall realize one of the following objects: (a) CV_DiscreteGridPointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName) or a subtype of it; (b) CV_DiscretePointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName) or a subtype of it. 8.4.5.3 Mapping ragged array feature collection to rangevalues

Requirement 66 /req/CF-netCDF-1.6ISOMapping/RaggedArrayFeatureCollectionMapping/RangeValues: Any CFnetCDF Multidimensional Array Feature Collection shall realize an ISO19123:CV_DiscretePointCoverage.CV_PointValuePair.value or a subtype of it. 8.4.5.4 Mapping ragged array feature collection to range type

Requirement 67 /req/CF-netCDF-1.6ISOMapping/RaggedArrayFeatureCollectionMapping/RangeType: Any CFnetCDF Ragged Array Feature Collection shall realize an ISO10123:CV_DiscretePointCoverage.RangeType.AttributesType (i.e. AttributeName, TypeName) or a subtype of it.

8.4.6

Mapping rules Summary

A summary of the mapping rules are reported in the Table 3, Table 4 and Table 5.

Table 3. Summary of relationships between CF-netCDF3 and CV_DiscreteGridPointCoverage models: main packages

CF-netCDF concept

ISO Discrete Coverage concept

Mapping Cardinality (obligation)

Description and constraints

Rule #

CF Dataset

CV_DiscreteGridPo intCoverage

1 to 0..n

Grouping the CF_Variables defined in a dataset by their CoordinateSystem, a CV_DiscreteCoverage may be defined for each group. The CV_DiscreteCoverage is realized as either a CV_DiscreteGridPointCoverag e or a

0

or CV_DiscretePointC overage

49

OGC 11-165r2

CV_DiscretePointCoverage. The association of groups and coverages may not be one-to-one, since the concept of coordinate system in CF-netCDF is wider than CRS (see table Table 5). Hence, some of the obtained coverages may be further grouped together. It is possible that a CoordinateSystem entity does not contain any axes allowed in coverage CRS (i.e. only parametric dimension axes); the associated variables would then originate no CV_DiscreteCoverage instance. CF Variable

CV_CoverageFuncti on

1 to 1

and sub-types related to a CoordinateSy stem Coordinate System

The CF Variable belongs to a group of variables which is mappable to ISO CV_DiscreteCoverage

---

See Table 4

CS_CRS

1 to 1

The CF-netCDF CoordinateSystem belongs to a group of variables which is mappable to ISO CV_DiscreteCoverage

---

See Table 5 Discrete Sampling Geometry

CV_DiscreteGridPo intCoverage

1 to 0..n

A CF Discrete Sampling Geometry is a type of CF Dataset

13

1 to 1

A CF Feature Collection is a type of CF Variable

---

or CV_DiscretePointC overage

Feature Collection

CV_CoverageFuncti on

See Table 6

8.4.6.1 Coverage Function Table 4. Summary of relationship between CF-netCDF and CV_DiscreteCoverage models: Coverage Function package

50

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

CF-netCDF concept

ISO Discrete Coverage concept

Mapping Cardinality

Description and constraints

Rule #

Dataset CF Variable

ISO19123:CV_DiscreteGri dPointCoverage.CV_GridV aluesMatrix.values

1 to 1

The set of CF Variables comprising the group that shares a common Coordinate System (whose axes are the set of spatial/temporal CF Coordinate Variables/Auxiliary Coordinate Variables).

7

or ISO19123:CV_DiscretePoi ntCoverage.CV_PointValu ePair.value

Dataset CF Variable

CV_DiscreteGridPointCov erage.RangeType.Attribu tesType entry (i.e. AttributeName, TypeName)

The CF Variable data values generate the range set record values, as either: CV_GridValueMatrix.values .record entry (i.e. AttributeName, Any) or CV_DiscretePointCoverage. CV_PointValuePair.value entry (i.e. AttributeName, Any) 1 to 1

or ISO19123:CV_DiscretePoi ntCoverage. RangeType.AttributesTyp e entry (i.e. AttributeName, TypeName)

Dataset Auxiliary Coordinate Variable

ISO19123:CV_DiscreteGri dPointCoverage.CV_GridV aluesMatrix.values or ISO19123:CV_DiscretePoi ntCoverage.CV_PointValu ePair.value

The range of each CV_DiscreteGridPointCover age is a list of records with an attribute for every related CF-netCDF Variable and for every CF CoordinateVariable/Auxiliary Coordinate Variable (defined by the shared Coordinate System).

8

Thus, the CF Variable properties (i.e. name and type) realize the CV_DiscreteGridPointCover age.RangeType.AttributesT ype entry (i.e. AttributeName, TypeName) or the analogous for multi-point coverages 1 to 1

A CF-netCDF Auxiliary Coordinate Variable may be used to realize a non spatial/temporal dimension (e.g. pressure, density, salinity). That is not allowed in a coverage CRS (i.e. parametric dimension axes). Thus, the auxiliary coordinate variable does not behave like a

51

9

OGC 11-165r2

discrete coverage domain axis; on the contrary, it behaves like a discrete coverage range axis Dataset Auxiliary Coordinate Variable

CV_DiscreteGridPointCov erage.RangeType.Attribu tesType entry (i.e. AttributeName, TypeName)

1 to 1

or

ISO19123:CV_DiscreteGri dPointCoverage.CV_GridV aluesMatrix.values

1 to 1

ISO19123:CV_DiscretePoi ntCoverage.CV_PointValu ePair.value

CV_DiscreteGridPointCov erage.RangeType.Attribu tesType entry (i.e. AttributeName, TypeName) or ISO19123:CV_DiscretePoi ntCoverage. RangeType.AttributesTyp e entry (i.e. AttributeName, TypeName)

A CF-netCDF cell Measure Variable is associated with a variable to indicate extra

A CF-netCDF cell Measure Variable must be treated as a range variable of the coverage. 1 to 1

A CF-netCDF cell Measure Variable is associated with a variable to indicate extra

information about the spatial properties of a variable's grid cells (or point cells).

A CF-netCDF cell Measure Variable must be treated as a range variable of the coverage

Note: A Scalar Coordinate Variable is a coordinate variable that contains coordinate data. Functionally, it is equivalent to either a size one coordinate variable or a size one auxiliary coordinate variable

52

11

information about the spatial properties of a variable's grid cells (or point cells).

or

Dataset MeasureVariable

10

That is not allowed in a coverage CRS (i.e. parametric dimension axes). Thus, the auxiliary coordinate variable does not behave like a discrete coverage domain axis; on the contrary, it behaves like a discrete coverage range axis.

ISO19123:CV_DiscretePoi ntCoverage. RangeType.AttributesTyp e entry (i.e. AttributeName, TypeName) Dataset MeasureVariable

A CF-netCDF Auxiliary Coordinate Variable may be used to realize a non spatial/temporal dimension (e.g. pressure, density, salinity).

Copyright © 2013 Open Geospatial Consortium

12

OGC 11-165r2

8.4.6.2 Coverage Coordinate System and Grid Geometry Table 5. Summary of relationship between the CF-netCDF and the DiscreteCoverage profile models: Coordinate System package

53

OGC 11-165r2

CF-netCDF concept

ISO Discrete Coverage concept

Mapping Cardinality

Description and constraints

Rule #

Coordinate System

CV_DiscreteGridPoint Coverage.SC_CRS.SC_C oordinateSystem

1 to 1

Parametric coordinate systems are allowed in CF-netCDF but not in ISO CRS1. A coordinate system is of type parametric if a physical or material property is used as a dimension [21]; valuable examples are pressure in meteorology and density in oceanography.

1

or CV_DiscretePointCove rage.SC_CRS.SC_Coord inateSystem

It is possible that a CF-netCDF Coordinate System entity does not contain any axes allowed in ISO coverage CRS (i.e. only parametric dimension axes); Only spatial and temporal coordinates in a CF-netCDF Coordinate System become part of a coverage CRS, whereas parametric dimension axes are mapped to compound range set components. Spatial/temporal CF Coordinate Variable or subtypes (Latitude Coordinate, Longitude Coordinate, Vertical Coordinate, Time Coordinate)

ISO19123:CV_Discrete GridPointCoverage.CV _GridValueMatrix.CV_ GridPoint.gridCoord or sub-types (e.g. ISO19123:CV_GridValu eMatrix)

1 to 1

The set of monotonically crescent spatial/temporal coordinate variables (shared by a group of CF Variables) maps to the discrete coverage domain set, whose geometry is represented by either a single grid ISO19123:CV_Grid or

2

A CF-netCDF spatial/temporal Coordinate Variable shared by a group of CF

3

a set of points, GM_Points

or

ISO19123:CV_Discre tePointCoverage.CV _PointValuePair.ge ometry.GM_Point Spatial/temporal CF CoordinateVariable

CV_DiscreteGridPoint Coverage.SC_CRS.SC_C oordinateSystem.SC_C

1 to 1

1 Future extension to ISO 19111 (see ISO/CD19111-2) may permit parametric CRS, that would accommodate the

pressure axis.

54

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

or subtypes (Latitude Coordinate, Longitude Coordinate, Vertical Coordinate, Time Coordinate)

oordinateSystemAxis

CF Auxiliary Coordinate Variable

ISO19123:CV_Discrete GridPointCoverage.CV _GridValueMatrix.CV_ GridPoint.gridCoord or sub-types (e.g. ISO19123:CV_GridValu eMatrix)

Variables.

or CV_DiscretePointCove rage.SC_CRS.SC_Coord inateSystem. SC_CoordinateSystemA xis 1 to 1

or

CV_DiscreteGridPoint Coverage.SC_CRS.SC_C oordinateSystem.SC_C oordinateSystemAxis

a set of points, GM_Points

1 to 1

or CV_DiscretePointCove rage.SC_CRS.SC_Coord inateSystem. SC_CoordinateSystemA xis Grid Mapping Variable

ISO19123:CV_Discrete GridPointCoverage.SC _CRS.SC_CoordinateSy stem.type

4

Coordinate data values map to the discrete coverage domain set, whose geometry is represented by either a single grid ISO19123:CV_Grid or

ISO19123:CV_Discre tePointCoverage.CV _PointValuePair.ge ometry.GM_Point CF Auxiliary Coordinate Variable

A CF-netCDF Auxiliary Coordinate Variable realizes a "non-standard" or non monotonically crescent spatial/temporal dimension, which is shared by a group of CF Variables (e.g. CF Feature Collections).

1 to 1

A CF-netCDF Auxiliary Coordinate Variable realizes a "non-standard" or non monotonically crescent spatial/temporal dimension, which is shared by a group of CF Variables (e.g. CF Feature Collections).

CF Grid Mapping Variable is used as a container for attributes that define a specific grid mapping.

8.4.6.3 CF Discrete Sampling Geometries Table 6. Summary of relationship between the CF-netCDF and the DiscreteCoverage profile models: Discrete Sampling Geometries package

55

5

6

OGC 11-165r2

CF-netCDF concept

ISO Discrete Coverage concept

Mapping Cardinality

Description and constraints

Rule #

CF Multidimensional Array Feature Collection

ISO19123:CV_Discrete GridPointCoverage.CV _GridValuesMatrix.va lues

1 to 1

A CF-netCDF Multidimensional Array Feature Collection is a CF Variable whose feature instances are defined on a set of common element axes

14

1 to 1

A CF-netCDF Multidimensional Array Feature Collection is a CF Variable whose feature instances have common dimensions along the set of common element axes.

15

or ISO19123:CV_Discrete PointCoverage.CV_Poi ntValuePair.value CF Multidimensional Array Feature Collection

CV_DiscreteGridPoint Coverage.RangeType.A ttributesType entry (i.e. AttributeName, TypeName) or ISO19123:CV_Discrete PointCoverage. RangeType.Attributes Type entry (i.e. AttributeName, TypeName)

CF Ragged Array Feature Collection

ISO19123:CV_Discrete PointCoverage.CV_Poi ntValuePair.value

1 to 1

A CF-netCDF Multidimensional Array Feature Collection is a CF Variable whose feature instances have different dimensions along the common set of element axes.

16

CF Ragged Array Feature Collection

ISO19123:CV_Discrete PointCoverage. RangeType.Attributes Type entry (i.e. AttributeName, TypeName)

1 to 1

A CF-netCDF Multidimensional Array Feature Collection is a CF Variable whose feature instances have different dimensions along the common set of element axes.

17

56

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

9

Bibliography

[1]

OGC 10-090, NetCDF Core, version 1.0

[2]

OGC 10-091, CF-netCDF3 Data Model Extension standard

[3]

OGC 10-92, NetCDF Binary Encoding Extension Standard: NetCDF Classic and 64-bit Offset Format, version 1.0.0.

[4]

ISO/TC 211, IS 19123:2005 Geographic information — Schema for coverage geometry and functions, ISO/IS 19123:2005.

[5]

UNIDATA netCDF home available at: http://www.unidata.ucar.edu/software/netcdf/

[6]

NetCDF documents available at: http://www.unidata.ucar.edu/software/netcdf/docs/

[7]

NetCDF Users Guide available at: http://www.unidata.ucar.edu/software/netcdf/docs/netcdf.html

[8]

NetCDF Climate and Forecast (CF) Metadata Conventions, Version 1.5, 25 October, 2010; available at: http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.pdf

[9]

UDUNITS Software Package, UNIDATA Program Center of the University Corporation for Atmospheric Research (available at ftp://ftp.unidata.ucar.edu/pub/udunits/udunits-2.1.24.tar.gz)

[10] CF Conformance Requirements and Recommendations, available at: http://cfpcmdi.llnl.gov/conformance [11] UNIDATA Best Practice recommendations on writing netCDF files, available at: http://www.unidata.ucar.edu/packages/netcdf/BestPractices.html [12] NetCDF XML encoding (ncML) available at: http://www.unidata.ucar.edu/software/netcdf/ncml/ [13] S. Nativi, J. Caron, E. Davis and B. Domenico, “Design and implementation of netCDF Markup Language (NcML) and Its GML-based extension (NcML-GML)”, Computers & Geosciences Journal, Volume 31, Issue 9, November 2005, Pages 1104-1118, Elsevier Publication. http://linkinghub.elsevier.com/retrieve/pii/S0098300405001019 [14] S. Nativi and B, Domenico, “Enabling interoperability for Digital Earth: Coverage access services”, International Journal of Digital Earth, Volume 2, Supplement 1, 2009, Pages: 79-104, Taylor & Francis ed., ISSN: 1753-8955 (electronic) 17538947 (paper), 2009. [15] Mazzetti, P.; Nativi, S., J. Caron, “RESTful Implementation of Geospatial Services”, International Journal of Digital Earth, Volume 2, Supplement 1, 2009, 57

OGC 11-165r2

pages: 40-61, Taylor & Francis ed., ISSN: 1753-8955 (electronic) 1753-8947 (paper), 2009, 2009. [16]

NetCDF Climate and Forecast (CF) Metadata Conventions, Version 1.6, 4 May, 2011; available at: http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.6/cfconventions.html

[17] NASA ESDS-RFC-021v0.02, CF Metadata Conventions, April 2010. [18] NASA ESDS–RFC-021 Technical Working Group Final Report.

58

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Annex A (normative) Abstract test suite A WCS CF-netCDF extension implementation must satisfy the following system characteristics to be conformant with this standard.

A.1 Conformance Test Classes: CF-netCDF-1.6 This document establishes three conformance classes CF-netCDF, with URIs: 1. http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-core. 2. http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling 3. http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping

A.2 CF-netCDF-1.6-core conformance class This is the core conformance class for this standard. There is a dependency on the core conformance class for OGC Network Common Data Form (netCDF) Core Encoding Standard version 1.0 (OGC 10-090r3).

Conformance Class http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-core Requiremen ts

http://www.opengis.net/spec/netCDF_data-model/req/CF-netCDF-1.6-core

Dependency

http://www.opengis.net/spec/netcdf/1.0/conf/core

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/structural-adherence

Test

Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/structural-adherence

Test purpose

Any data instantiating a concrete CF-netCDF dataset shall conform with the UML diagrams in Figure 3 and Figure 4

Test method

Open the CF-netCDF data and verify that it represents information using the entities and the relations shown in the UML diagrams in Figure 3 and Figure 4.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-

59

OGC 11-165r2

core/Conventions

Test

Test

Requirement

http://www.opengis.net/spec/netCDF_data-model./req/CFnetCDF-1.6-core/Conventions

Test purpose

Any CF-netCDF Dataset that uses the CF convention shall define the global attribute Conventions to the string value "CF1.6".

Test method

Open the CF-netCDF data and verify that its global attribute Conventions is equal to "CF-1.6".

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/NamingConventions Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/NamingConventions

Test purpose

CF-netCDF Variable, Dimension and Attribute names

Test method

Open the CF-netCDF data and verify that all Variables , Dimensions and Attributes names begin with a letter and are composed of letters, digits, and underscore characters.

shall begin with a letter and be composed of letters, digits, and underscores.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/ReservedAttributeNames Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/ReservedAttributeNames

Test purpose

CF-netCDF Attribute names commencing with underscore ('_') shall be reserved for use by the netCDF library /req/CF-netCDF-

1.6-core/ReservedAttributeNames: CF-netCDF Attribute names commencing with underscore ('_') shall be reserved for use by the netCDF library.

Test method Test

60

Open the CF-netCDF data and verify that no Attribute name, defined by the Authors, begins with the underscore ('_') character.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/StandardAttributeNames requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/StandardAttributeNames

Test purpose

The list of CF-netCDF Attribute names reported in the Appendix A of [8] shall be considered standard names and therefore reserved.

Test method

Open the CF-netCDF data and verify that no Attribute name, Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

defined by the Authors, matches any name reported in the Appendix A of [8]. Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/StandardNames Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/StandardNames

Test purpose

Any CF-netCDF Variable shall define either a standard_name attribute or a long_name attribute. Exception: this is not mandatory only for Boundary Variable

Test method

Test

Open the CF-netCDF data and verify that all Variables (with the exception of the Boundary Variables) have either a standard_name attribute or a long_name attribute.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/StandardNameValues Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/StandardNameValues

Test purpose

A standard name shall contain no whitespace and shall be case sensitive. In addition, the set of permissible standard names is contained in the CF standard name table published at: http://cfpcmdi.llnl.gov/documents/cf-standard-names/standard-nametable/18/cf-standard-name-table.xml

Test method

Test

Test

Open the CF-netCDF data and verify that all Variable standard_names match an entry of the CF standard name table (published at: http://cf-pcmdi.llnl.gov/documents/cf-standardnames/standard-name-table/18/cf-standard-name-table.xml) and that do not contain any whitespace.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-

core/Dimensions

Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CF-netCDF-

Test purpose

For any CF-netCDF Variable, its Dimension names shall have different names.

Test method

Open the CF-netCDF data and verify that for any Variable its Dimensions have different names.

1.6-core/Dimensions

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/DimensionsShape

61

OGC 11-165r2

Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/DimensionsShape

Test purpose

For a given spatial-temporal CF-netCDF Variable, its spatialtemporal Dimensions order shall appear in the relative order T, then Z, then Y, then X. In addition, any other dimension shall be placed to the left of the spatiotemporal dimensions.

Test method

Test

Open the CF-netCDF data and verify that for any spatial-temporal Variable its dimensions order matches the following shape: T, then Z, then Y, then X. In addition, verify that any other Dimension (i.e. parametric dimensions) is placed to the left of the spatiotemporal dimensions.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-core/Units Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/Units

Test purpose

Any dimensional CF-netCDF Variable (i.e. CF-netCDF Variable that represents dimensional quantity) shall define a units attribute. Exception, this is not mandatory only for Boundary Variable In addition, the units value may be physically equivalent (not necessarily identical) to the canonical units for the Variable.

Test method

Test

Open the CF-netCDF data and verify that any Variable that represents dimensional quantity (with the exception of Boundary Variables) has a units attribute. In addition, verify that the units value may be physically equivalent (not necessarily identical) to the canonical units for the Variable.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/UnitsValue Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/UnitsValue

Test purpose

Any units attribute value shall be a string that can be recognized by UNIDATA"s Udunits package [9]. In addition, exceptions are the units level, layer, and sigma_level.

Test method

62

Open the CF-netCDF data and verify that any units attribute value (with the exception of: the units level, layer, and sigma_level) is recognized by the UNIDATA"s Udunits package [9]. Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/UnitsConsistency Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/UnitsConsistency

Test purpose

The units of a CF-Variable shall be consistent with the units given in the standard name table (published at: http://cfpcmdi.llnl.gov/documents/cf-standard-names/standard-nametable/18/cf-standard-name-table.xml ) In addition, the units must also be consistent with a specified cell_methods attribute, if one is present.

Test method

Test

Open the CF-netCDF data and verify that the units attribute value of any CF-Variable is consistent with the units given in the standard name table (published at: http://cfpcmdi.llnl.gov/documents/cf-standard-names/standard-nametable/18/cf-standard-name-table.xml). In addition, if a cell_methods attribute is present, verify that the units is consistent with it.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/CoordinateData Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/CoordinateData

Test purpose

Any Variable containing coordinate data shall be: a Coordinate Variable | an Auxiliary Coordinate Variable

Test method

Test

Test

Open the CF-netCDF data and verify that any Variable containing coordinate information is either a Coordinate Variable entity or an Auxiliary Coordinate Variable entity.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/CoordinateData/CoordinateVariable Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/CoordinateData/CoordinateVariable

Test purpose

A Coordinate Variable shall be defined for each Dimension that correspond to one dimensional space or time coordinates.

Test method

Open the CF-netCDF data and verify that any Dimension that corresponds to one dimensional space or time coordinates has an associate Coordinate Variable .

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-

63

OGC 11-165r2

core/CoordinateVariableDimension

Test

Test

Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/CoordinateVariableDimension

Test purpose

Any Coordinate Variable shall have a single Dimension whose name matches the Variable name.

Test method

Open the CF-netCDF data and verify that any Coordinate Variable has a single Dimension whose name matches the Variable name.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/CoordinateVariableValues Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/CoordinateVariableValues

Test purpose

Coordinate Variable values shall be ordered monotonically.

Test method

Open the CF-netCDF data and verify that the values of any Coordinate Variable is ordered monotonically.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/CoordinateVariable/AxisAttribute Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/CoordinateVariable/AxisAttribute

Test purpose

For any Coordinate Variable the attribute axis shall be given one of the values X, Y, Z or T. In addition these values stand for a longitude, latitude, vertical, or time axis respectively for the CF-netCDF cordinate types: LongitudeCoordinate, LatitudeCoordinate, VerticalCoordinate, TimeCoordinate .

Test method

Test

64

Open the CF-netCDF data and verify that any attribute axis of any Coordinate Variable has one of the following values: X, Y, Z or T.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-core/ CoordinateVariable/AxisAttributeSemantic Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/CoordinateVariable/AxisAttributeSemantic

Test purpose

The values X and Y for the axis attribute shall be used to identify horizontal coordinate variables.

Test method

Open the CF-netCDF data and verify that the values X and Y for the axis attribute identify horizontal coordinate variables. Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Test

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/CoordinateVariable/Missing_valuesAttribute Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/CoordinateVariable/Missing_valuesAttribute

Test purpose

Coordinate Variable shall not define an attribute missing_values.

Test method

Open the CF-netCDF data and verify that no Coordinate Variable defines a missing_values attribute.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/LatitudeCoordinate Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/LatitudeCoordinate

Test purpose

For any Latitude Coordinate the units attribute values shall be: degrees_north | degree_north | degree_N, | degrees_N | degreeN | degreesN. In addition, Coordinates of latitude with respect to a rotated pole should be given units of degrees, not degrees_north or equivalents.

Test method

Test

Open the CF-netCDF data and verify that for any Latitude Coordinate the units attribute has one of the following values: degrees_north ; degree_north ; degree_N; degrees_N ; degreeN ; degreesN. In addition, verify that coordinates of latitude with respect to a rotated pole have units of degrees, not degrees_north or equivalents.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/LongitudeCoordinate Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/LongitudeCoordinate

Test purpose

For any Longitude Coordinate the units attribute values shall be: degrees_east | degree_east | degree_E | degrees_E | degreeE | degreesE. In addition, Coordinates of longitude with respect to a rotated pole should be given units of degrees, not degrees_east or equivalents.

Test method

Open the CF-netCDF data and verify that for any Longitude Coordinate the units attribute has one of the following values: degrees_east; degree_east ; degree_E ; degrees_E ; degreeE ; degreesE. In addition, verify that coordinates of longitude with respect to a rotated pole have units of degrees,

65

OGC 11-165r2

not degrees_east or equivalents. Test

Test

Test

Test

66

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/VerticalCoordinatePositiveAttribute Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/VerticalCoordinatePositiveAttribute

Test purpose

Any Vertical Coordinate shall define the positive attribute whose values shall be: up | down.

Test method

Open the CF-netCDF data and verify that any Vertical Coordinate defines the positive attribute whose value is one of the followings: up ; down

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/VerticalCoordinateUnitsAttribute Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/VerticalCoordinateUnitsAttribute

Test purpose

For any Vertical Coordinate the units attribute values shall be: units of pressure as listed in the file udunits.dat (e.g. bar, millibar, decibar, atmosphere (atm), pascal (Pa), and hPa) | units of length as listed in the file udunits.dat (e.g. meter, metre, m, kilometer, km) | other units listed in the file udunits.dat that may under certain circumstances reference vertical position such as units of density or temperature.

Test method

Open the CF-netCDF data and verify that for any Vertical Coordinate the units attribute has one of the following values: units of pressure as listed in the file udunits.dat (e.g. bar, millibar, decibar, atmosphere (atm), pascal (Pa), and hPa) ; units of length as listed in the file udunits.dat (e.g. meter, metre, m, kilometer, km) ; other units listed in the file udunits.dat that may, under certain circumstances, reference vertical position such as units of density or temperature.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/DimensionlessVerticalCoordinate Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/DimensionlessVerticalCoordinate

Test purpose

Any Dimensionless Vertical Coordinate shall be defined in Appendix D of [8].

Test method

Open the CF-netCDF data and verify that any Dimensionless Vertical Coordinate is defined in Appendix D of [8].

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

core/DimensionlessVerticalCoordinateFormula_TermsAttribute Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6core/DimensionlessVerticalCoordinateFormula_TermsAttribute

Test purpose

Any Dimensionless Vertical Coordinate shall define the formula_terms attribute./req/CF-netCDF-1.6-

core/DimensionlessVerticalCoordinateFormula_TermsA ttribute: Any Dimensionless Vertical Coordinate shall define the formula_terms attribute.

Test method Test

Test

Open the CF-netCDF data and verify that any Dimensionless Vertical Coordinate has a formula_terms attribute.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/TimeCoordinateUnitsAttribute Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/TimeCoordinateUnitsAttribute

Test purpose

For any Time Coordinate the units attribute values shall be units of time as listed in the file udunits.dat (e.g. day or (d), hour or (hr, h), minute or (min), and second or (sec, s) ).

Test method

Open the CF-netCDF data and verify that for any Time Coordinate the units attribute value is a unit of time as listed in the file udunits.dat (e.g. day or (d), hour or (hr, h), minute or (min), and second or (sec, s) ).

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/TimeCoordinateCalendarAttribute Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/TimeCoordinateCalendarAttribute

Test purpose

Any Time Coordinate shall define the calendar attribute In addition, the values currently defined for calendar are: gregorian or standard | proleptic_gregorian | noleap or 365_day | all_leap or 366_day | 360_day | julian | none.

Test method

Test

Open the CF-netCDF data and verify that any Time Coordinate has a calendar attribute. In addition, verify that the calendar attribute has one of the following values: gregorian or standard ; proleptic_gregorian ; noleap or 365_day ; all_leap or 366_day ; 360_day ; julian ; none.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-

67

OGC 11-165r2

core/TimeCoordinateNonstandardCalendar Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/TimeCoordinateNonstandardCalendar

Test purpose

Any Time Coordinate characterized by a nonstandard calendar shall define the month_lengths attribute to specify its calendar. In addition, the attribute value shall be for year: a vector of size 12, specifying the number of days in the months from January to December. In addition, for leap year two other attributes of the time axis shall be defined: leap_year and leap_month.

Test method

Test

Open the CF-netCDF data and verify that for any Time Coordinate characterized by a nonstandard calendar has the month_lengths attribute to specify its calendar. In addition, verify that the month_lengths attribute, for non-leap year, is a vector of size 12, specifying the number of days in the months from January to December. In addition, verify that for leap year two other attributes of the time axis are defined: leap_year and leap_month.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/AuxiliaryCoordinateVariable Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/AuxiliaryCoordinateVariable

Test purpose

An Auxiliary Coordinate Variable shall be identified by the coordinates attribute defined by a netCDF Variable. In addition, the value of the coordinates attribute is a blank separated list of the names of Auxiliary Coordinate

Variables

Test method

Test

68

Open the CF-netCDF data and verify that any Auxiliary Coordinate Variable is associated to a netCDF Variable by the coordinates attribute characterizing the netCDF Variable. In addition, verify that the value of the coordinates attribute is a blank separated list of the names of Auxiliary Coordinate Variables.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/ScalarCoordinateVariable Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/ScalarCoordinateVariable

Test purpose

A Scalar Coordinate Variable shall define a coordinate Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

which is single-valued. In addition, the Scalar Coordinate Variable name shall not match the name of any dimension in the netCDF dataset. Test method

Test

Open the CF-netCDF data and verify that any Scalar Coordinate Variable defines a coordinate which is singlevalued. In addition, verify that the Scalar Coordinate Variable name does not match the name of any dimension in the netCDF dataset.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/HorizontalCRS Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/HorizontalCRS

Test purpose

For any CF Variable defined on a horizontal grid not defined on latitude and longitude dimensions, true latitude and longitude coordinates shall be supplied as Coordinate Variables and associated via the coordinates attribute. In addition: the attribute grid_mapping may be used to supply the description of the mapping between the given grid coordinate variables and the true latitude and longitude coordinates. In addition: the grid_mapping attribute takes a string value which is the name of a Grid Mapping Variable

Test method

Test

Open the CF-netCDF data and verify that for any CF Variable defined on a horizontal grid not defined on latitude and longitude dimensions, the CF Variable has a coordinates attribute which associates a couple of Coordinate Variables defining the true latitude and longitude coordinates. In addition, if the grid_mapping attribute is used to supply the description of the mapping between the given grid coordinate variables and the true latitude and longitude coordinates, verify that the grid_mapping attribute takes a string value which is the name of a Grid Mapping Variable.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/GridMappingVariable Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/GridMappingVariable

Test purpose

Any Grid Mapping Variable shall define the grid_mapping_name attribute.

Test method

Open the CF-netCDF data and verify that any Grid Mapping Variable has a grid_mapping_name attribute.

69

OGC 11-165r2

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/BoundaryVariable Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-core/BoundaryVariable

Test purpose

Any Boundary Variable shall define one more dimension than its associated Coordinate or Auxiliary Coordinate Variable. In addition, The additional dimension shall be the most rapidly varying one, and its size is the maximum number of cell vertices

Test method

Open the CF-netCDF data and verify that any Boundary Variable has one more dimension than its associated Coordinate or Auxiliary Coordinate Variable. In addition, verify that the additional dimension is the most rapidly varying one, and its size is the maximum number of cell vertices.

Test

Test

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/CellMeasures Requireme nt

http://www.opengis.net/spec/netCDF_data-model/req/CF-netCDF1.6-core/CellMeasures

Test purpose

cell_measures attribute shall be a string attribute comprising a

Test method

Open the CF-netCDF data and verify that any cell_measures attribute is a string attribute comprising a list of blank-separated pairs of words of the form "measure: name".

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/MeasureVariable Requireme nt

http://www.opengis.net/spec/netCDF_data-model/req/CF-netCDF1.6-core/MeasureVariable

Test purpose

Measure Variable dimensions shall be the same as or a subset of the dimensions of the CF Variable to which they are related.

Test method

Open the CF-netCDF data and verify that the Measure Variable dimensions are the same as or a subset of the dimensions of the CF Variable to which they are related

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6core/CellMethods Requireme nt

70

list of blank-separated pairs of words of the form "measure: name".

http://www.opengis.net/spec/netCDF_data-model/req/CF-netCDF1.6-core/CellMethods Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Test purpose

cell_methods attribute shall be a string attribute comprising a list

of blank-separated words of the form "name: method".

In addition, name can be: a Dimension of the variable (defining the attribute), a Scalar Coordinate Variable, a valid standard name, or the word "area". In addition, the value of method should be: point | sum | mean | maximum | minimum | mid_range | standard_deviation | variance | mode | median. Test method

Open the CF-netCDF data and verify that any cell_methods attribute is a string attribute comprising a list of blank-separated words of the form "name: method". In addition, verify that name is one of the followings: a Dimension of the variable (defining the attribute), a Scalar Coordinate Variable, a valid standard name, or the word "area". In addition, verify that the value of method is one of the followings: point; sum ; mean ; maximum ; minimum ; mid_range ; standard_deviation ; variance ; mode ; median.

71

OGC 11-165r2

A.3 CF-netCDF-1.6-DiscreteSampling conformance class This is the Discrete Sampling conformance class for this standard. There is a dependency on the core conformance class of this standard (see A.2).

Conformance Class http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-DiscreteSampling Requirements

http://www.opengis.net/spec/netCDF_data-model/req/CF-netCDF-1.6DiscreteSampling

Dependency

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-core

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/DistrictSamplingGeometriesModel

Test

Test

Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6DiscreteSampling/DistrictSamplingGeometriesModel

Test purpose

Any data instantiating a concrete CF-netCDF DistrictSamplingGeometry dataset shall conform with the UML diagrams in Figure 5 and Figure 6.

Test method

Open the CF-netCDF data and verify that it represents information using the entities and the relations shown in the UML diagrams in Figure 5 and Figure 6.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/FeatureCollection Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-DiscreteSampling/FeatureCollection

Test purpose

CF-netCDF Feature Collection shall contain Feature

Test method

Open the CF-netCDF data and verify that any Feature Collection contains Feature instances of the same type.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/Feature Requirement

72

instances of the same type.

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-DiscreteSampling/Feature Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Test

Test

Test

Test purpose

CF-netCDF Dataset shall contain Feature Collection

Test method

Open the CF-netCDF data and verify that any Dataset contains Feature Collection variables of the same feature type.

variables of the same feature type.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/FeatureTypeDimension Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-DiscreteSampling/FeatureTypeDimension

Test purpose

Any CF-netCDF Feature Collection variable implementing a Feature type shall define the Dimensions specified in Table 2.

Test method

Open the CF-netCDF data and verify that any CF-netCDF Feature Collection variable implementing a Feature type defines the Dimensions specified in Table 2.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/MultidimensionalArray Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-DiscreteSampling/MultidimensionalArray

Test purpose

Any Multidimensional Array Feature Collection shall have both an Instance Dimension and an Element Dimension.

Test method

Open the CF-netCDF data and verify that any

Multidimensional Array Feature Collection has both an Instance Dimension and an Element Dimension.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/RaggedArray Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-DiscreteSampling/RaggedArray

Test purpose

Any Ragged Array Feature Collection shall have a Sample Dimension. In addition, the Sample Dimension is occupied by both an Instance Dimension and an Element Dimension.

Test method

Test

Open the CF-netCDF data and verify that any Ragged Array Feature Collection has a Sample Dimension. In addition, verify that the Sample Dimension is occupied by both an Instance Dimension and an Element Dimension.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-

73

OGC 11-165r2

DiscreteSampling/OrthogonalMultidimensionalArray

Test

Test

Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6DiscreteSampling/OrthogonalMultidimensionalArray

Test purpose

Any Feature instance of an Orthogonal

Test method

Open the CF-netCDF data and verify that any Feature instance of an Orthogonal Multidimensional Array Feature Collection has identical Coordinates along the Element Dimension.

Multidimensional Array Feature Collection shall have identical Coordinates along the Element Dimension.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/ ContiguousRaggedArray Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-DiscreteSampling/ ContiguousRaggedArray

Test purpose

Any Contiguous Ragged Array dataset shall have a Count Variable.

Test method

Open the CF-netCDF data and verify that any Contiguous Ragged Array dataset has a Count Variable.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/ContiguousRaggedArraySampleDimension Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6DiscreteSampling/ContiguousRaggedArraySampleDimension

Test purpose

Any Count Variable shall define the attribute sample_dimension. In addition, the attribute sample_dimension names the Sample Dimension being counted.

Test method

Test

74

Open the CF-netCDF data and verify that any Count Variable has the attribute sample_dimension. In addition, verify that the attribute sample_dimension names the Sample Dimension being counted.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/IndexedRaggedArray Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-DiscreteSampling/IndexedRaggedArray

Test purpose

Any Indexed Ragged Array dataset shall have an Index Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Variable.

In addition, the Index Variable must be of type integer. In addition, the Index Variable must have the Sample Dimension as its single dimension. Test method

Open the CF-netCDF data and verify that any Indexed RaggedArray dataset has an Index Variable. In addition, verify that the Index Variable is of type integer. In addition, verify that the Index Variable has the Sample Dimension as its single dimension.

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/IndexedRaggedArrayInstanceDimension Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6DiscreteSampling/IndexedRaggedArrayInstanceDimension

Test purpose

Any Index Variable shall define the attribute instance_dimension. In addition, the attribute instance_dimension names the Instance Dimension characterizing the Instance Variables of the dataset

Test method

Open the CF-netCDF data and verify that any Index Variable has the attribute instance_dimension. In addition, verify that the attribute instance_dimension names the Instance Dimension characterizing the Instance Variables of the dataset.

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/Feature_type Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-DiscreteSampling/Feature_type

Test purpose

Any Ragged Array and Multidimensional Array dataset shall define an attribute feature_type. In addition, the attribute feature_type must be: point | timeSeries | trajectory | profile | timeSeriesProfile | trajectoryProfile.

Test method

Open the CF-netCDF data and verify that any Ragged Array and Multidimensional Array dataset has an attribute feature_type. In addition, verify that the attribute feature_type has one of the following values: point ;

75

OGC 11-165r2

timeSeries ; trajectory ; profile ; timeSeriesProfile ; trajectoryProfile.

Test

Test

Test

76

http://www.opengis.net/spec/netCDF_data-model/conf/CFnetCDF/FeatureCollectionCoordinates Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF/FeatureCollectionCoordinates

Test purpose

Any Feature Collection data variable shall define an attribute coordinates.

Test method

Open the CF-netCDF data and verify that any Feature Collection data variable has an attribute coordinates.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/Cf_role Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-DiscreteSampling/Cf_role

Test purpose

The attribute cf_role must be: timeseries_id | profile_id | trajectory_id.

Test method

Open the CF-netCDF data and verify that any attribute cf_role has one of the following values: timeseries_id ; profile_id ; trajectory_id.

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling/MissingData Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-DiscreteSampling/MissingData

Test purpose

Auxiliary Coordinate Variables characterizing Feature Collection shall define the attribute missing_values.

Test method

Open the CF-netCDF data and verify that any Auxiliary Coordinate Variables characterizing Feature Collection has the attribute missing_values.

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

A.4 CF-netCDF-1.6-ISOMapping conformance class This is the ISO Mapping conformance class for this standard. There is a dependency on the Discrete Sampling conformance class of this standard (see A.3).

Conformance Class http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6-ISOMapping Requirements

http://www.opengis.net/spec/netCDF_data-model/req/CF-netCDF-1.6ISOMapping

Dependency

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6DiscreteSampling

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/discreteGridPointCoverage Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-ISOMapping/discreteGridPointCoverage

Test purpose

Any group of CF-netCDF data variables that share the same set of spatial/temporal coordinate variables shall realize ISO19123:CV_DiscreteCoverage sub-types: ISO19123:CV_DiscreteGridPointCoverage or ISO19123:CV_DiscretePointCoverage. In addition, the ISO19123:CV_CoverageFunction shall not define any interpolation method.

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that any group of CF-netCDF data variables that share the same set of spatial/temporal coordinate variables realizes one of the following ISO19123:CV_DiscreteCoverage sub-types: ISO19123:CV_DiscreteGridPointCoverage or ISO19123:CV_DiscretePointCoverage. In addition, verify that the related

ISO19123:CV_CoverageFunction does not define any

interpolation method.

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/CoverageDomain Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CF-

77

OGC 11-165r2

netCDF-1.6-ISOMapping/CoverageDomain Test purpose

The set of spatial/temporal Coordinate Variables, shared by CF-netCDF data Variables, shall realize either an

ISO19123:CV_DiscreteGridPointCoverage.CV_GridVa lueMatrix.CV_GridPoint.gridCoord or ISO19123:CV_PointValuePair.geometry.

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that the set of spatial/temporal Coordinate Variables, shared by any CF-netCDF data Variables realizes either an

ISO19123:CV_DiscreteGridPointCoverage.CV_GridVa lueMatrix. CV_GridPoint.gridCoord or an ISO19123:CV_PointValuePair.geometry.

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/DatasetCS Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-ISOMapping/DatasetCS

Test purpose

The CF-netCDF Coordinate System type, which is comprised of a set of spatial/temporal coordinate variables shared by CF-netCDF data variables, shall realize

ISO19123:CV_DiscreteCoverage.SC_CRS.SC_Coordina teSystem or a subtype of it (i.e. ISO19123:CV_DiscreteGridPointCoverage.SC_CRS.SC _CoordinateSystem or ISO19123:CV_DiscretePointCoverage.SC_CRS.SC_Coo rdinateSystem).

Additionally, the spatial/temporal Coordinate Variables and its subtypes (i.e. Vertical Coordinate, Latitude Coordinate, Longitude Coordinate, Time Coordinate elements), and the Auxiliary Coordinate Variables shall realize the related set of

SC_CRS.SC_CoordinateSystem.SC_CoordinateSystemA xis

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that the CF-netCDF Coordinate System type, which is comprised of a set of spatial/temporal coordinate variables shared by CF-netCDF data variables, realizes an

ISO19123:CV_DiscreteCoverage.SC_CRS.SC_Coordina teSystem or a subtype of it (i.e. ISO19123:CV_DiscreteGridPointCoverage.SC_CRS.SC _CoordinateSystem or ISO19123:CV_DiscretePointCoverage.SC_CRS.SC_Coo rdinateSystem).

78

Additionally, verify that the Coordinate System Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

spatial/temporal Coordinate Variables and its subtypes (i.e. Vertical Coordinate, Latitude Coordinate, Longitude Coordinate, Time Coordinate elements), and the Auxiliary Coordinate Variables realize the related set of SC_CRS.SC_CoordinateSystem.SC_CoordinateSystemA xis.

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/DatasetCRS Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-ISOMapping/DatasetCRS

Test purpose

The Grid Mapping Variable projection information characterizing a set of spatial/temporal coordinate variables, shared by CF-netCDF data variables, shall realize

ISO19123:CV_DiscreteCoverage.SC_CRS.SC_Coordina teSystem.type or a subtype of it.

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that the Grid Mapping Variable projection information characterizing one or more spatial/temporal coordinate variables, shared by CF-netCDF data variables, realizes

ISO19123:CV_DiscreteCoverage.SC_CRS.SC_Coordina teSystem.type or a subtype of it.

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/DatasetRange Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-ISOMapping/DatasetRange

Test purpose

The CF-netCDF data Variables sharing the common set of spatial/temporal Coordinate Variables, shall realize one of the following objects: (a)

ISO19123:CV_DiscreteGridPointCoverage.CV_GridVa luesMatrix.values or a subtype of it;

(b)

ISO19123:CV_DiscretePointCoverage.CV_PointValue Pair.value

Additionally, the CF Variable data values generate the CV_GeometryValuePair record value(s): (a) CV_GridValueMatrix.values.record entry (i.e. AttributeName, Any); (b) CV_PointValuePair.value.record entry (i.e. AttributeName, Any).

79

OGC 11-165r2

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that any CF-netCDF data Variables sharing a common set of spatial/temporal Coordinate Variables realize one of the following objects: (a)

ISO19123:CV_DiscreteGridPointCoverage.CV_GridVa luesMatrix.values or a subtype of it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValue Pair.value

Additionally, verify that the Variable data values generate one of the following CV_GeometryValuePair record value(s): (a) CV_GridValueMatrix.values.record entry (i.e. AttributeName, Any); (b) CV_PointValuePair.value.record entry (i.e. AttributeName, Any). Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/DatasetRangeType Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-ISOMapping/DatasetRangeType

Test purpose

The CF-netCDF data Variables sharing a common set of spatial/temporal coordinate variables/auxiliary coordinate variables, shall realize one of the following objects: (a)

CV_DiscreteGridPointCoverage.RangeType.Attribut esType (i.e. AttributeName, TypeName) or a subtype of it;

(b)

CV_DiscretePointCoverage.RangeType.AttributesTy pe (i.e. AttributeName, TypeName) or a subtype of it.

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that any CF-netCDF data Variables sharing a common set of spatial/temporal coordinate variables/auxiliary coordinate variables, realize one of the following objects: (a)

CV_DiscreteGridPointCoverage.RangeType.Attribut esType (i.e. AttributeName, TypeName) or a subtype of it;

(b)

CV_DiscretePointCoverage.RangeType.AttributesTy pe (i.e. AttributeName, TypeName) or a subtype of it.

Test

80

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/DatasetParametricRangeValues Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-ISOMapping/DatasetParametricRangeValues

Test purpose

The CF-netCDF Auxiliary Coordinate Variables (part of the dataset shared coordinate system) which are not space or Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

time dimension, shall realize one of the following objects: (a)

ISO19123:CV_DiscreteGridPointCoverage.CV_GridVa luesMatrix.values or a subtype of it;

(b)

ISO19123:CV_DiscretePointCoverage.CV_PointValue Pair.value

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that the CF-netCDF Auxiliary Coordinate Variables (part of the dataset shared coordinate system) which are not space or time dimension, contribute to realize one of the following objects: (a)

ISO19123:CV_DiscreteGridPointCoverage.CV_GridVa luesMatrix.values or a subtype of it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValue Pair.value

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/DatasetParametricRangeType Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-ISOMapping/DatasetParametricRangeType

Test purpose

The CF-netCDF Auxiliary Coordinate Variables (part of the dataset shared coordinate system) which are not space or time dimension, shall realize one of the following objects: (a)

CV_DiscreteGridPointCoverage.RangeType.Attribut esType (i.e. AttributeName, TypeName) or a subtype of it;

(b)

CV_DiscretePointCoverage.RangeType.AttributesTy pe (i.e. AttributeName, TypeName).

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that the CF-netCDF Auxiliary Coordinate Variables (part of the dataset shared coordinate system) which are not space or time dimension, contribute to realize one of the following objects: (a)

CV_DiscreteGridPointCoverage.RangeType.Attribut esType (i.e. AttributeName, TypeName) or a subtype of it;

(b)

CV_DiscretePointCoverage.RangeType.AttributesTy pe (i.e. AttributeName, TypeName).

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/MeasureVariableMapping/RangeValues Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CF-

81

OGC 11-165r2

netCDF-1.6ISOMapping/MeasureVariableMapping/RangeValues Test purpose

Any CF-netCDF Measure Variable (characterising a CF Variable) shall realize one of the following objects: (a)

ISO19123:CV_DiscreteGridPointCoverage.CV_GridVa luesMatrix.values or a subtype of it;

(b)

ISO19123:CV_DiscretePointCoverage.CV_PointValue Pair.value

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that any CF-netCDF Measure Variable (characterising a CF Variable) realizes one of the following objects: (a)

ISO19123:CV_DiscreteGridPointCoverage.CV_GridVa luesMatrix.values or a subtype of it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValue Pair.value.

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/MeasureVariableMapping/RangeType Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6ISOMapping/MeasureVariableMapping/RangeType

Test purpose

Any CF-netCDF Measure Variable (characterising a CF Variable) shall realize one of the following objects: (a)

CV_DiscreteGridPointCoverage.RangeType.Attribut esType (i.e. AttributeName, TypeName) or a subtype of it;

(b)

CV_DiscretePointCoverage.RangeType.AttributesTy pe (i.e. AttributeName, TypeName).

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that any CF-netCDF Measure Variable (characterising a CF Variable) realizes one of the following objects: (a)

CV_DiscreteGridPointCoverage.RangeType.Attribut esType (i.e. AttributeName, TypeName) or a subtype of it;

(b)

CV_DiscretePointCoverage.RangeType.AttributesTy pe (i.e. AttributeName, TypeName).

Test

82

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

ISOMapping/DiscreteSamplingGeometriesMapping/RaggedArray Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6ISOMapping/DiscreteSamplingGeometriesMapping/RaggedArr ay

Test purpose

Any CF-netCDF Ragged Array shall realize the ISO19123:CV_DiscreteCoverage sub-type: ISO19123:CV_DiscreteGridPointCoverage

In addition, the ISO19123:CV_CoverageFunction shall not define any interpolation method. Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that any CF-netCDF Ragged Array realizes the ISO19123:CV_DiscreteCoverage sub-type: ISO19123:CV_DiscreteGridPointCoverage. In addition, verify that the related

ISO19123:CV_CoverageFunction does not define any

interpolation method.

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/DiscreteSamplingGeometriesMapping/MultidimensionalArray requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6ISOMapping/DiscreteSamplingGeometriesMapping/Multidimen sionalArray

Test purpose

Any CF-netCDF Multidimensional Array shall realize one of the following ISO19123:CV_DiscreteCoverage subtypes: ISO19123:CV_DiscreteGridPointCoverage or ISO19123:CV_DiscretePointCoverage. In addition, the ISO19123:CV_CoverageFunction shall not define any interpolation method.

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that any CF-netCDF Multidimensional Array realizes one of the following ISO19123:CV_DiscreteCoverage sub-types: ISO19123:CV_DiscreteGridPointCoverage or ISO19123:CV_DiscretePointCoverage. In addition, verify that the related

ISO19123:CV_CoverageFunction does not define any

interpolation method.

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/MultidimensionalArrayFeatureCollectionMapping/RangeValues

83

OGC 11-165r2

Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6ISOMapping/MultidimensionalArrayFeatureCollectionMapping /RangeValues

Test purpose

Any CF-netCDF Multidimensional Array Feature Collection shall realize one of the following objects: (a)

ISO19123:CV_DiscreteGridPointCoverage.CV_GridVa luesMatrix.values or a subtype of it;

(b)

ISO19123:CV_DiscretePointCoverage.CV_PointValue Pair.value

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that any CF-netCDF Multidimensional Array Feature Collection realizes one of the following objects: (a)

ISO19123:CV_DiscreteGridPointCoverage.CV_GridVa luesMatrix.values or a subtype of it; (b) ISO19123:CV_DiscretePointCoverage.CV_PointValue Pair.value.

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/ MultidimensionalArrayFeatureCollectionMapping/RangeType Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6-ISOMapping/ MultidimensionalArrayFeatureCollectionMapping/RangeType

Test purpose

Any CF-netCDF Multidimensional Array Feature Collection shall realize one of the following objects: (a)

CV_DiscreteGridPointCoverage.RangeType.Attribut esType (i.e. AttributeName, TypeName) or a subtype of it;

(b)

CV_DiscretePointCoverage.RangeType.AttributesTy pe (i.e. AttributeName, TypeName) or a subtype of it.

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that any CF-netCDF Multidimensional Array Feature Collection realizes one of the following objects: (a)

CV_DiscreteGridPointCoverage.RangeType.Attribut esType (i.e. AttributeName, TypeName) or a subtype of it;

(b)

CV_DiscretePointCoverage.RangeType.AttributesTy pe (i.e. AttributeName, TypeName) or a subtype of it.

84

Copyright © 2013 Open Geospatial Consortium

OGC 11-165r2

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/RaggedArrayFeatureCollectionMapping/RangeValues Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6ISOMapping/RaggedArrayFeatureCollectionMapping/RangeVa lues

Test purpose

Any CF-netCDF Multidimensional Array Feature Collection shall realize an

ISO19123:CV_DiscretePointCoverage.CV_PointValue Pair.value or a subtype of it.

Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that any CF-netCDF Multidimensional Array Feature Collection realizes an

ISO19123:CV_DiscretePointCoverage.CV_PointValue Pair.value or a subtype of it.

Test

http://www.opengis.net/spec/netCDF_data-model/conf/CF-netCDF-1.6ISOMapping/RaggedArrayFeatureCollectionMapping/RangeType Requirement

http://www.opengis.net/spec/netCDF_data-model/req/CFnetCDF-1.6ISOMapping/RaggedArrayFeatureCollectionMapping/RangeTy pe

Test purpose

Any CF-netCDF Ragged Array Feature Collection shall realize an

ISO10123:CV_DiscretePointCoverage.RangeType.Att ributesType (i.e. AttributeName, TypeName) or a subtype

of it. Test method

Open the CF-netCDF data mapping onto ISO 19123 data model and verify that any CF-netCDF Ragged Array Feature Collection realizes an

ISO10123:CV_DiscretePointCoverage.Range Type.AttributesType (i.e. AttributeName, TypeName) or a subtype of it.

85

OGC 11-165r2

Annex B Revision History Date

Release

2010-08-09 1.0.0

Editor

Primary clauses modified All

2010-09-10 1.1.0 2011-05-25 2.0

Stefano Nativi and Ben Domenico Stefano Nativi Stefano Nativi

2011-08-09 2.1

Stefano Nativi

CF conventions

2012-03-03 2.2

Stefano Nativi

None

2012-08-12 3.0

Stefano Nativi

None

2012-12-27 3.1

Stefano Nativi

None

86

All CF conventions

Description Created Extended to Multi-point coverages Modified the CF convention data model and related sections to be compliant with version 1.5 Modified the CF convention data model and related sections to be compliant with version 1.6 It was added a table to outline the CF elements which are considered mandatory The normative abstract test suite was added. A revision of the entire document was done. Major editorial changes to fully comply with the OGC conformance and requirements editorial specifications

Copyright © 2013 Open Geospatial Consortium

Related documents

Record · ID 601130 · SHA-256 55774d28684a1664
Conceptio Open Knowledge Archive — every document is proof-bundled with source, license, and retrieval metadata.