Class SequenceType

  • All Implemented Interfaces:
    Serializable, Comparable<SequenceType>, ControlledVocabulary

    @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.

    Since:
    GeoAPI 2.1
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class CodeList

        CodeList.Filter
    • Field Summary

      Fields 
      Modifier and Type Field Description
      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).
    • 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.
        Linear scanning
      • 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.
        Boustrophedonic 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.
        Cantor-diagonal scanning
      • 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.
        Spiral scanning
      • 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.
        Morton scanning

        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.
        Hilbert scanning
    • Method Detail

      • values

        public static SequenceType[] values()
        Returns the list of SequenceTypes.
        Returns:
        the list of codes declared in the current JVM.
      • family

        public SequenceType[] family()
        Returns the list of codes of the same kind than this code list element. Invoking this method is equivalent to invoking values(), except that this method can be invoked on an instance of the parent CodeList class.
        Specified by:
        family in interface ControlledVocabulary
        Specified by:
        family in class CodeList<SequenceType>
        Returns:
        all code values for this code list.
      • valueOf

        public static SequenceType valueOf​(String code)
        Returns the sequence type that matches the given string, or returns a new one if none match it. More specifically, this methods returns the first instance for which name().equals(code) returns true. If no existing instance is found, then a new one is created for the given name.
        Parameters:
        code - the name of the code to fetch or to create.
        Returns:
        a code matching the given name.