ucar.nc2.dataset
Class CoordinateAxis

java.lang.Object
  extended by ucar.nc2.Variable
      extended by ucar.nc2.dataset.VariableDS
          extended by ucar.nc2.dataset.CoordinateAxis
All Implemented Interfaces:
Comparable<VariableSimpleIF>, Enhancements, EnhanceScaleMissing, VariableEnhanced, ProxyReader, VariableIF, VariableSimpleIF
Direct Known Subclasses:
CoordinateAxis1D, CoordinateAxis2D

public class CoordinateAxis
extends VariableDS

A Coordinate Axis is a Variable that specifies one of the coordinates of a CoordinateSystem. Mathematically it is a scalar function F from index space to S:

  F:D -> S
  where D is a product set of dimensions (aka index space), and S is the set of reals (R) or Strings.
 

If its element type is char, it is considered a string-valued Coordinate Axis and rank is reduced by one, since the outermost dimension is considered the string length: v(i, j, .., strlen). If its element type is String, it is a string-valued Coordinate Axis. Otherwise it is numeric-valued, and isNumeric() is true.

The one-dimensional case F(i) -> R is the common case which affords important optimizations. In that case, use the subtype CoordinateAxis1D. The factory methods will return either a CoordinateAxis1D if the variable is one-dimensional, a CoordinateAxis2D if its 2D, or a CoordinateAxis for the general case.

A CoordinateAxis is optionally marked as georeferencing with an AxisType. It should have a units string and optionally a description string.

A Structure cannot be a CoordinateAxis, although members of Structures can.

Author:
john caron

Nested Class Summary
static class CoordinateAxis.AxisComparator
          Standard sort on Coordinate Axes
 
Nested classes/interfaces inherited from class ucar.nc2.Variable
Variable.Cache
 
Field Summary
protected  AxisType axisType
           
protected  String boundaryRef
           
protected  boolean isContiguous
           
protected  NetcdfDataset ncd
           
protected  String positive
           
 
Fields inherited from class ucar.nc2.dataset.VariableDS
orgDataType, orgName, orgVar
 
Fields inherited from class ucar.nc2.Variable
attributes, cache, dataType, debugCaching, defaultCoordsSizeToCache, defaultSizeToCache, dimensions, elementSize, group, isMetadata, isVariableLength, ncfile, parent, proxyReader, shape, shapeAsSection, shortName, sizeToCache, spiObject
 
Constructor Summary
  CoordinateAxis(NetcdfDataset ds, Group group, String shortName, DataType dataType, String dims, String units, String desc)
          Constructor when theres no underlying variable.
protected CoordinateAxis(NetcdfDataset ncd, VariableDS vds)
          Create a coordinate axis from an existing Variable.
 
Method Summary
protected  Variable copy()
           
 CoordinateAxis copyNoCache()
          Make a copy, with an independent cache.
 boolean equals(Object oo)
          Instances which have same content are equal.
static CoordinateAxis factory(NetcdfDataset ncd, VariableDS vds)
          Create a coordinate axis from an existing Variable.
 AxisType getAxisType()
          Get type of axis
 String getBoundaryRef()
          The name of this coordinate axis' boundary variable
 void getInfo(Formatter buf)
          Get a string representation
 double getMaxValue()
          The largest coordinate value.
 double getMinValue()
          The smallest coordinate value.
 String getPositive()
          Get the direction of increasing values, used only for vertical Axes.
 String getUnitsString()
          Get the Unit String for the Variable.
 int hashCode()
          Override Object.hashCode() to implement equals.
 boolean isContiguous()
          If the edges are contiguous or disjoint Caution: many datasets do not explicitly specify this info, this is often a guess; default is true.
 boolean isNumeric()
          Does the axis have numeric values.
 void setAxisType(AxisType axisType)
          Set type of axis, or null if none.
 void setBoundaryRef(String boundaryRef)
          Set a reference to a boundary variable.
 void setPositive(String positive)
          Set the direction of increasing values, used only for vertical Axes.
 
Methods inherited from class ucar.nc2.dataset.VariableDS
_read, _read, addCoordinateSystem, clearCoordinateSystems, convertEnums, convertScaleOffsetMissing, convertScaleOffsetMissing, convertScaleOffsetMissing, convertScaleOffsetMissing, convertScaleOffsetMissing, convertScaleOffsetMissing, enhance, getCoordinateSystems, getDescription, getEnhanceMode, getMissingDataArray, getOriginalDataType, getOriginalName, getOriginalVariable, getUseNaNs, getValidMax, getValidMin, hasCachedDataRecurse, hasFillValue, hasInvalidData, hasMissing, hasMissingValue, hasScaleOffset, isFillValue, isInvalidData, isMissing, isMissingFast, isMissingValue, lookupEnumString, reallyRead, reallyRead, removeCoordinateSystem, setCaching, setFillValueIsMissing, setInvalidDataIsMissing, setMissingDataIsMissing, setName, setOriginalVariable, setUnitsString, setUseNaNs, showScaleMissingProxy, toStringDebug
 
Methods inherited from class ucar.nc2.Variable
addAttribute, clone, compareTo, createNewCache, extraInfo, findAttribute, findAttributeIgnoreCase, findDimensionIndex, getAttributes, getDataType, getDimension, getDimensions, getDimensionsAll, getDimensionsString, getElementSize, getEnumTypedef, getFullName, getFullNameEscaped, getName, getNameAndDimensions, getNameAndDimensions, getNameAndDimensions, getNameAndDimensions, getNameAndDimensions, getNameAndDimensions, getParentGroup, getParentStructure, getProxyReader, getRanges, getRank, getScalarData, getShape, getShape, getShapeAll, getShapeAsSection, getShortName, getSize, getSizeToCache, getSPobject, hasCachedData, invalidateCache, isCaching, isCoordinateVariable, isImmutable, isMemberOfStructure, isMetadata, isScalar, isUnknownLength, isUnlimited, isUnsigned, isVariableLength, read, read, read, read, read, readScalarByte, readScalarDouble, readScalarFloat, readScalarInt, readScalarLong, readScalarShort, readScalarString, readToByteChannel, remove, removeAttribute, removeAttributeIgnoreCase, resetDimensions, resetShape, section, section, setCachedData, setCachedData, setDataType, setDimension, setDimensions, setDimensions, setDimensionsAnonymous, setElementSize, setEnumTypedef, setImmutable, setIsScalar, setParentGroup, setParentStructure, setProxyReader, setSizeToCache, setSPobject, setValues, setValues, slice, toString, writeCDL, writeCDL
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ucar.nc2.VariableIF
findAttribute, findAttributeIgnoreCase, findDimensionIndex, getAttributes, getDataType, getDimension, getDimensions, getDimensionsAll, getElementSize, getFullName, getFullNameEscaped, getNameAndDimensions, getParentGroup, getParentStructure, getRanges, getRank, getShape, getShapeAsSection, getShortName, getSize, isCoordinateVariable, isMemberOfStructure, isMetadata, isScalar, isUnlimited, isUnsigned, isVariableLength, read, read, read, read, readScalarByte, readScalarDouble, readScalarFloat, readScalarInt, readScalarLong, readScalarShort, readScalarString, section
 
Methods inherited from interface ucar.nc2.VariableSimpleIF
getName
 
Methods inherited from interface java.lang.Comparable
compareTo
 

Field Detail

ncd

protected NetcdfDataset ncd

axisType

protected AxisType axisType

positive

protected String positive

boundaryRef

protected String boundaryRef

isContiguous

protected boolean isContiguous
Constructor Detail

CoordinateAxis

protected CoordinateAxis(NetcdfDataset ncd,
                         VariableDS vds)
Create a coordinate axis from an existing Variable. General case.

Parameters:
ncd - the containing dataset
vds - an existing Variable

CoordinateAxis

public CoordinateAxis(NetcdfDataset ds,
                      Group group,
                      String shortName,
                      DataType dataType,
                      String dims,
                      String units,
                      String desc)
Constructor when theres no underlying variable. You better set the values too!

Parameters:
ds - the containing dataset.
group - the containing group; if null, use rootGroup
shortName - axis name.
dataType - data type
dims - list of dimension names
units - units of coordinates, preferably udunit compatible.
desc - long name.
Method Detail

factory

public static CoordinateAxis factory(NetcdfDataset ncd,
                                     VariableDS vds)
Create a coordinate axis from an existing Variable.

Parameters:
ncd - the containing dataset
vds - an existing Variable in dataset.
Returns:
CoordinateAxis or one of its subclasses (CoordinateAxis1D, CoordinateAxis2D, or CoordinateAxis1DTime).

copyNoCache

public CoordinateAxis copyNoCache()
Make a copy, with an independent cache.

Returns:
copy of this CoordinateAxis

copy

protected Variable copy()
Overrides:
copy in class VariableDS

getAxisType

public AxisType getAxisType()
Get type of axis

Returns:
type of axis, or null if none.

setAxisType

public void setAxisType(AxisType axisType)
Set type of axis, or null if none. Default is none.

Parameters:
axisType - set to this value

getUnitsString

public String getUnitsString()
Description copied from class: Variable
Get the Unit String for the Variable. Looks for the "units" attribute value

Specified by:
getUnitsString in interface Enhancements
Specified by:
getUnitsString in interface VariableIF
Specified by:
getUnitsString in interface VariableSimpleIF
Overrides:
getUnitsString in class VariableDS
Returns:
unit string, or null if not found.

isNumeric

public boolean isNumeric()
Does the axis have numeric values.

Returns:
true if the CoordAxis is numeric, false if its string valued ("nominal").

isContiguous

public boolean isContiguous()
If the edges are contiguous or disjoint Caution: many datasets do not explicitly specify this info, this is often a guess; default is true.

Returns:
true if the edges are contiguous or false if disjoint. Assumed true unless set otherwise.

getPositive

public String getPositive()
Get the direction of increasing values, used only for vertical Axes.

Returns:
POSITIVE_UP, POSITIVE_DOWN, or null if unknown.

setPositive

public void setPositive(String positive)
Set the direction of increasing values, used only for vertical Axes.

Parameters:
positive - POSITIVE_UP, POSITIVE_DOWN, or null if you dont know..

getBoundaryRef

public String getBoundaryRef()
The name of this coordinate axis' boundary variable

Returns:
the name of this coordinate axis' boundary variable, or null if none.

setBoundaryRef

public void setBoundaryRef(String boundaryRef)
Set a reference to a boundary variable.

Parameters:
boundaryRef - the name of a boundary coordinate variable in the same dataset.

getMinValue

public double getMinValue()
The smallest coordinate value. Only call if isNumeric.

Returns:
the minimum coordinate value

getMaxValue

public double getMaxValue()
The largest coordinate value. Only call if isNumeric.

Returns:
the maximum coordinate value

getInfo

public void getInfo(Formatter buf)
Get a string representation

Parameters:
buf - place info here

equals

public boolean equals(Object oo)
Instances which have same content are equal.

Overrides:
equals in class Variable

hashCode

public int hashCode()
Override Object.hashCode() to implement equals.

Overrides:
hashCode in class Variable


Copyright © 1999-2011 UCAR/Unidata. All Rights Reserved.