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:
Enhancements, EnhanceScaleMissing, VariableEnhanced, VariableIF, VariableSimpleIF

public class CoordinateAxis1D
extends CoordinateAxis

A 1-dimensional Coordinate Axis. Its values must be monotonic. If this is string valued, it will have rank 2, otherwise it will have rank 1.

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

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

Author:
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
 
Field Summary
 
Fields inherited from class ucar.nc2.dataset.CoordinateAxis
POSITIVE_DOWN, POSITIVE_UP
 
Fields inherited from class ucar.nc2.Variable
defaultSizeToCache
 
Constructor Summary
CoordinateAxis1D(NetcdfDataset ds, Group group, java.lang.String shortName, DataType dataType, java.lang.String dims, java.lang.String units, java.lang.String desc)
          Constructor when theres no underlying variable.
CoordinateAxis1D(VariableDS vds)
          create a 1D coordinate axis from an existing Variable
 
Method Summary
 int findCoordElement(double pos)
          Given a coordinate position, find what grid element contains it.
 int findCoordElement(double pos, int lastIndex)
          Given a coordinate position, find what grid element contains it.
 int findCoordElementBounded(double pos)
          Given a coordinate position, find what grid element contains it, but always return valid index.
 int findCoordElementBounded(double pos, int lastIndex)
          Given a coordinate position, find what grid element contains it, but always return valid index.
 double getCoordEdge(int index)
          Get the ith coordinate edge.
 double[] getCoordEdges()
          Get the coordinate edges as a double array; only use this if isContiguous() is true.
 double[] getCoordEdges(int i)
          Get the coordinate edges for the ith coordinate.
 java.lang.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()
          Get the minimum coordinate value
 double getMinValue()
          Get the maximum coordinate value
 double getStart()
          Get Starting value if isRegular()
 boolean isRegular()
          If evenly spaced.
 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, isContiguous, isNumeric, setAxisType, setBoundaryRef, setContiguous, setPositive
 
Methods inherited from class ucar.nc2.dataset.VariableDS
addCoordinateSystem, convertScaleOffsetMissing, convertScaleOffsetMissing, convertScaleOffsetMissing, convertScaleOffsetMissing, convertScaleOffsetMissing, enhance, getCoordinateSystems, getDescription, getOriginalDataType, getOriginalVariable, getUnitString, getValidMax, getValidMin, hasFillValue, hasInvalidData, hasMissing, hasMissingValue, hasScaleOffset, isEnhanced, isFillValue, isInvalidData, isMissing, isMissingValue, section, setAggregation, setFillValueIsMissing, setInvalidDataIsMissing, setMissingDataIsMissing, setUnitsString, setUseNaNs
 
Methods inherited from class ucar.nc2.Variable
addAttribute, findAttribute, findAttributeIgnoreCase, findDimensionIndex, getAttributes, getCoordinateDimension, getDataType, getDimension, getDimensions, getDimensionsAll, getDimensionsString, getElementSize, getIOVar, getName, getNameAndDimensions, getParentGroup, getParentStructure, getRanges, getRangesAll, getRank, getShape, getShortName, getSize, getSizeToCache, getSPobject, hasCachedData, invalidateCache, isCaching, isMemberOfStructure, isMetadata, isScalar, isSection, isUnknownLength, isUnlimited, isUnsigned, isVariableLength, read, read, read, read, readAllStructures, readAllStructuresSpec, readScalarByte, readScalarDouble, readScalarFloat, readScalarInt, readScalarLong, readScalarShort, readScalarString, remove, replaceDimension, setCachedData, setCaching, setDataType, setDimension, setDimensions, setDimensions, setDimensionsAnonymous, setElementSize, setIOVar, setIsCoordinateAxis, setName, setParentGroup, setParentStructure, setSizeToCache, setSPobject, toString, toStringDebug, writeCDL
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ucar.nc2.VariableSimpleIF
findAttributeIgnoreCase, getAttributes, getDataType, getName, getRank, getShape, getShortName
 
Methods inherited from interface ucar.nc2.VariableIF
findAttribute, findAttributeIgnoreCase, findDimensionIndex, getAttributes, getCoordinateDimension, getDataType, getDimension, getDimensions, getDimensionsAll, getElementSize, getName, getNameAndDimensions, getParentGroup, getParentStructure, getRanges, getRank, getShape, getShortName, getSize, isMemberOfStructure, isMetadata, isScalar, isSection, isUnlimited, isUnsigned, isVariableLength, read, read, read, read, readAllStructures, readAllStructuresSpec, readScalarByte, readScalarDouble, readScalarFloat, readScalarInt, readScalarLong, readScalarShort, readScalarString, toStringDebug
 

Constructor Detail

CoordinateAxis1D

public CoordinateAxis1D(VariableDS vds)
create a 1D coordinate axis from an existing Variable


CoordinateAxis1D

public CoordinateAxis1D(NetcdfDataset ds,
                        Group group,
                        java.lang.String shortName,
                        DataType dataType,
                        java.lang.String dims,
                        java.lang.String units,
                        java.lang.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

getCoordName

public java.lang.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.


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:
java.lang.UnsupportedOperationException - if !isNumeric()

getMinValue

public double getMinValue()
Description copied from class: CoordinateAxis
Get the maximum coordinate value

Overrides:
getMinValue in class CoordinateAxis

getMaxValue

public double getMaxValue()
Description copied from class: CoordinateAxis
Get the minimum coordinate value

Overrides:
getMaxValue in class CoordinateAxis

getCoordEdge

public double getCoordEdge(int index)
Get the ith coordinate edge. 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:
java.lang.UnsupportedOperationException - if !isNumeric()

getCoordValues

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

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

getCoordEdges

public double[] getCoordEdges()
Get the coordinate edges as a double array; only use this if isContiguous() is true.

Returns:
coordinate edges.
Throws:
java.lang.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 pos)
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:
pos - position in this coordinate system
Returns:
index of grid point containing it, or -1 if outside grid area

findCoordElement

public int findCoordElement(double pos,
                            int lastIndex)
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:
pos - position in this coordinate system
lastIndex - last position we looked for, or -1 if none
Returns:
index of grid point containing it, or -1 if outside grid area

findCoordElementBounded

public int findCoordElementBounded(double pos)
Given a coordinate position, find what grid element contains it, but always return valid index.

Parameters:
pos - position in this coordinate system
Returns:
index of grid point containing it

findCoordElementBounded

public int findCoordElementBounded(double pos,
                                   int lastIndex)
Given a coordinate position, find what grid element contains it, but always return valid index. This means that
      if values are ascending:
        pos < edge[0] return 0
        edge[n] < pos return n-1
        edge[i] <= pos < edge[i+1] return i

      if values are descending:
        pos > edge[0] return 0
        edge[n] > pos return n-1
        edge[i] > pos >= edge[i+1] return i
    

Parameters:
pos - position in this coordinate system
lastIndex - last position we looked for, or -1 if none
Returns:
index of grid point containing it

getStart

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


getIncrement

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


isRegular

public boolean isRegular()
If evenly spaced. Then value(i) = getStart() + i * getIncrement().