|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.apache.lucene.spatial.prefix.tree.SpatialPrefixTree
public abstract class SpatialPrefixTree
A Spatial Prefix Tree, or Trie, which decomposes shapes into prefixed strings at variable lengths corresponding to variable precision. Each string corresponds to a spatial region. Implementations of this class should be thread-safe and immutable once initialized.
| Field Summary | |
|---|---|
protected com.spatial4j.core.context.SpatialContext |
ctx
|
protected int |
maxLevels
|
protected static Charset |
UTF8
|
| Constructor Summary | |
|---|---|
SpatialPrefixTree(com.spatial4j.core.context.SpatialContext ctx,
int maxLevels)
|
|
| Method Summary | |
|---|---|
abstract int |
getLevelForDistance(double dist)
Returns the level of the smallest grid size with a side length that is greater or equal to the provided distance. |
int |
getMaxLevelForPrecision(com.spatial4j.core.shape.Shape shape,
double precision)
See SpatialArgs.getDistPrecision(). |
int |
getMaxLevels()
|
abstract Node |
getNode(byte[] bytes,
int offset,
int len)
|
Node |
getNode(byte[] bytes,
int offset,
int len,
Node target)
|
protected Node |
getNode(com.spatial4j.core.shape.Point p,
int level)
|
abstract Node |
getNode(String token)
The cell for the specified token. |
List<Node> |
getNodes(com.spatial4j.core.shape.Shape shape,
int detailLevel,
boolean inclParents)
Gets the intersecting & including cells for the specified shape, without exceeding detail level. |
protected List<Node> |
getNodesAltPoint(com.spatial4j.core.shape.Point p,
int detailLevel,
boolean inclParents)
Subclasses might override getNodes(com.spatial4j.core.shape.Shape, int, boolean)
and check if the argument is a shape and if so, delegate
to this implementation, which calls getNode(com.spatial4j.core.shape.Point, int) and
then calls getNode(String) repeatedly if inclParents is true. |
com.spatial4j.core.context.SpatialContext |
getSpatialContext()
|
Node |
getWorldNode()
Returns the level 0 cell which encompasses all spatial data. |
static List<String> |
nodesToTokenStrings(Collection<Node> nodes)
Will add the trailing leaf byte for leaves. |
String |
toString()
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
protected static final Charset UTF8
protected final int maxLevels
protected final com.spatial4j.core.context.SpatialContext ctx
| Constructor Detail |
|---|
public SpatialPrefixTree(com.spatial4j.core.context.SpatialContext ctx,
int maxLevels)
| Method Detail |
|---|
public com.spatial4j.core.context.SpatialContext getSpatialContext()
public int getMaxLevels()
public String toString()
toString in class Object
public int getMaxLevelForPrecision(com.spatial4j.core.shape.Shape shape,
double precision)
SpatialArgs.getDistPrecision().
A grid level looked up via getLevelForDistance(double) is returned.
shape - precision - 0-0.5
public abstract int getLevelForDistance(double dist)
dist - >= 0
public Node getWorldNode()
getNode(String) with "".
This cell is threadsafe, just like a spatial prefix grid is, although cells aren't
generally threadsafe.
TODO rename to getTopCell or is this fine?
public abstract Node getNode(String token)
getWorldNode().
Precondition: Never called when token length > maxLevel.
public abstract Node getNode(byte[] bytes,
int offset,
int len)
public final Node getNode(byte[] bytes,
int offset,
int len,
Node target)
protected Node getNode(com.spatial4j.core.shape.Point p,
int level)
public List<Node> getNodes(com.spatial4j.core.shape.Shape shape,
int detailLevel,
boolean inclParents)
Node.getSubCell(com.spatial4j.core.shape.Point). Cell subclasses
ideally implement that method with a quick implementation, otherwise, subclasses should
override this method to invoke getNodesAltPoint(com.spatial4j.core.shape.Point, int, boolean).
TODO consider another approach returning an iterator -- won't build up all cells in memory.
protected final List<Node> getNodesAltPoint(com.spatial4j.core.shape.Point p,
int detailLevel,
boolean inclParents)
getNodes(com.spatial4j.core.shape.Shape, int, boolean)
and check if the argument is a shape and if so, delegate
to this implementation, which calls getNode(com.spatial4j.core.shape.Point, int) and
then calls getNode(String) repeatedly if inclParents is true.
public static List<String> nodesToTokenStrings(Collection<Node> nodes)
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||