class XZ3SFC extends AnyRef

Extended Z-order curve implementation used for efficiently storing polygons.

Based on 'XZ-Ordering: A Space-Filling Curve for Objects with Spatial Extension' by Christian Böhm, Gerald Klump and Hans-Peter Kriegel, expanded to 3 dimensions

Linear Supertypes
AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. XZ3SFC
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new XZ3SFC(g: Short, xBounds: (Double, Double), yBounds: (Double, Double), zBounds: (Double, Double))

    g

    resolution level of the curve - i.e. how many times the space will be recursively split into eighths

Value Members

  1. val g: Short
  2. def index(xmin: Double, ymin: Double, zmin: Double, xmax: Double, ymax: Double, zmax: Double, lenient: Boolean = false): Long

    Index a polygon by it's bounding box

    Index a polygon by it's bounding box

    xmin

    min x value in xBounds

    ymin

    min y value in yBounds

    zmin

    min z value in zBounds

    xmax

    max x value in xBounds, must be >= xmin

    ymax

    max y value in yBounds, must be >= ymin

    zmax

    max z value in zBounds, must be >= tmin

    lenient

    standardize boundaries to valid values, or raise an exception

    returns

    z value for the bounding box

  3. def ranges(queries: Seq[(Double, Double, Double, Double, Double, Double)], maxRanges: Option[Int] = None): Seq[IndexRange]

    Determine XZ-curve ranges that will cover a given query window

    Determine XZ-curve ranges that will cover a given query window

    queries

    a sequence of OR'd windows to cover. Each window is in the form (xmin, ymin, zmin, xmax, ymax, zmax) where all values are in user space

    maxRanges

    a rough upper limit on the number of ranges to generate

  4. def ranges(xmin: Double, ymin: Double, zmin: Double, xmax: Double, ymax: Double, zmax: Double, maxRanges: Option[Int]): Seq[IndexRange]

    Determine XZ-curve ranges that will cover a given query window

    Determine XZ-curve ranges that will cover a given query window

    xmin

    min x value in user space

    ymin

    min y value in user space

    zmin

    min z value in user space

    xmax

    max x value in user space, must be >= xmin

    ymax

    max y value in user space, must be >= ymin

    zmax

    max z value in user space, must be >= zmin

    maxRanges

    a rough upper limit on the number of ranges to generate

  5. def ranges(xmin: Double, ymin: Double, zmin: Double, xmax: Double, ymax: Double, zmax: Double): Seq[IndexRange]

    Determine XZ-curve ranges that will cover a given query window

    Determine XZ-curve ranges that will cover a given query window

    xmin

    min x value in user space

    ymin

    min y value in user space

    zmin

    min z value in user space

    xmax

    max x value in user space, must be >= xmin

    ymax

    max y value in user space, must be >= ymin

    zmax

    max z value in user space, must be >= zmin

  6. def ranges(query: (Double, Double, Double, Double, Double, Double), maxRanges: Option[Int]): Seq[IndexRange]

    Determine XZ-curve ranges that will cover a given query window

    Determine XZ-curve ranges that will cover a given query window

    query

    a window to cover in the form (xmin, ymin, zmin, xmax, ymax, zmax) where all values are in user space

    maxRanges

    a rough upper limit on the number of ranges to generate

  7. def ranges(query: (Double, Double, Double, Double, Double, Double)): Seq[IndexRange]

    Determine XZ-curve ranges that will cover a given query window

    Determine XZ-curve ranges that will cover a given query window

    query

    a window to cover in the form (xmin, ymin, zmin, xmax, ymax, zmax) where all values are in user space

  8. val xBounds: (Double, Double)
  9. val yBounds: (Double, Double)
  10. val zBounds: (Double, Double)