pub enum SpatialPartition {
Regular(u32),
None,
Multi,
}Expand description
Spatial partitioning is different from traditional data partitioning such as hash partitioning. There is no perfect spatial partitioner that can partition spatial objects with extents (linestrings, polygons, etc.) into disjoint partitions without overlaps. Therefore, a spatial partitioner usually defines a set of spatial partitions (e.g., grid cells), and assigns each spatial object to one or more partitions based on its spatial extent. The spatial partitioner for our out-of-core spatial join follows a similar, but a bit different approach:
- It defines a fixed number of regular spatial partitions (e.g., grid cells), just like traditional spatial partitioners.
- It defines a
Nonepartition for spatial objects that does not intersect with any of the partitioning grids. - It defines a
Multipartition for spatial objects that intersect with multiple regular partitions.
The partitioning result can be one of the following:
- Assigned to one of the regular partitions (if it intersects with exactly one regular partition).
- Assigned to the
Nonepartition (if it does not intersect with any regular partition). - Assigned to the
Multipartition (if it intersects with multiple regular partitions).
This spatial partitioning scheme assigns one and only one partition to each spatial object,
which simplifies the partitioning logic for out-of-core spatial join. The partitioner will be designed
to produce only Regular partitions for indexed objects, and may produce None and Multi partitions
for probe objects, depending on their spatial extents.
Variants§
Trait Implementations§
Source§impl Clone for SpatialPartition
impl Clone for SpatialPartition
Source§fn clone(&self) -> SpatialPartition
fn clone(&self) -> SpatialPartition
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SpatialPartition
impl Debug for SpatialPartition
Source§impl Hash for SpatialPartition
impl Hash for SpatialPartition
Source§impl PartialEq for SpatialPartition
impl PartialEq for SpatialPartition
impl Copy for SpatialPartition
impl Eq for SpatialPartition
impl StructuralPartialEq for SpatialPartition
Auto Trait Implementations§
impl Freeze for SpatialPartition
impl RefUnwindSafe for SpatialPartition
impl Send for SpatialPartition
impl Sync for SpatialPartition
impl Unpin for SpatialPartition
impl UnsafeUnpin for SpatialPartition
impl UnwindSafe for SpatialPartition
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more