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
- Alphabetic
- By Inheritance
- XZ3SFC
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
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
- val g: Short
-
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
-
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
-
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
-
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
-
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
-
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
- val xBounds: (Double, Double)
- val yBounds: (Double, Double)
- val zBounds: (Double, Double)