public class Variable extends ucar.nc2.CDMNode implements VariableSimpleIF, ProxyReader, AttributeContainer
Immutable if setImmutable() was called. TODO Variable will be immutable in 6. TODO Variable will not implement AttributeContainer in 6, use Variable.attributes(). TODO Variable will not extend CDMNode in 6.
| Modifier and Type | Class and Description | 
|---|---|
| static class  | Variable.Builder<T extends Variable.Builder<T>>A builder for Variables. | 
| Modifier and Type | Field and Description | 
|---|---|
| static int | defaultCoordsSizeToCache | 
| static int | defaultSizeToCache | 
| static boolean | permitCachingGlobally permit or prohibit caching. | 
| Modifier and Type | Method and Description | 
|---|---|
| AttributeContainer | attributes()The attributes contained by this Variable. | 
| static Variable.Builder<?> | builder()Get Builder for this class that allows subclassing. | 
| int | compareTo(VariableSimpleIF o)Sort by name | 
| void | createNewCache()Create a new data cache, use this when you dont want to share the cache. | 
| boolean | equals(Object oo)Instances which have same content are equal. | 
| Attribute | findAttribute(String name)Find the attribute by name, return null if not exist | 
| String | findAttributeString(String attName,
                   String defaultValue)Find a String-valued Attribute by name (ignore case), return the String value of the Attribute. | 
| int | findDimensionIndex(String name)Find the index of the named Dimension in this Variable. | 
| String | getDatasetLocation()The location of the dataset this belongs to. | 
| DataType | getDataType()Get the data type of the Variable. | 
| String | getDescription()Get the description of the Variable. | 
| Dimension | getDimension(int i)Get the ith dimension. | 
| com.google.common.collect.ImmutableList<Dimension> | getDimensions()Get the list of dimensions used by this variable. | 
| String | getDimensionsString()Get the list of Dimension names, space delineated. | 
| int | getElementSize()Get the number of bytes for one element of this Variable. | 
| EnumTypedef | getEnumTypedef()Get the EnumTypedef, only use if getDataType.isEnum() | 
| String | getFileTypeId() | 
| String | getFullName()Get the full name of this Variable. | 
| String | getNameAndDimensions()Get the display name plus the dimensions, eg 'float name(dim1, dim2)' | 
| String | getNameAndDimensions(boolean strict)Get the display name plus the dimensions, eg 'float name(dim1, dim2)' | 
| void | getNameAndDimensions(Formatter buf,
                    boolean useFullName,
                    boolean strict)Add display name plus the dimensions to the Formatter | 
| NetcdfFile | getNetcdfFile()Get the NetcdfFile that this variable is contained in. | 
| Group | getParentGroup()Get its containing Group. | 
| Structure | getParentStructure()Get its parent structure, or null if not in structure
 Not deprecated. | 
| com.google.common.collect.ImmutableList<Range> | getRanges()Get shape as an List of Range objects. | 
| int | getRank()Get the number of dimensions of the Variable, aka the rank. | 
| int[] | getShape()Get the shape: length of Variable in each dimension. | 
| int | getShape(int index)Get the size of the ith dimension | 
| Section | getShapeAsSection()Get shape as a Section object. | 
| long | getSize()Get the total number of elements in the Variable. | 
| int | getSizeToCache()If total data size is less than SizeToCache in bytes, then cache. | 
| Object | getSPobject()Get immutable service provider opaque object. | 
| String | getUnitsString()Get the Unit String for the Variable. | 
| boolean | hasCachedData()Has data been read and cached. | 
| int | hashCode()Override Object.hashCode() to implement equals. | 
| boolean | isCaching()Will this Variable be cached when read. | 
| boolean | isCoordinateVariable()Calculate if this is a classic coordinate variable: has same name as its first dimension. | 
| boolean | isMemberOfStructure()Test for presence of parent Structure. | 
| boolean | isMetadata()Is this variable metadata?. | 
| boolean | isScalar()Whether this is a scalar Variable (rank == 0). | 
| boolean | isUnlimited()Can this variable's size grow?. | 
| boolean | isVariableLength()Does this variable have a variable length dimension?
 If so, it has as one of its dimensions Dimension.VLEN. | 
| String | lookupEnumString(int val)Lookup the enum string for this value. | 
| Array | read()Read all the data for this Variable and return a memory resident Array. | 
| Array | read(int[] origin,
    int[] shape)Read a section of the data for this Variable and return a memory resident Array. | 
| Array | read(List<Range> ranges)Read a section of the data for this Variable from the netcdf file and return a memory resident Array. | 
| Array | read(Section section)Read a section of the data for this Variable from the netcdf file and return a memory resident Array. | 
| Array | read(String sectionSpec)Read data section specified by a "section selector", and return a memory resident Array. | 
| byte | readScalarByte()Get the value as a byte for a scalar Variable. | 
| double | readScalarDouble()Get the value as a double for a scalar Variable. | 
| float | readScalarFloat()Get the value as a float for a scalar Variable. | 
| int | readScalarInt()Get the value as a int for a scalar Variable. | 
| long | readScalarLong()Get the value as a long for a scalar Variable. | 
| short | readScalarShort()Get the value as a short for a scalar Variable. | 
| String | readScalarString()Get the value as a String for a scalar Variable. | 
| long | readToStream(Section section,
            OutputStream out)Read variable data to a stream. | 
| Array | reallyRead(Variable client,
          CancelTask cancelTask)public by accident, do not call directly. | 
| Array | reallyRead(Variable client,
          Section section,
          CancelTask cancelTask)public by accident, do not call directly. | 
| Variable | reduce(List<Dimension> dims)Create a new Variable that is a logical view of this Variable, by
 eliminating the specified dimension(s) of length 1. | 
| Variable | section(List<Range> ranges)Create a new Variable that is a logical subsection of this Variable. | 
| Variable | section(Section subsection)Create a new Variable that is a logical subsection of this Variable. | 
| Variable | slice(int dim,
     int value)Create a new Variable that is a logical slice of this Variable, by
 fixing the specified dimension at the specified index value. | 
| Variable.Builder<?> | toBuilder()Turn into a mutable Builder. | 
| String | toString() | 
| String | toStringDebug()String representation of Variable and its attributes. | 
getShortNamefilter, findAttributeDouble, findAttributeIgnoreCase, findAttributeInteger, getName, hasAttribute, hasAttributeIgnoreCase, isEmpty, iteratorforEach, spliteratorpublic static int defaultCoordsSizeToCache
public static int defaultSizeToCache
public static boolean permitCaching
 A true value for this field does not indicate whether a Variable
 is caching, only that it's permitted to cache.
public AttributeContainer attributes()
attributes in interface VariableSimpleIFpublic static Variable.Builder<?> builder()
public int compareTo(VariableSimpleIF o)
compareTo in interface Comparable<VariableSimpleIF>public void createNewCache()
public boolean equals(Object oo)
@Nullable public Attribute findAttribute(String name)
findAttribute in interface AttributeContainerpublic String findAttributeString(String attName, String defaultValue)
findAttributeString in interface AttributeContainerpublic int findDimensionIndex(String name)
name - the name of the dimensionpublic String getDatasetLocation()
public DataType getDataType()
getDataType in interface VariableSimpleIFpublic String getDescription()
getDescription in interface VariableSimpleIFpublic Dimension getDimension(int i)
i - index of the dimension.public com.google.common.collect.ImmutableList<Dimension> getDimensions()
getDimensions in interface VariableSimpleIFpublic String getDimensionsString()
public int getElementSize()
public EnumTypedef getEnumTypedef()
public String getFullName()
getFullName in interface VariableSimpleIFgetFullName in class ucar.nc2.CDMNodepublic String getNameAndDimensions()
public String getNameAndDimensions(boolean strict)
strict - strictly comply with ncgen syntax, with name escaping. otherwise, get extra info, no escapingpublic void getNameAndDimensions(Formatter buf, boolean useFullName, boolean strict)
buf - add info to thisuseFullName - use full name else short name. strict = true implies short namestrict - strictly comply with ncgen syntax, with name escaping. otherwise, get extra info, no escaping@Nullable public NetcdfFile getNetcdfFile()
public Group getParentGroup()
getParentGroup in class ucar.nc2.CDMNode@Nullable public Structure getParentStructure()
getParentStructure in class ucar.nc2.CDMNodepublic com.google.common.collect.ImmutableList<Range> getRanges()
public int getRank()
getRank in interface VariableSimpleIFpublic int[] getShape()
getShape in interface VariableSimpleIFpublic int getShape(int index)
index - which dimensionpublic Section getShapeAsSection()
public long getSize()
public int getSizeToCache()
public Object getSPobject()
public String getUnitsString()
getUnitsString in interface VariableSimpleIFpublic boolean hasCachedData()
public int hashCode()
public boolean isCaching()
 This will always return false if caching isn't permitted.
public boolean isCoordinateVariable()
public boolean isMemberOfStructure()
isMemberOfStructure in class ucar.nc2.CDMNodepublic boolean isMetadata()
public boolean isScalar()
public boolean isUnlimited()
public boolean isVariableLength()
@Nullable public String lookupEnumString(int val)
val - the integer value of this enumpublic Array read() throws IOException
IOExceptionpublic Array read(int[] origin, int[] shape) throws IOException, InvalidRangeException
assert(origin[ii] + shape[ii]*stride[ii] <= Variable.shape[ii]); 
 origin - int array specifying the starting index. If null, assume all zeroes.shape - int array specifying the extents in each dimension.
        This becomes the shape of the returned Array.IOExceptionInvalidRangeExceptionpublic Array read(List<Range> ranges) throws IOException, InvalidRangeException
ranges - list of Range specifying the section of data to read.IOException - if errorInvalidRangeException - if ranges is invalidread(Section)public Array read(Section section) throws IOException, InvalidRangeException
section - list of Range specifying the section of data to read.
        Must be null or same rank as variable.
        If list is null, assume all data.
        Each Range corresponds to a Dimension. If the Range object is null, it means use the entire dimension.IOException - if errorInvalidRangeException - if section is invalidpublic Array read(String sectionSpec) throws IOException, InvalidRangeException
sectionSpec - specification string, eg "1:2,10,:,1:100:10". May optionally have ().IOExceptionInvalidRangeExceptionfor sectionSpec syntaxpublic byte readScalarByte()
                    throws IOException
IOException - if theres an IO ErrorUnsupportedOperationException - if not a scalar Variable or one-dimensional of length 1.ForbiddenConversionException - if data type not convertible to bytepublic double readScalarDouble()
                        throws IOException
IOException - if theres an IO ErrorUnsupportedOperationException - if not a scalar Variable or one-dimensional of length 1.ForbiddenConversionException - if data type not convertible to doublepublic float readScalarFloat()
                      throws IOException
IOException - if theres an IO ErrorUnsupportedOperationException - if not a scalar Variable or one-dimensional of length 1.ForbiddenConversionException - if data type not convertible to floatpublic int readScalarInt()
                  throws IOException
IOException - if theres an IO ErrorUnsupportedOperationException - if not a scalar Variable or one-dimensional of length 1.ForbiddenConversionException - if data type not convertible to intpublic long readScalarLong()
                    throws IOException
IOException - if theres an IO ErrorUnsupportedOperationException - if not a scalar VariableForbiddenConversionException - if data type not convertible to longpublic short readScalarShort()
                      throws IOException
IOException - if theres an IO ErrorUnsupportedOperationException - if not a scalar Variable or one-dimensional of length 1.ForbiddenConversionException - if data type not convertible to shortpublic String readScalarString() throws IOException
IOException - if theres an IO ErrorUnsupportedOperationException - if not a scalar or one-dimensional.ClassCastException - if data type not DataType.STRING or DataType.CHAR.public long readToStream(Section section, OutputStream out) throws IOException, InvalidRangeException
IOExceptionInvalidRangeExceptionpublic Array reallyRead(Variable client, CancelTask cancelTask) throws IOException
reallyRead in interface ProxyReaderclient - the client VariablecancelTask - user may cancelIOException - on errorpublic Array reallyRead(Variable client, Section section, CancelTask cancelTask) throws IOException, InvalidRangeException
reallyRead in interface ProxyReaderclient - the client Variablesection - the section of data to read.cancelTask - user may cancelIOException - on errorInvalidRangeException - if section has incorrect rank or illegal shape.public Variable reduce(List<Dimension> dims)
dims - list of dimensions of length 1 to reducepublic Variable section(List<Range> ranges) throws InvalidRangeException
ranges - List of type ucar.ma2.Range, with size equal to getRank().
        Each Range corresponds to a Dimension, and specifies the section of data to read in that Dimension.
        A Range object may be null, which means use the entire dimension.InvalidRangeException - if shape and range list dont matchpublic Variable section(Section subsection) throws InvalidRangeException
subsection - Section of this variable.
        Each Range in the section corresponds to a Dimension, and specifies the section of data to read in that
        Dimension.
        A Range object may be null, which means use the entire dimension.InvalidRangeException - if section not compatible with shapepublic Variable slice(int dim, int value) throws InvalidRangeException
dim - which dimension to fixvalue - at what index valueInvalidRangeException - if dimension or value is illegalpublic Variable.Builder<?> toBuilder()
public String toStringDebug()