org.opengis.coverage.grid
Class SequenceType

Object
  extended by CodeList<SequenceType>
      extended by SequenceType
All Implemented Interfaces:
Serializable, Comparable<SequenceType>

@UML(identifier="CV_SequenceType",
     specification=ISO_19123)
public class SequenceType
extends CodeList<SequenceType>

Specifies the order in which attribute value records are assigned to grid points. There are several sequencing rules based on incrementing - or decrementing - grid coordinate values in a simple fashion. More complex space filling curves can also be used. Space filling curves are generated by progressively subdividing a space in a regular way and connecting the elements resulting from each subdivision according to some rule. They can be used to generate a grid, but they can also be used to assign an ordering to the grid points or grid cells in a separately defined grid. They lend themselves more readily than simple incrementing methods to sequencing in grids that have irregular shapes or cells of variable size.

In every case, ordering of the grid cells starts by incrementing coordinates along one grid axis. At some point in the process, it begins to increment coordinates along a second grid axis, then a third, and so on until it has progressed in the direction of each of the grid axes. The attribute scan direction provides a list of signed axis names that identifies the order in which scanning takes place. The list may include an additional element to support interleaving of feature attribute values.

Ordering is continuous if consecutive pairs of grid cells in the sequence are maximally connected. It is semicontinuous if consecutive pairs of grid cells are connected, but less than maximally connected, and discontinuous if consecutive pairs of cells are not connected.

Example: In the two dimensional case, a cell is connected to the 8 cells with which it shares at least one corner. It is maximally connected to the 4 cells with which it shares an edge and two corners. In the three dimensional case, a cell is maximally connected to those cells with which it shares a face.

See Also:
Serialized Form

Field Summary
static SequenceType BOUSTROPHEDONIC
          A variant of linear scanning, in which the direction of the scan is reversed on alternate grid lines.
static SequenceType CANTOR_DIAGONAL
          Cantor-diagonal scanning, also called zigzag scanning, orders the grid points in alternating directions along parallel diagonals of the grid.
static SequenceType HILBERT
          Ordering based on a space-filling curve generated by progressively subdividing a space into quadrants.
static SequenceType LINEAR
          Feature attribute value records are assigned to consecutive grid points along a single grid line parallel to the first grid axis listed in scan direction.
static SequenceType MORTON
          Ordering based on a space-filling curve generated by progressively subdividing a space into quadrants and ordering the quadrants in a Z pattern.
static SequenceType SPIRAL
          Spiral scanning can begin either at the centre of the grid (outward spiral), or at a corner (inward spiral).
 
Method Summary
 CodeList[] family()
          Returns the list of enumerations of the same kind than this enum.
static SequenceType valueOf(String code)
          Returns the SequenceType that matches the given string, or returns a new one if none match it.
static SequenceType[] values()
          Returns the list of SequenceTypes.
 
Methods inherited from class CodeList
compareTo, name, ordinal, readResolve, toString
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

LINEAR

@UML(identifier="Linear scanning",
     obligation=CONDITIONAL,
     specification=ISO_19123)
public static final SequenceType LINEAR
Feature attribute value records are assigned to consecutive grid points along a single grid line parallel to the first grid axis listed in scan direction. Once scanning of that row is complete, assignment of feature attribute value records steps to another grid line parallel to the first, and continues to step from grid line to grid line in a direction parallel to the second axis. If the grid is 3-dimensional, the sequencing process completes the assignment of feature attribute value records to all grid points in one plane, then steps to another plane, then continues stepping from plane to plane in a direction parallel to the third axis of the grid. The process can be extended to any number of axes. Linear scanning is continuous only along a single grid line.


BOUSTROPHEDONIC

@UML(identifier="Boustrophedonic scanning",
     obligation=CONDITIONAL,
     specification=ISO_19123)
public static final SequenceType BOUSTROPHEDONIC
A variant of linear scanning, in which the direction of the scan is reversed on alternate grid lines. In the case of a 3-dimensional grid, it will also be reversed in alternate planes. Boustrophedonic scanning is continuous.

NOTE: Boustrophedonic scanning is also known as byte-offset scanning.


CANTOR_DIAGONAL

@UML(identifier="Cantor-diagonal scanning",
     obligation=CONDITIONAL,
     specification=ISO_19123)
public static final SequenceType CANTOR_DIAGONAL
Cantor-diagonal scanning, also called zigzag scanning, orders the grid points in alternating directions along parallel diagonals of the grid. The scan pattern is affected by the direction of first step. Like linear scanning, Cantor-diagonal scanning can be extended to grids of three or more dimensions by repeating the scan pattern in consecutive planes. Cantor-diagonal scanning is semi-continuous within a single plane.


SPIRAL

@UML(identifier="Spiral scanning",
     obligation=CONDITIONAL,
     specification=ISO_19123)
public static final SequenceType SPIRAL
Spiral scanning can begin either at the centre of the grid (outward spiral), or at a corner (inward spiral). Like linear or Cantor-diagonal scanning, spiral scanning can be extended to grids of three or more dimensions by repeating the scan pattern in consecutive planes. Spiral scanning is continuous in any one plane, but continuity in grids of more than two dimensions can only be maintained by reversing the inward/outward direction of the scan in alternate planes.


MORTON

@UML(identifier="Morton order",
     obligation=CONDITIONAL,
     specification=ISO_19123)
public static final SequenceType MORTON
Ordering based on a space-filling curve generated by progressively subdividing a space into quadrants and ordering the quadrants in a Z pattern. The ordering index for each grid point is computed by converting the grid coordinates to binary numbers and interleaving the bits of the resulting values. Given the list of the grid axes specified by scan direction, the bits of the coordinate corresponding to an axis are less significant than those of the coordinate corresponding to the next axis in the list. Morton ordering can be extended to any number of dimensions. Morton ordering is discontinuous.

NOTE: Because of the shape of the curve formed by the initial ordering of quadrants, Morton ordering is also known as Z ordering.

A grid generated with the Morton ordering technique will be square and its size in each direction will be a multiple of a power of 2. However, the bit interleaving technique for generating an index can be used to order the grid points in any grid, including grids that are irregular in shape or have grid cells of different sizes.


HILBERT

@UML(identifier="Hilbert order",
     obligation=CONDITIONAL,
     specification=ISO_19123)
public static final SequenceType HILBERT
Ordering based on a space-filling curve generated by progressively subdividing a space into quadrants. This is similar to Morton scanning, but the initial pattern of subdivision is different for Hilbert curves. Further subdivision involves replacement of parts of the curve by different patterns, unlike the simple replication of a single pattern as in Morton ordering. There are two sets of patterns. The left-hand column of the figure includes those for which the sense of the scan directions is the same - both are positive or both negative. The right-hand column of the figure includes those for which the sense of the scan directions is opposite - one is positive and one is negative. A Hilbert curve can only be constructed with patterns from the same set; it uses all the patterns in that set.

NOTE: Because of the shape of the curve formed by the initial ordering of quadrants, Hilbert ordering is also known as pi ordering.

Method Detail

values

public static SequenceType[] values()
Returns the list of SequenceTypes.


family

public CodeList[] family()
Returns the list of enumerations of the same kind than this enum.

Specified by:
family in class CodeList<SequenceType>

valueOf

public static SequenceType valueOf(String code)
Returns the SequenceType that matches the given string, or returns a new one if none match it.



Copyright © 1994-2008 Open Geospatial Consortium. All Rights Reserved.