Fork me on GitHub
  • API

    Show / Hide Table of Contents

    Class Cell

    Represents a grid cell. These are not necessarily thread-safe, although new Cell("") (world cell) must be.

    Note

    This API is experimental and might change in incompatible ways in the next release.

    Inheritance
    object
    Cell
    Implements
    IComparable<Cell>
    Inherited Members
    object.Equals(object, object)
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: Lucene.Net.Spatial.Prefix.Tree
    Assembly: Lucene.Net.Spatial.dll
    Syntax
    public abstract class Cell : IComparable<Cell>

    Constructors

    Cell(SpatialPrefixTree, byte[], int, int)

    Initializes a new instance of Cell for the spatialPrefixTree with the specified bytes, offset and length.

    Declaration
    protected Cell(SpatialPrefixTree spatialPrefixTree, byte[] bytes, int offset, int length)
    Parameters
    Type Name Description
    SpatialPrefixTree spatialPrefixTree

    The SpatialPrefixTree this instance belongs to.

    byte[] bytes

    The representation of this Cell.

    int offset

    The offset into bytes to use.

    int length

    The count of bytes to use.

    Exceptions
    Type Condition
    ArgumentNullException

    spatialPrefixTree or bytes is null.

    Cell(SpatialPrefixTree, string)

    Initializes a new instance of Cell for the spatialPrefixTree with the specified token.

    Declaration
    protected Cell(SpatialPrefixTree spatialPrefixTree, string token)
    Parameters
    Type Name Description
    SpatialPrefixTree spatialPrefixTree

    The SpatialPrefixTree this instance belongs to.

    string token

    The string representation of this Cell.

    Exceptions
    Type Condition
    ArgumentNullException

    spatialPrefixTree or token is null.

    Fields

    LEAF_BYTE

    Represents a grid cell. These are not necessarily thread-safe, although new Cell("") (world cell) must be.

    Note

    This API is experimental and might change in incompatible ways in the next release.

    Declaration
    public const byte LEAF_BYTE = 43
    Field Value
    Type Description
    byte

    m_leaf

    Always false for points.

    Declaration
    protected bool m_leaf
    Field Value
    Type Description
    bool
    Remarks

    Always false for points. Otherwise, indicate no further sub-cells are going to be provided because shapeRel is WITHIN or maxLevels or a detailLevel is hit.

    m_shapeRel

    When set via GetSubCells(filter), it is the relationship between this cell and the given shape filter.

    Declaration
    protected SpatialRelation m_shapeRel
    Field Value
    Type Description
    SpatialRelation

    m_spatialPrefixTree

    LUCENENET specific - we need to set the SpatialPrefixTree before calling overridden members of this class, just in case those overridden members require it. This is not possible from the subclass because the constructor of the base class runs first. So we need to move the reference here and also set it before running the normal constructor logic.

    Declaration
    protected readonly SpatialPrefixTree m_spatialPrefixTree
    Field Value
    Type Description
    SpatialPrefixTree

    Properties

    Center

    Represents a grid cell. These are not necessarily thread-safe, although new Cell("") (world cell) must be.

    Note

    This API is experimental and might change in incompatible ways in the next release.

    Declaration
    public virtual IPoint Center { get; }
    Property Value
    Type Description
    IPoint

    IsLeaf

    For points, this is always false.

    Declaration
    public virtual bool IsLeaf { get; }
    Property Value
    Type Description
    bool
    Remarks

    For points, this is always false. Otherwise this is true if there are no further cells with this prefix for the shape (always true at maxLevels).

    Level

    Represents a grid cell. These are not necessarily thread-safe, although new Cell("") (world cell) must be.

    Note

    This API is experimental and might change in incompatible ways in the next release.

    Declaration
    public virtual int Level { get; }
    Property Value
    Type Description
    int

    Shape

    Represents a grid cell. These are not necessarily thread-safe, although new Cell("") (world cell) must be.

    Note

    This API is experimental and might change in incompatible ways in the next release.

    Declaration
    public abstract IShape Shape { get; }
    Property Value
    Type Description
    IShape

    ShapeRel

    Represents a grid cell. These are not necessarily thread-safe, although new Cell("") (world cell) must be.

    Note

    This API is experimental and might change in incompatible ways in the next release.

    Declaration
    public virtual SpatialRelation ShapeRel { get; }
    Property Value
    Type Description
    SpatialRelation

    SubCellsSize

    GetSubCells().Count -- usually a constant. Should be >=2

    Declaration
    public abstract int SubCellsSize { get; }
    Property Value
    Type Description
    int

    TokenString

    Note: doesn't contain a trailing leaf byte.

    Declaration
    public virtual string TokenString { get; }
    Property Value
    Type Description
    string

    Methods

    CompareTo(Cell?)

    Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.

    Declaration
    public virtual int CompareTo(Cell? other)
    Parameters
    Type Name Description
    Cell other

    An object to compare with this instance.

    Returns
    Type Description
    int

    A value that indicates the relative order of the objects being compared. The return value has these meanings:

    Value Meaning
    Less than zero This instance precedes other in the sort order.
    Zero This instance occurs in the same position in the sort order as other.
    Greater than zero This instance follows other in the sort order.

    Equals(object?)

    Determines whether the specified object is equal to the current object.

    Declaration
    public override bool Equals(object? obj)
    Parameters
    Type Name Description
    object obj

    The object to compare with the current object.

    Returns
    Type Description
    bool

    true if the specified object is equal to the current object; otherwise, false.

    Overrides
    object.Equals(object)

    GetHashCode()

    Serves as the default hash function.

    Declaration
    public override int GetHashCode()
    Returns
    Type Description
    int

    A hash code for the current object.

    Overrides
    object.GetHashCode()

    GetSubCell(IPoint)

    Performant implementations are expected to implement this efficiently by considering the current cell's boundary.

    Declaration
    public abstract Cell GetSubCell(IPoint p)
    Parameters
    Type Name Description
    IPoint p
    Returns
    Type Description
    Cell
    Remarks

    Performant implementations are expected to implement this efficiently by considering the current cell's boundary. Precondition: Never called when Level == maxLevel.

    Precondition: this.Shape.Relate(p) != SpatialRelation.DISJOINT.

    GetSubCells()

    Gets the cells at the next grid cell level that cover this cell.

    Declaration
    protected abstract ICollection<Cell> GetSubCells()
    Returns
    Type Description
    ICollection<Cell>

    A set of cells (no dups), sorted, modifiable, not empty, not null.

    Remarks

    Gets the cells at the next grid cell level that cover this cell. Precondition: Never called when Level == maxLevel.

    GetSubCells(IShape?)

    Like GetSubCells() but with the results filtered by a shape. If that shape is a Spatial4n.Shapes.IPoint then it must call GetSubCell(IPoint). The returned cells should have ShapeRel set to their relation with shapeFilter. In addition, IsLeaf must be true when that relation is Spatial4n.Shapes.SpatialRelation.WITHIN.

    Precondition: Never called when Level == maxLevel.
    Declaration
    public virtual ICollection<Cell> GetSubCells(IShape? shapeFilter)
    Parameters
    Type Name Description
    IShape shapeFilter

    an optional filter for the returned cells.

    Returns
    Type Description
    ICollection<Cell>

    A set of cells (no dups), sorted. Not Modifiable.

    GetTokenBytes()

    Note: doesn't contain a trailing leaf byte.

    Declaration
    public virtual byte[] GetTokenBytes()
    Returns
    Type Description
    byte[]

    Reset(byte[], int, int)

    Represents a grid cell. These are not necessarily thread-safe, although new Cell("") (world cell) must be.

    Note

    This API is experimental and might change in incompatible ways in the next release.

    Declaration
    public virtual void Reset(byte[] bytes, int offset, int length)
    Parameters
    Type Name Description
    byte[] bytes
    int offset
    int length

    SetLeaf()

    Note: not supported at level 0.

    NOTE: When overriding this method, be aware that the constructor of this class calls 
    a private method and not this virtual method. So if you need to override
    the behavior during the initialization, call your own private method from the constructor
    with whatever custom behavior you need.
    
    Declaration
    public virtual void SetLeaf()

    ToString()

    Returns a string that represents the current object.

    Declaration
    public override string ToString()
    Returns
    Type Description
    string

    A string that represents the current object.

    Overrides
    object.ToString()

    Implements

    IComparable<T>
    Back to top Copyright © 2024 The Apache Software Foundation, Licensed under the Apache License, Version 2.0
    Apache Lucene.Net, Lucene.Net, Apache, the Apache feather logo, and the Apache Lucene.Net project logo are trademarks of The Apache Software Foundation.
    All other marks mentioned may be trademarks or registered trademarks of their respective owners.