Class CoordinateAxis

  • All Implemented Interfaces:
    Comparable<VariableSimpleIF>, Iterable<Attribute>, IsMissingEvaluator, AttributeContainer, Enhancements, EnhanceScaleMissingUnsigned, VariableEnhanced, ProxyReader, 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.

    • Field Detail

      • positive

        protected String positive
      • boundaryRef

        protected String boundaryRef
      • isContiguous

        protected boolean isContiguous
    • Constructor Detail

      • CoordinateAxis

        @Deprecated
        protected CoordinateAxis​(NetcdfDataset ncd,
                                 VariableDS vds)
        Deprecated.
        Use CoordinateAxis.builder()
        Create a coordinate axis from an existing Variable. General case.
        Parameters:
        ncd - the containing dataset
        vds - an existing Variable
      • CoordinateAxis

        @Deprecated
        public CoordinateAxis​(NetcdfDataset ds,
                              Group group,
                              String shortName,
                              DataType dataType,
                              String dims,
                              String units,
                              String desc)
        Deprecated.
        Use CoordinateAxis.builder()
        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

        @Deprecated
        public static CoordinateAxis factory​(NetcdfDataset ncd,
                                             VariableDS vds)
        Deprecated.
        Use CoordinateAxis.fromVariableDS()
        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).
      • fromVariableDS

        public static CoordinateAxis.Builder fromVariableDS​(VariableDS.Builder<?> vdsBuilder)
        Create a coordinate axis from an existing Variable.Builder.
        Parameters:
        vdsBuilder - 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
      • getAxisType

        public AxisType getAxisType()
        Get type of axis
        Returns:
        type of axis, or null if none.
      • setAxisType

        @Deprecated
        public void setAxisType​(AxisType axisType)
        Deprecated.
        Use CoordinateAxis.builder()
        Set type of axis, or null if none. Default is none.
        Parameters:
        axisType - set to this value
      • 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.
      • isInterval

        public boolean isInterval()
        An interval coordinate consists of two numbers, bound1 and bound2. The coordinate value must lie between them, but otherwise is somewhat arbitrary. If not interval, then it has one number, the coordinate value.
        Returns:
        true if its an interval coordinate.
      • isIndependentCoordinate

        public boolean isIndependentCoordinate()
      • 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

        @Deprecated
        public void setPositive​(String positive)
        Deprecated.
        Use CoordinateAxis.builder()
        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

        @Deprecated
        public void setBoundaryRef​(String boundaryRef)
        Deprecated.
        Use CoordinateAxis.builder()
        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
      • getCalendarFromAttribute

        public Calendar getCalendarFromAttribute()
      • builder

        public static CoordinateAxis.Builder<?> builder()
        Get Builder for this class that allows subclassing.
        See Also:
        "https://community.oracle.com/blogs/emcmanus/2010/10/24/using-builder-pattern-subclasses"