c

org.apache.sedona.core.spatialPartitioning

QuadTreeRTPartitioner

class QuadTreeRTPartitioner extends QuadTreePartitioner

This class implements spatial partitioner based on the principles outlined in:

It uses the Quad-tree partitioning strategy to create balanced partitions This partitioning is essential for efficiently executing kNN joins. The process involves the following steps:

1. **Quad-tree Partitioning**: - Data is partitioned into partitions using the Quad-tree data structure. - This ensures balanced partitions and spatial locality preservation.

2. **Global R-Tree Index Construction**: - A set of random samples S' from the dataset S is taken. - An R-tree T is built over S' in the master node (driver program).

3. **Distance Bound Calculation**: - For each partition Ri, the distance ui from the furthest point in Ri to the centroid cri is calculated. - k-nearest neighbors of each centroid cri are found using the R-tree T. - A distance bound γi is derived for each Ri, defined as γi = 2ui +

|cri, sk|, where sk is the k-th nearest neighbor of cri.

4. **Partitioning Neighbors**: - For each partition Ri, a subset Si ⊂ S is identified such that for any r ∈ Ri, knn(r, S) = knn(r, Si) using a circle range query centered at cri with radius γi. - This guarantees that the k-nearest neighbors of any point in Ri can be found within the subset Si.

5. **Parallel Local kNN Joins**: - Each combined partition (Ri, Si) is processed in parallel. - An R-tree is built over Si, and a local kNN join is performed for each record in Ri. - The results from all partitions are combined to produce the final kNN join results.

Reference: Xie, Dong, et al. "Simba: Efficient in-memory spatial analytics." In Proceedings of the 2016 ACM SIGMOD International Conference on Management of Data (SIGMOD '16), 2016, DOI: 10.1145/2882903.2915237.

Linear Supertypes
QuadTreePartitioner, SpatialPartitioner, Partitioner, Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. QuadTreeRTPartitioner
  2. QuadTreePartitioner
  3. SpatialPartitioner
  4. Partitioner
  5. Serializable
  6. Serializable
  7. AnyRef
  8. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new QuadTreeRTPartitioner(extendedQuadTree: ExtendedQuadTree[_])

Abstract Value Members

  1. abstract def placeObject[T <: Geometry](spatialObject: T): Iterator[(Integer, T)]

    Given a geometry, returns a list of partitions it overlaps.

    Given a geometry, returns a list of partitions it overlaps.

    For points, returns exactly one partition as long as grid type is non-overlapping. For other geometry types or for overlapping grid types, may return multiple partitions.

    Definition Classes
    SpatialPartitioner

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(o: Any): Boolean
    Definition Classes
    QuadTreePartitioner → AnyRef → Any
    Annotations
    @Override()
  8. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. def getBoundary(): Envelope
  10. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. def getDedupParams(): DedupParams
    Definition Classes
    QuadTreeRTPartitionerQuadTreePartitionerSpatialPartitioner
    Annotations
    @Override()
  12. def getGridType(): GridType
    Definition Classes
    SpatialPartitioner
  13. def getGrids(): List[Envelope]
    Definition Classes
    QuadTreeRTPartitionerSpatialPartitioner
    Annotations
    @Override()
  14. def getOverlappedGrids(): Map[Integer, List[Envelope]]
  15. def getPartition(key: Any): Int
    Definition Classes
    SpatialPartitioner → Partitioner
    Annotations
    @Override()
  16. def getSTRForOverlappedGrids(): STRtree
  17. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  18. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  19. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  20. def nonOverlappedPartitioner(): QuadTreeRTPartitioner
  21. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  22. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  23. def numPartitions(): Int
    Definition Classes
    QuadTreeRTPartitionerQuadTreePartitioner → Partitioner
    Annotations
    @Override()
  24. def placeObject(spatialObject: Geometry): Iterator[(Integer, Geometry)]

    Depending on overlappedPartitioner, return the expanded boundaries or the original boundaries.

    Depending on overlappedPartitioner, return the expanded boundaries or the original boundaries.

    spatialObject

    the spatial object

    returns

    Iterator<Tuple2<Integer, Geometry>>

    Definition Classes
    QuadTreeRTPartitionerQuadTreePartitioner
    Annotations
    @Override()
    Exceptions thrown
  25. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  26. def toString(): String
    Definition Classes
    AnyRef → Any
  27. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  28. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()

Inherited from QuadTreePartitioner

Inherited from SpatialPartitioner

Inherited from Partitioner

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped