Package ucar.nc2
Class Structure
java.lang.Object
ucar.nc2.CDMNode
ucar.nc2.Variable
ucar.nc2.Structure
- All Implemented Interfaces:
Comparable<VariableSimpleIF>,Iterable<Attribute>,AttributeContainer,ProxyReader,VariableSimpleIF
- Direct Known Subclasses:
Sequence,StructureDS
A Structure is a type of Variable that contains other Variables, like a struct in C.
A Structure can be scalar or multidimensional.
A call to structure.read() will read all of the data in a Structure, including nested structures, and returns an Array of StructureData, with all of the data in memory. If there is a nested sequence, the sequence data may be read into memory all at once, or it may be read in increments as the iteration proceeds.
Generally, the programmer can assume that the data in one Structure are stored together, so that it is efficient to read an entire Structure, and then access the Variable data through the Arrays in the StructureData.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classStructure.Builder<T extends Structure.Builder<T>>A builder of Structures. -
Field Summary
Fields inherited from class ucar.nc2.Variable
defaultCoordsSizeToCache, defaultSizeToCache, permitCaching -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionDeprecated.Use Structure.builder()static Structure.Builder<?>builder()Get Builder for this class that allows subclassing.voidDeprecated.will be private in ver6, where Structure will be immutable.findVariable(String shortName) Find the Variable member with the specified (short) name.intGet the size of one element of the Structure.Get String with name and attributes.intGet the number of variables contained directly in this Structure.Iterator over all the data in a Structure.getStructureIterator(int bufferSize) Get an efficient iterator over all the data in the Structure.com.google.common.collect.ImmutableList<String>Get the (short) names of the variables contained directly in this Structure.com.google.common.collect.ImmutableList<Variable>Get the variables contained directly in this Structure.booleanCaching is not allowedbooleanisSubset()Find if this was created from a subset() method.Create a StructureMembers object that describes this Structure.Deprecated.use readStructure(0)readStructure(int index) Use this when this is a one dimensional array of Structures, or you are doing the index calculation yourself for a multidimension array.readStructure(int start, int count) For rank 1 array of Structures, read count Structures and return the data as an ArrayStructure.booleanDeprecated.Use Structure.builder()booleanreplaceMemberVariable(Variable newVar) Deprecated.Use Structure.builder()Create a subset of the Structure consisting only of the one member variableCreate a subset of the Structure consisting only of the given member variablesvoidsetCaching(boolean caching) Caching is not allowedDeprecated.Use Structure.builder()voidsetMemberVariables(List<Variable> vars) Deprecated.Use Structure.builder()voidsetParentGroup(Group group) Deprecated.Use Structure.builder()Turn into a mutable Builder.Methods inherited from class ucar.nc2.Variable
addAll, addAttribute, attributes, compareTo, createNewCache, equals, findAttribute, findAttributeDouble, findAttributeIgnoreCase, findAttributeInteger, findAttributeString, findDimensionIndex, getAttributes, getDAPName, getDAPName, getDatasetLocation, getDataType, getDescription, getDimension, getDimensions, getDimensionsAll, getDimensionsString, getEnumTypedef, getFileTypeId, getFullName, getNameAndDimensions, getNameAndDimensions, getNameAndDimensions, getNameAndDimensions, getNameAndDimensions, getNameAndDimensions, getNetcdfFile, getParentGroup, getParentGroupOrRoot, getParentStructure, getProxyReader, getRanges, getRank, getShape, getShape, getShapeAll, getShapeAsSection, getSize, getSizeToCache, getSPobject, getUnitsString, hasCachedData, hashCode, invalidateCache, isCoordinateVariable, isEmpty, isImmutable, isMemberOfStructure, isMetadata, isScalar, isUnknownLength, isUnlimited, isVariableLength, lookupEnumString, read, read, read, read, read, readScalarByte, readScalarDouble, readScalarFloat, readScalarInt, readScalarLong, readScalarShort, readScalarString, readToByteChannel, readToStream, reallyRead, reallyRead, reduce, remove, removeAttribute, removeAttributeIgnoreCase, resetDimensions, resetShape, section, section, setCachedData, setCachedData, setDataType, setDimension, setDimensions, setDimensions, setDimensionsAnonymous, setElementSize, setEnumTypedef, setIsScalar, setName, setProxyReader, setSizeToCache, setSPobject, setValues, setValues, slice, toString, toStringDebug, writeCDLMethods inherited from class ucar.nc2.CDMNode
annotate, annotation, getDODSName, getFullNameEscaped, getGroup, getImmutable, getName, getShortName, getSort, localhash, setDODSName, setParentStructure, setShortName, setSort, unwrapMethods inherited from interface ucar.nc2.AttributeContainer
findAttValueIgnoreCase, getName, hasAttribute, hasAttributeIgnoreCase, iteratorMethods inherited from interface java.lang.Iterable
forEach, spliteratorMethods inherited from interface ucar.nc2.VariableSimpleIF
getName, getShortName
-
Constructor Details
-
Structure
Deprecated.Use Structure.builder()Create a Structure "from scratch". Also must call setDimensions().- Parameters:
ncfile- the containing NetcdfFile.group- the containing group; if null, use rootGroupparent- parent Structure, may be nullshortName- variable shortName, must be unique within the Group
-
Structure
@Deprecated public Structure(NetcdfFile ncfile, Group group, Structure parent, String shortName, List<Dimension> dimList) Deprecated.Use Structure.builder()Create a Structure "from scratch".- Parameters:
ncfile- the containing NetcdfFile.group- the containing group; if null, use rootGroupparent- parent Structure, may be nullshortName- variable shortName, must be unique within the GroupdimList- list of Dimensions
-
-
Method Details
-
select
Create a subset of the Structure consisting only of the given member variables- Parameters:
memberNames- list of Variable names, already a member- Returns:
- Structure containing just those members
-
select
Create a subset of the Structure consisting only of the one member variable- Parameters:
varName- name of member Variable- Returns:
- containing just that member
-
isSubset
public boolean isSubset()Find if this was created from a subset() method.- Returns:
- true if this is a subset
-
isCaching
public boolean isCaching()Caching is not allowed -
setCaching
public void setCaching(boolean caching) Caching is not allowed- Overrides:
setCachingin classVariable- Parameters:
caching- set if caching.
-
addMemberVariable
Deprecated.Use Structure.builder()Add a member variable- Parameters:
v- add this variable as a member of this structure- Returns:
- the added variable
-
setMemberVariables
Deprecated.Use Structure.builder()Set the list of member variables.- Parameters:
vars- this is the list of member variables
-
removeMemberVariable
Deprecated.Use Structure.builder()Remove a Variable : uses the Variable name to find it.- Parameters:
v- remove this variable as a member of this structure- Returns:
- true if was found and removed
-
replaceMemberVariable
Deprecated.Use Structure.builder()Replace a Variable with another that has the same name : uses the variable name to find it. If old Var is not found, just add the new one- Parameters:
newVar- add this variable as a member of this structure- Returns:
- true if was found and replaced
-
setParentGroup
Deprecated.Use Structure.builder()Set the parent group of this Structure, and all member variables.- Overrides:
setParentGroupin classVariable- Parameters:
group- set to this value
-
setImmutable
Deprecated.Use Structure.builder()Description copied from class:VariableMake this immutable.- Overrides:
setImmutablein classVariable- Returns:
- this
-
getVariables
Get the variables contained directly in this Structure. -
getNumberOfMemberVariables
public int getNumberOfMemberVariables()Get the number of variables contained directly in this Structure. -
getVariableNames
Get the (short) names of the variables contained directly in this Structure. -
findVariable
Find the Variable member with the specified (short) name.- Parameters:
shortName- name of the member variable.- Returns:
- the Variable member with the specified (short) name, or null if not found.
-
makeStructureMembers
Create a StructureMembers object that describes this Structure. CAUTION: Do not use for iterating over a StructureData or ArrayStructure - get the StructureMembers object directly from the StructureData or ArrayStructure.- Returns:
- a StructureMembers object that describes this Structure.
-
getElementSize
public int getElementSize()Get the size of one element of the Structure.- Overrides:
getElementSizein classVariable- Returns:
- size (in bytes)
-
calcElementSize
Deprecated.will be private in ver6, where Structure will be immutable.Force recalculation of size of one element of this structure - equals the sum of sizes of its members. This is used only by low level classes like IOSPs. -
readStructure
Deprecated.use readStructure(0)Use this when this is a scalar Structure. Its the same as read(), but it extracts the single StructureData out of the Array.- Returns:
- StructureData for a scalar
- Throws:
IOException- on read error
-
readStructure
Use this when this is a one dimensional array of Structures, or you are doing the index calculation yourself for a multidimension array. This will read only the ith structure, and return the data as a StructureData object.- Parameters:
index- index into 1D array- Returns:
- ith StructureData
- Throws:
IOException- on read errorInvalidRangeException- if index out of range
-
readStructure
For rank 1 array of Structures, read count Structures and return the data as an ArrayStructure. Use only when this is a one dimensional array of Structures.- Parameters:
start- start at this indexcount- return this many StructureData- Returns:
- the StructureData recordsfrom start to start+count-1
- Throws:
IOException- on read errorInvalidRangeException- if start, count out of range
-
getStructureIterator
Iterator over all the data in a Structure.StructureDataIterator ii = structVariable.getStructureIterator(); while (ii.hasNext()) { StructureData sdata = ii.next(); }- Returns:
- StructureDataIterator over type StructureData
- Throws:
IOException- on read error- See Also:
-
getStructureIterator
Get an efficient iterator over all the data in the Structure. This is the efficient way to get all the data, it can be much faster than reading one record at a time, and is optimized for large datasets. This is accomplished by buffering bufferSize amount of data at once.Example: StructureDataIterator ii = structVariable.getStructureIterator(100 * 1000); while (ii.hasNext()) { StructureData sdata = ii.next(); }- Parameters:
bufferSize- size in bytes to buffer, set < 0 to use default size- Returns:
- StructureDataIterator over type StructureData
- Throws:
IOException- on read error
-
getNameAndAttributes
Get String with name and attributes. Used in short descriptions like tooltips.- Returns:
- name and attributes String
-
toBuilder
Turn into a mutable Builder. Can use toBuilder().build() to copy. -
builder
Get Builder for this class that allows subclassing.- See Also:
-
- "https://community.oracle.com/blogs/emcmanus/2010/10/24/using-builder-pattern-subclasses"
-