ucar.nc2.dataset
Class CoordinateAxis1D

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

public class CoordinateAxis1D
extends CoordinateAxis

A 1-dimensional Coordinate Axis. Its values must be monotonic.

If this is char valued, it will have rank 2, otherwise it will have rank 1.

If string or char valued, only getCoordName() can be called.

If the coordinates are regularly spaced, isRegular() is true, and the values are equal to getStart() + i * getIncrement().

This will also set "cell bounds" for this axis. By default, the cell bounds are midway between the coordinates values, and are therefore contiguous, and can be accessed though getCoordEdge(i). The only way the bunds can be set is if the coordinate variable has an attribute "bounds" that points to another variable bounds(ncoords,2). These contain the cell bounds, and must be ascending or descending as the coordinate values are. In this case isContiguous() is true when bounds1(i+1) == bounds2(i) for all i.

Author:
john caron
See Also:
CoordinateAxis.factory(ucar.nc2.dataset.NetcdfDataset, ucar.nc2.dataset.VariableDS)

Nested Class Summary
 
Nested classes/interfaces inherited from class ucar.nc2.dataset.CoordinateAxis
CoordinateAxis.AxisComparator
 
Nested classes/interfaces inherited from class ucar.nc2.Variable
Variable.Cache
 
Field Summary
 
Fields inherited from class ucar.nc2.dataset.CoordinateAxis
axisType, boundaryRef, isContiguous, ncd, 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
CoordinateAxis1D(NetcdfDataset ds, Group group, String shortName, DataType dataType, String dims, String units, String desc)
          Constructor when theres no underlying variable.
CoordinateAxis1D(NetcdfDataset ncd, VariableDS vds)
          Create a 1D coordinate axis from an existing Variable
 
Method Summary
protected  Variable copy()
           
 CoordinateAxis copyNoCache()
          Make a copy, with an independent cache.
 int findCoordElement(double coordVal)
          Given a coordinate position, find what grid element contains it.
 int findCoordElement(double coordVal, int lastIndex)
          Deprecated. use findCoordElement(coordVal)
 int findCoordElementBounded(double coordVal)
          Given a coordinate position, find what grid element contains it, or is closest to it.
 double[] getBound1()
          Get the coordinate bound1 as a double array.
 double[] getBound2()
          Get the coordinate bound1 as a double array.
 double getCoordEdge(int index)
          Get the ith coordinate edge.
 double[] getCoordEdges()
          Get the coordinate edges as a double array.
 double[] getCoordEdges(int i)
          Get the coordinate edges for the ith coordinate.
 String getCoordName(int index)
          The "name" of the ith coordinate.
 double getCoordValue(int index)
          Get the ith coordinate value.
 double[] getCoordValues()
          Get the coordinate values as a double array.
 double getIncrement()
          Get increment value if isRegular()
 double getMaxValue()
          The largest coordinate value.
 double getMinValue()
          The smallest coordinate value.
 List<NamedObject> getNames()
          Get the list of names, to be used for user selection.
 double getStart()
          Get starting value if isRegular()
 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 isInterval()
          If this coordinate has interval values.
 boolean isRegular()
          If true, then value(i) = getStart() + i * getIncrement().
 CoordinateAxis1D section(Range r)
          Create a new CoordinateAxis1D as a section of this CoordinateAxis1D.
 
Methods inherited from class ucar.nc2.dataset.CoordinateAxis
equals, factory, getAxisType, getBoundaryRef, getInfo, getPositive, getUnitsString, hashCode, isNumeric, setAxisType, setBoundaryRef, setPositive
 
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
 

Constructor Detail

CoordinateAxis1D

public CoordinateAxis1D(NetcdfDataset ncd,
                        VariableDS vds)
Create a 1D coordinate axis from an existing Variable

Parameters:
ncd - the containing dataset
vds - wrap this VariableDS, which is not changed.

CoordinateAxis1D

public CoordinateAxis1D(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

section

public CoordinateAxis1D section(Range r)
                         throws InvalidRangeException
Create a new CoordinateAxis1D as a section of this CoordinateAxis1D.

Parameters:
r - the section range
Returns:
a new CoordinateAxis1D as a section of this CoordinateAxis1D
Throws:
InvalidRangeException - if IllegalRange

copy

protected Variable copy()
Overrides:
copy in class CoordinateAxis

copyNoCache

public CoordinateAxis copyNoCache()
Description copied from class: CoordinateAxis
Make a copy, with an independent cache.

Overrides:
copyNoCache in class CoordinateAxis
Returns:
copy of this CoordinateAxis

getCoordName

public String getCoordName(int index)
The "name" of the ith coordinate. If nominal, this is all there is to a coordinate. If numeric, this will return a String representation of the coordinate.

Parameters:
index - which one ?
Returns:
the ith coordinate value as a String

getCoordValue

public double getCoordValue(int index)
Get the ith coordinate value. This is the value of the coordinate axis at which the data value is associated. These must be strictly monotonic.

Parameters:
index - which coordinate. Between 0 and getNumElements()-1 inclusive.
Returns:
coordinate value.
Throws:
UnsupportedOperationException - if !isNumeric()

getMinValue

public double getMinValue()
Description copied from class: CoordinateAxis
The smallest coordinate value. Only call if isNumeric.

Overrides:
getMinValue in class CoordinateAxis
Returns:
the minimum coordinate value

getMaxValue

public double getMaxValue()
Description copied from class: CoordinateAxis
The largest coordinate value. Only call if isNumeric.

Overrides:
getMaxValue in class CoordinateAxis
Returns:
the maximum coordinate value

getCoordEdge

public double getCoordEdge(int index)
Get the ith coordinate edge. Exact only if isContiguous() is true, otherwise use getBound1() and getBound2(). This is the value where the underlying grid element switches from "belonging to" coordinate value i-1 to "belonging to" coordinate value i. In some grids, this may not be well defined, and so should be considered an approximation or a visualization hint.

  Coordinate edges must be strictly monotonic:
    coordEdge(0) < coordValue(0) < coordEdge(1) < coordValue(1) ...
    ... coordEdge(i) < coordValue(i) < coordEdge(i+1) < coordValue(i+1) ...
    ... coordEdge(n-1) < coordValue(n-1) < coordEdge(n)
  

Parameters:
index - which coordinate. Between 0 and getNumElements() inclusive.
Returns:
coordinate edge.
Throws:
UnsupportedOperationException - if !isNumeric()

getCoordValues

public double[] getCoordValues()
Get the coordinate values as a double array.

Returns:
coordinate value.
Throws:
UnsupportedOperationException - if !isNumeric()

getCoordEdges

public double[] getCoordEdges()
Get the coordinate edges as a double array. Exact only if isContiguous() is true, otherwise use getBound1() and getBound2().

Returns:
coordinate edges.
Throws:
UnsupportedOperationException - if !isNumeric()

isContiguous

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

Overrides:
isContiguous in class CoordinateAxis
Returns:
true if the edges are contiguous or false if disjoint. Assumed true unless set otherwise.

isInterval

public boolean isInterval()
If this coordinate has interval values. If so, then one should use getBound1, getBound2, and not getCoordEdges()

Returns:
true if coordinate has interval values

getBound1

public double[] getBound1()
Get the coordinate bound1 as a double array. bound1[i] # coordValue[i] # bound2[i], where # is < if increasing (bound1[i] < bound1[i+1]) else < if decreasing.

Returns:
coordinate bound1.
Throws:
UnsupportedOperationException - if !isNumeric()

getBound2

public double[] getBound2()
Get the coordinate bound1 as a double array. bound1[i] # coordValue[i] # bound2[i], where # is < if increasing (bound1[i] < bound1[i+1]) else < if decreasing.

Returns:
coordinate bound2.
Throws:
UnsupportedOperationException - if !isNumeric()

getCoordEdges

public double[] getCoordEdges(int i)
Get the coordinate edges for the ith coordinate. Can use this for isContiguous() true or false.

Parameters:
i - coordinate index
Returns:
double[2] edges for ith coordinate

findCoordElement

public int findCoordElement(double coordVal)
Given a coordinate position, find what grid element contains it. This means that
 edge[i] <= pos < edge[i+1] (if values are ascending)
 edge[i] > pos >= edge[i+1] (if values are descending)
 

Parameters:
coordVal - position in this coordinate system
Returns:
index of grid point containing it, or -1 if outside grid area

findCoordElementBounded

public int findCoordElementBounded(double coordVal)
Given a coordinate position, find what grid element contains it, or is closest to it.

Parameters:
coordVal - position in this coordinate system
Returns:
index of grid point containing it, or best estimate of closest grid interval.

findCoordElement

public int findCoordElement(double coordVal,
                            int lastIndex)
Deprecated. use findCoordElement(coordVal)


getStart

public double getStart()
Get starting value if isRegular()

Returns:
starting value if isRegular()

getIncrement

public double getIncrement()
Get increment value if isRegular()

Returns:
increment value if isRegular()

isRegular

public boolean isRegular()
If true, then value(i) = getStart() + i * getIncrement().

Returns:
if evenly spaced.

getNames

public List<NamedObject> getNames()
Get the list of names, to be used for user selection. The ith one refers to the ith coordinate.

Returns:
List of ucar.nc2.util.NamedObject, or empty list.


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