Class ShapeField

java.lang.Object
org.apache.lucene.document.ShapeField

public final class ShapeField extends Object
A base shape utility class used for both LatLon (spherical) and XY (cartesian) shape fields.

Polygon's and Line's are decomposed into a triangular mesh using the Tessellator utility class. Each ShapeField.Triangle is encoded by this base class and indexed as a seven dimension multi-value field.

Finding all shapes that intersect a range (e.g., bounding box), or target shape, at search time is efficient.

This class defines the static methods for encoding the three vertices of a tessellated triangles as a seven dimension point. The coordinates are converted from double precision values into 32 bit integers so they are sortable at index time.

  • Field Details

    • BYTES

      static final int BYTES
      vertex coordinates are encoded as 4 byte integers
      See Also:
    • TYPE

      protected static final FieldType TYPE
      tessellated triangles are seven dimensions; the first four are the bounding box index dimensions
    • MINY_MINX_MAXY_MAXX_Y_X

      private static final int MINY_MINX_MAXY_MAXX_Y_X
      See Also:
    • MINY_MINX_Y_X_MAXY_MAXX

      private static final int MINY_MINX_Y_X_MAXY_MAXX
      See Also:
    • MAXY_MINX_Y_X_MINY_MAXX

      private static final int MAXY_MINX_Y_X_MINY_MAXX
      See Also:
    • MAXY_MINX_MINY_MAXX_Y_X

      private static final int MAXY_MINX_MINY_MAXX_Y_X
      See Also:
    • Y_MINX_MINY_X_MAXY_MAXX

      private static final int Y_MINX_MINY_X_MAXY_MAXX
      See Also:
    • Y_MINX_MINY_MAXX_MAXY_X

      private static final int Y_MINX_MINY_MAXX_MAXY_X
      See Also:
    • MAXY_MINX_MINY_X_Y_MAXX

      private static final int MAXY_MINX_MINY_X_Y_MAXX
      See Also:
    • MINY_MINX_Y_MAXX_MAXY_X

      private static final int MINY_MINX_Y_MAXX_MAXY_X
      See Also:
  • Constructor Details

    • ShapeField

      private ShapeField()
  • Method Details

    • encodeTriangle

      public static void encodeTriangle(byte[] bytes, int aY, int aX, boolean ab, int bY, int bX, boolean bc, int cY, int cX, boolean ca)
      A triangle is encoded using 6 points and an extra point with encoded information in three bits of how to reconstruct it. Triangles are encoded with CCW orientation and might be rotated to limit the number of possible reconstructions to 2^3. Reconstruction always happens from west to east.
    • decodeTriangle

      public static void decodeTriangle(byte[] t, ShapeField.DecodedTriangle triangle)
    • resolveTriangleType

      static void resolveTriangleType(ShapeField.DecodedTriangle triangle)