public class DGrid extends DConstructor implements ClientIO
DArray
and a set of "Map"
vectors. The Map vectors are one-dimensional arrays corresponding
to each dimension of the central Array
. Using this scheme, a
Grid
can represent, in a rectilinear array, data which is not
in reality rectilinear. An example will help make this clear.
Assume that the following array contains measurements of some real
quantity, conducted at nine different points in space:
A = [ 1 2 3 4 ]
[ 2 4 6 8 ]
[ 3 6 9 12]
To locate this Array
in the real world, we could note the
location of one corner of the grid, and the grid spacing. This would allow
us to calculate the location of any of the other points of the
Array
.
This approach will not work, however, unless the grid spacing is
precisely regular. If the distance between Row 1 and Row 2 is not
the same as the distance between Row 2 and Row 3, the scheme will
break down. The solution is to equip the Array
with two
Map
vectors that define the location of each row or column of
the array:
A = [ 1 2 3 4 ] Row = [ 0 ]
[ 2 4 6 8 ] [ 3 ]
[ 3 6 9 12] [ 8 ]
Column = [ 0 2 8 27]
The real location of the point in the first row and column of the
array is now exactly fixed at (0,0), and the point in the last row
and last column is at (8,27).BaseType
,
DArray
,
Serialized FormDAPNode.CloneMap
Modifier and Type | Field and Description |
---|---|
static int |
ARRAY
The
Array part of the DGrid |
protected DArray |
arrayVar
The Array component of this
DGrid . |
static int |
MAPS
The Map part of the
DGrid |
protected java.util.Vector |
mapVars
The Map component of this
DGrid . |
_nameClear, _nameEncoded, log
Constructor and Description |
---|
DGrid()
Constructs a new
DGrid . |
DGrid(java.lang.String n)
Constructs a new
DGrid with name n . |
Modifier and Type | Method and Description |
---|---|
void |
addVariable(BaseType v,
int part)
Adds a variable to the container.
|
void |
checkSemantics(boolean all)
Checks for internal consistency.
|
DAPNode |
cloneDAG(DAPNode.CloneMap map)
Returns a clone of this
DGrid . |
void |
deserialize(java.io.DataInputStream source,
ServerVersion sv,
StatusUI statusUI)
Reads data from a
DataInputStream . |
int |
elementCount(boolean leaves)
Returns the number of variables contained in this object.
|
void |
externalize(java.io.DataOutputStream sink)
Writes data to a
DataOutputStream . |
DArray |
getArray() |
java.util.Vector<DArrayDimension> |
getArrayDims() |
java.lang.String |
getTypeName()
Returns the OPeNDAP type name of the class instance as a
String . |
BaseType |
getVar(int index)
Gets the indexed variable.
|
int |
getVarCount()
Get the number of contained variables (for use with getVar()
|
BaseType |
getVariable(java.lang.String name)
Returns the named variable.
|
java.util.Enumeration |
getVariables()
Return an Enumeration that can be used to iterate over the members of
a Structure.
|
void |
printDecl(java.io.PrintWriter os,
java.lang.String space,
boolean print_semi,
boolean constrained)
Write the variable's declaration in a C-style syntax.
|
void |
printVal(java.io.PrintWriter os,
java.lang.String space,
boolean print_decl_p)
Prints the value of the variable, with its declaration.
|
void |
printXML(java.io.PrintWriter pw,
java.lang.String pad,
boolean constrained) |
int |
projectedComponents(boolean constrained)
How many prohected components of this Grid object?
|
boolean |
projectionYieldsGrid(boolean constrained)
When projected (using whatever the current constraint provides in the way
of a projection) am I still a Grid?
|
addVariable, someChildHasAttributes
addAttributeAlias, addAttributeContainer, appendAttribute, appendAttribute, appendAttributeContainer, checkSemantics, delAttribute, delAttribute, elementCount, getAttribute, getAttribute, getAttributeNames, getAttributeTable, getLongName, hasAttributes, newPrimitiveVector, printAttributes, printAttributes, printAttributes, printAttributes, printConstraint, printDecl, printDecl, printDecl, printDecl, printDecl, printDecl, printDecl, printVal, printVal, printVal, printXML, printXML, printXML, printXML, setClearName
clone, cloneDAG, getClearName, getEncodedName, getParent, isProject, setEncodedName, setParent, setProject, setProject, setProjected
public static final int ARRAY
Array
part of the DGrid
public static final int MAPS
DGrid
protected DArray arrayVar
DGrid
.protected java.util.Vector mapVars
DGrid
.public DGrid()
DGrid
.public DGrid(java.lang.String n)
DGrid
with name n
.n
- the name of the variable.public java.lang.String getTypeName()
String
.getTypeName
in class BaseType
String
.public int elementCount(boolean leaves)
leaves
to true
.elementCount
in class BaseType
leaves
- If true, count all the simple types in the `tree' of
variables rooted at this variable.public void addVariable(BaseType v, int part)
addVariable
in class DConstructor
v
- the variable to add.part
- the part of the DGrid
to be modified. Allowed
values are ARRAY
or MAPS
.java.lang.IllegalArgumentException
- if an invalid part was given.public BaseType getVariable(java.lang.String name) throws NoSuchVariableException
getVariable
in class DConstructor
name
- the name of the variable.NoSuchVariableException
- if the named variable does not
exist in this container.public BaseType getVar(int index) throws NoSuchVariableException
DArray
and
indexes 1 and higher return the associated map Vector
s.getVar
in class DConstructor
index
- the index of the variable in the Vector
Vars.NoSuchVariableException
- if the named variable does not
exist in this container.public int getVarCount()
getVarCount
in class DConstructor
public java.util.Enumeration getVariables()
getVariables
in class DConstructor
public void checkSemantics(boolean all) throws BadSemanticsException
DGrid
, verify that
the map variables have unique names and match the number of dimensions
of the array variable.checkSemantics
in class BaseType
all
- for complex constructor types, this flag indicates whether to
check the semantics of the member variables, too.BadSemanticsException
- if semantics are bad, explains why.BaseType.checkSemantics(boolean)
public void printDecl(java.io.PrintWriter os, java.lang.String space, boolean print_semi, boolean constrained)
printDecl
in class BaseType
os
- The PrintWriter
on which to print the
declaration.space
- Each line of the declaration will begin with the
characters in this string. Usually used for leading spaces.print_semi
- a boolean value indicating whether to print a
semicolon at the end of the declaration.constrained
- a boolean value indicating whether to print
the declartion dependent on the projection information. This
is only used by Server side code.BaseType.printDecl(PrintWriter, String, boolean)
public void printVal(java.io.PrintWriter os, java.lang.String space, boolean print_decl_p)
printVal
in class BaseType
os
- the PrintWriter
on which to print the value.space
- this value is passed to the printDecl
method,
and controls the leading spaces of the output.print_decl_p
- a boolean value controlling whether the
variable declaration is printed as well as the value.BaseType.printVal(PrintWriter, String, boolean)
public void deserialize(java.io.DataInputStream source, ServerVersion sv, StatusUI statusUI) throws java.io.IOException, DataReadException
DataInputStream
. This method is only used
on the client side of the OPeNDAP client/server connection.deserialize
in interface ClientIO
source
- a DataInputStream
to read from.sv
- the ServerVersion
returned by the server.statusUI
- the StatusUI
object to use for GUI updates
and user cancellation notification (may be null).java.io.EOFException
- if EOF is found before the variable is completely
deserialized.java.io.IOException
- thrown on any other InputStream exception.DataReadException
- if an unexpected value was read.ClientIO.deserialize(DataInputStream, ServerVersion, StatusUI)
public void externalize(java.io.DataOutputStream sink) throws java.io.IOException
DataOutputStream
. This method is used
primarily by GUI clients which need to download OPeNDAP data, manipulate
it, and then re-save it as a binary file.externalize
in interface ClientIO
sink
- a DataOutputStream
to write to.java.io.IOException
- thrown on any OutputStream
exception.public void printXML(java.io.PrintWriter pw, java.lang.String pad, boolean constrained)
printXML
in class DConstructor
pw
- pad
- constrained
- public DArray getArray()
public java.util.Vector<DArrayDimension> getArrayDims()
public int projectedComponents(boolean constrained)
public boolean projectionYieldsGrid(boolean constrained)
public DAPNode cloneDAG(DAPNode.CloneMap map) throws java.lang.CloneNotSupportedException
DGrid
.
See DAPNode.cloneDag()