Package org.h2.mvstore.rtree
Class SpatialDataType
- java.lang.Object
-
- org.h2.mvstore.type.BasicDataType<Spatial>
-
- org.h2.mvstore.rtree.SpatialDataType
-
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 Summary
Constructors Constructor Description SpatialDataType(int dimensions)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intcompare(Spatial a, Spatial b)Compare two keys.booleancontains(Spatial bounds, Spatial object)Check whether bounds contains object.protected Spatialcreate(long id, float... minMax)Creates spatial object with specified parameters.Spatial[]createStorage(int size)Create storage object of array type to hold valuesbooleanequals(Spatial a, Spatial b)Check whether two spatial values are equal.floatgetAreaIncrease(Spatial bounds, Spatial add)Get the area increase by extending a to contain b.int[]getExtremes(java.util.ArrayList<Spatial> list)Get the most extreme pair (elements that are as far apart as possible).intgetMemory(Spatial obj)Calculates the amount of used memory in bytes.voidincreaseBounds(Spatial bounds, Spatial add)Increase the bounds in the given spatial object.booleanisInside(Spatial object, Spatial bounds)Check whether object is completely inside bounds and does not touch them.booleanisOverlap(Spatial a, Spatial b)Check whether the two objects overlap.Spatialread(java.nio.ByteBuffer buff)Read an object.voidwrite(WriteBuffer buff, Spatial k)Write an object.-
Methods inherited from class org.h2.mvstore.type.BasicDataType
binarySearch, cast, equals, hashCode, isMemoryEstimationAllowed, read, write
-
-
-
-
Method Detail
-
create
protected Spatial create(long id, float... minMax)
Creates spatial object with specified parameters.- Parameters:
id- the IDminMax- 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:DataTypeCreate 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:DataTypeCompare two keys.
-
equals
public boolean equals(Spatial a, Spatial b)
Check whether two spatial values are equal.- Parameters:
a- the first valueb- the second value- Returns:
- true if they are equal
-
getMemory
public int getMemory(Spatial obj)
Description copied from interface:DataTypeCalculates the amount of used memory in bytes.
-
write
public void write(WriteBuffer buff, Spatial k)
Description copied from interface:DataTypeWrite an object.
-
read
public Spatial read(java.nio.ByteBuffer buff)
Description copied from interface:DataTypeRead an object.
-
isOverlap
public boolean isOverlap(Spatial a, Spatial b)
Check whether the two objects overlap.- Parameters:
a- the first objectb- 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 boxadd- the object- Returns:
- the area
-
contains
public boolean contains(Spatial bounds, Spatial object)
Check whether bounds contains object.- Parameters:
bounds- the bounding boxobject- 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 checkbounds- 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
-
-