**Table of Contents**

- 5.1. Independent Latitude, Longitude, Vertical, and Time Axes
- 5.2. Two-Dimensional Latitude, Longitude, Coordinate Variables
- 5.3. Reduced Horizontal Grid
- 5.4. Timeseries of Station Data
- 5.5. Trajectories
- 5.6. Grid Mappings and ProjectionsHorizontal Coordinate Reference Systems, Grid Mappings, and Projections
- 5.7. Scalar Coordinate Variables

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.
This section presents two methods for making that association: the use of
*coordinate variables*, and the use of
*auxiliary coordinate variables*.

All of a variable's dimensions that are latitude, longitude, vertical,
or time dimensions (see Section 1.2, “Terminology”) must have
corresponding coordinate variables, i.e., one-dimensional variables with the
same name as the dimension (see examples in Chapter 4, *
Coordinate Types
*). This is the only method of associating
dimensions with coordinates that is supported by [COARDS].

All of a variable's spatiotemporal dimensions that are not latitude,
longitude, vertical, or time dimensions are required to be associated with
the relevant latitude, longitude, vertical, or time coordinates via the new
`coordinates`

attribute of the variable. The value of the
`coordinates`

attribute is *a blank separated list
of the names of auxiliary coordinate variables*. There is no
restriction on the order in which the auxiliary coordinate variables appear
in the `coordinates`

attribute string. The dimensions of an auxiliary coordinate variable must
be a subset of the dimensions of the variable with which the coordinate is
associated (an exception is label coordinates (Section 6.1, “Labels”)
which contain a dimension for maximum string length). The dimensions of an auxiliary coordinate variable must be a
subset of the dimensions of the variable with which the coordinate is
associated, with two exceptions. First, string-valued coordinates (Section 6.1, “Labels”) have a dimension for maximum string length. Second, in
the ragged array representations of data (Chapter 9, *Discrete Sampling Geometries*), special methods are needed to
connect the data and coordinates

We recommend that the name of a multidimensional coordinate variable should not match the name of any of its dimensions because that precludes supplying a coordinate variable for the dimension. This practice also avoids potential bugs in applications that determine coordinate variables by only checking for a name match between a dimension and a variable and not checking that the variable is one dimensional.

The use of coordinate variables is required whenever they are
applicable. That is, auxiliary coordinate variables may not be used as the
only way to identify latitude and longitude coordinates that could be
identified using coordinate variables. This is both to enhance conformance
to COARDS and to facilitate the use of generic applications that recognize
the NUG convention for coordinate variables. An application that is trying
to find the latitude coordinate of a variable should always look first to
see if any of the variable's dimensions correspond to a latitude coordinate
variable. If the latitude coordinate is not found this way, then the
auxiliary coordinate variables listed by the `coordinates`

attribute should be checked. Note that it is permissible, but optional, to
list coordinate variables as well as auxiliary coordinate variables in the
`coordinates`

attribute.

If an `axis`

attribute is attached to an auxiliary
coordinate variable, it can be used by applications in the same way the
`axis`

attribute attached to a coordinate variable is used.
However, it is not permissible for a data variable to have both a coordinate
variable and an auxiliary coordinate variable, or more than one of either
type of variable, having an `axis`

attribute with any given
value e.g. there must be no more than one `axis`

attribute
for `X`

for any data variable. Note that if the
`axis`

attribute is not specified for an auxiliary
coordinate variable, it may still be possible to determine if it is a
spatiotemporal dimension from its own units or standard_name, or from the
units and standard_name of the coordinate variable corresponding to its
dimensions (see Chapter 4, *
Coordinate Types
* ). For instance,
auxiliary coordinate variables which lie on the horizontal surface can be
identified as such by their dimensions being horizontal. Horizontal
dimensions are those whose coordinate variables have an
`axis`

attribute of `X`

or
`Y`

, or a `units`

attribute indicating
latitude and longitude.

If the coordinate variables for a horizontal grid are not longitude
and latitude, it is recommended that they be supplied *in
addition* to the required coordinates. For example, the Cartesian
coordinates of a map projection should be supplied as coordinate variables
in addition to the required two-dimensional latitude and longitude variables
that are identified via the `coordinates`

attribute. The
use of the `axis`

attribute with values
`X`

and `Y`

is recommended for the
coordinate variables(see Chapter 4, *
Coordinate Types
*).

It is sometimes not practical to specify the latitude-longitude location of data which is representative of geographic regions with complex boundaries. For this purpose, provision is made in Section 6.1.1, “Geographic Regions” for indicating the region by a standardized name.

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.

**Example 5.1. Independent coordinate variables**

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" ;

`xwind(n,k,j,i)`

is associated with the coordinate
values `lon(i)`

, `lat(j)`

,
`pres(k)`

, and `time(n)`

.