org.apache.lucene.spatial.prefix.tree

## Interface Cell

- All Known Subinterfaces:
    CellCanPrune
  All Known Implementing Classes:
    LegacyCell, NumberRangePrefixTree.NRCell, PackedQuadPrefixTree.PackedQuadCell, QuadPrefixTree.QuadCell

      public interface Cell

  Represents a grid cell. Cell instances are generally very transient and may be re-used internally. To get an instance, you could start with `SpatialPrefixTree.getWorldCell()`. And from there you could either traverse down the tree with `getNextLevelCells(org.locationtech.spatial4j.shape.Shape)`, or you could read an indexed term via `SpatialPrefixTree.readCell(org.apache.lucene.util.BytesRef,Cell)`. When a cell is read from a term, it is comprised of just the base bytes plus optionally a leaf flag.
  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `compareToNoLeaf(Cell fromCell)` Equivalent to `this.getTokenBytesNoLeaf(null).compareTo(fromCell.getTokenBytesNoLeaf(null))`.
    `int` | `getLevel()` Level 0 is the world (and has no parent), from then on a higher level means a smaller cell than the level before it.
    `CellIterator` | `getNextLevelCells(org.locationtech.spatial4j.shape.Shape shapeFilter)` Gets the cells at the next grid cell level underneath this one, optionally filtered by `shapeFilter`.
    `org.locationtech.spatial4j.shape.Shape` | `getShape()` Gets the shape for this cell; typically a Rectangle.
    `org.locationtech.spatial4j.shape.SpatialRelation` | `getShapeRel()` Gets the relationship this cell has with the shape from which it was filtered from, assuming it came from a `CellIterator`.
    `BytesRef` | `getTokenBytesNoLeaf(BytesRef result)` Returns the bytes for this cell, without a leaf set.
    `BytesRef` | `getTokenBytesWithLeaf(BytesRef result)` Returns the bytes for this cell, with a leaf byte if this is a leaf cell.
    `boolean` | `isLeaf()` Some cells are flagged as leaves, which are indexed as such.
    `boolean` | `isPrefixOf(Cell c)` Returns if the target term is within/underneath this cell; not necessarily a direct descendant.
    `void` | `setLeaf()` Set this cell to be a leaf.
    `void` | `setShapeRel(org.locationtech.spatial4j.shape.SpatialRelation rel)` See `getShapeRel()`.

- - ### Method Detail

    - #### getShapeRel

          org.locationtech.spatial4j.shape.SpatialRelation getShapeRel()

      Gets the relationship this cell has with the shape from which it was filtered from, assuming it came from a `CellIterator`. Arguably it belongs there but it's very convenient here.

    - #### setShapeRel

          void setShapeRel(org.locationtech.spatial4j.shape.SpatialRelation rel)

      See `getShapeRel()`.
      NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

    - #### isLeaf

          boolean isLeaf()

      Some cells are flagged as leaves, which are indexed as such. A leaf cell is either within some shape or it both intersects and the cell is at an accuracy threshold such that no smaller cells for the shape will be represented.

    - #### setLeaf

          void setLeaf()

      Set this cell to be a leaf. Warning: never call on a cell initialized to reference the same bytes from termsEnum, which should be treated as immutable. Note: not supported at level 0.
      NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

    - #### getTokenBytesWithLeaf

          BytesRef getTokenBytesWithLeaf(BytesRef result)

      Returns the bytes for this cell, with a leaf byte if this is a leaf cell. The result param is used to save object allocation, though its bytes aren't used.
      Parameters:
        `result` - where the result goes, or null to create new

    - #### getTokenBytesNoLeaf

          BytesRef getTokenBytesNoLeaf(BytesRef result)

      Returns the bytes for this cell, without a leaf set. The bytes should sort before `getTokenBytesWithLeaf(org.apache.lucene.util.BytesRef)`. The result param is used to save object allocation, though its bytes aren't used.
      Parameters:
        `result` - where the result goes, or null to create new

    - #### getLevel

          int getLevel()

      Level 0 is the world (and has no parent), from then on a higher level means a smaller cell than the level before it.

    - #### getNextLevelCells

          CellIterator getNextLevelCells(org.locationtech.spatial4j.shape.Shape shapeFilter)

      Gets the cells at the next grid cell level underneath this one, optionally filtered by `shapeFilter`. The returned cells should have `getShapeRel()` set to their relation with `shapeFilter`. In addition, for non-points `isLeaf()` must be true when that relation is WITHIN.

      IMPORTANT: Cells returned from this iterator can be shared, as well as the bytes.

      Precondition: Never called when getLevel() == maxLevel.

      Parameters:
        `shapeFilter` - an optional filter for the returned cells.
      Returns:
        A set of cells (no dups), sorted. Not Modifiable.

    - #### getShape

          org.locationtech.spatial4j.shape.Shape getShape()

      Gets the shape for this cell; typically a Rectangle.

    - #### isPrefixOf

          boolean isPrefixOf(Cell c)

      Returns if the target term is within/underneath this cell; not necessarily a direct descendant.
      Parameters:
        `c` - the term

    - #### compareToNoLeaf

          int compareToNoLeaf(Cell fromCell)

      Equivalent to `this.getTokenBytesNoLeaf(null).compareTo(fromCell.getTokenBytesNoLeaf(null))`.

Copyright © 2000-2022 Apache Software Foundation. All Rights Reserved.