Class SpatialDataType

  • All Implemented Interfaces:
    java.util.Comparator<Spatial>, DataType<Spatial>

    public class SpatialDataType
    extends BasicDataType<Spatial>
    A spatial data type. This class supports up to 31 dimensions. Each dimension can have a minimum and a maximum value of type float. For each dimension, the maximum value is only stored when it is not the same as the minimum.
    • Constructor Detail

      • SpatialDataType

        public SpatialDataType​(int dimensions)
    • Method Detail

      • create

        protected Spatial create​(long id,
                                 float... minMax)
        Creates spatial object with specified parameters.
        Parameters:
        id - the ID
        minMax - min x, max x, min y, max y, and so on
        Returns:
        the spatial object
      • createStorage

        public Spatial[] createStorage​(int size)
        Description copied from interface: DataType
        Create storage object of array type to hold values
        Parameters:
        size - number of values to hold
        Returns:
        storage object
      • compare

        public int compare​(Spatial a,
                           Spatial b)
        Description copied from interface: DataType
        Compare two keys.
        Specified by:
        compare in interface java.util.Comparator<Spatial>
        Specified by:
        compare in interface DataType<Spatial>
        Overrides:
        compare in class BasicDataType<Spatial>
        Parameters:
        a - the first key
        b - the second key
        Returns:
        -1 if the first key is smaller, 1 if larger, and 0 if equal
      • equals

        public boolean equals​(Spatial a,
                              Spatial b)
        Check whether two spatial values are equal.
        Parameters:
        a - the first value
        b - the second value
        Returns:
        true if they are equal
      • isOverlap

        public boolean isOverlap​(Spatial a,
                                 Spatial b)
        Check whether the two objects overlap.
        Parameters:
        a - the first object
        b - the second object
        Returns:
        true if they overlap
      • increaseBounds

        public void increaseBounds​(Spatial bounds,
                                   Spatial add)
        Increase the bounds in the given spatial object.
        Parameters:
        bounds - the bounds (may be modified)
        add - the value
      • getAreaIncrease

        public float getAreaIncrease​(Spatial bounds,
                                     Spatial add)
        Get the area increase by extending a to contain b.
        Parameters:
        bounds - the bounding box
        add - the object
        Returns:
        the area
      • contains

        public boolean contains​(Spatial bounds,
                                Spatial object)
        Check whether bounds contains object.
        Parameters:
        bounds - the bounding box
        object - the object
        Returns:
        the area
      • isInside

        public boolean isInside​(Spatial object,
                                Spatial bounds)
        Check whether object is completely inside bounds and does not touch them.
        Parameters:
        object - the object to check
        bounds - the bounds
        Returns:
        true if a is completely inside b
      • getExtremes

        public int[] getExtremes​(java.util.ArrayList<Spatial> list)
        Get the most extreme pair (elements that are as far apart as possible). This method is used to split a page (linear split). If no extreme objects could be found, this method returns null.
        Parameters:
        list - the objects
        Returns:
        the indexes of the extremes