Package org.apache.lucene.spatial3d

# Class Geo3DPoint

java.lang.Object
org.apache.lucene.document.Field
org.apache.lucene.spatial3d.Geo3DPoint

All Implemented Interfaces:
  `IndexableField`

public final class Geo3DPoint extends Field
Add this to a document to index lat/lon or x/y/z point, indexed as a 3D point. Multiple values are allowed: just add multiple Geo3DPoint to the document with the same field name.

This field defines static factory methods for creating a shape query:

- `newShapeQuery()` for matching all points inside a specified shape

See Also:
  - `PointValues`
WARNING: This API is experimental and might change in incompatible ways in the next release.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class org.apache.lucene.document.Field

  `Field.Store`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final PlanetModel`
  `planetModel`
  Planet Model for this Geo3DPoint
  `static final FieldType`
  `TYPE`
  Indexing `FieldType`.

  ### Fields inherited from class org.apache.lucene.document.Field

  `fieldsData, name, type`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Geo3DPoint(String name, double lat, double lon)`
  Creates a new Geo3DPoint field with the specified latitude, longitude (in degrees), with default WGS84 PlanetModel.
  `Geo3DPoint(String name, double x, double y, double z)`
  Creates a new Geo3DPoint field with the specified x,y,z, using default WGS84 planet model.
  `Geo3DPoint(String name, PlanetModel planetModel, double latitude, double longitude)`
  Creates a new Geo3DPoint field with the specified latitude, longitude (in degrees), given a planet model.
  `Geo3DPoint(String name, PlanetModel planetModel, double x, double y, double z)`
  Creates a new Geo3DPoint field with the specified x,y,z, and given planet model.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static double`
  `decodeDimension(byte[] value, int offset, PlanetModel planetModel)`
  Decode single dimension
  `static void`
  `encodeDimension(double value, byte[] bytes, int offset, PlanetModel planetModel)`
  Encode single dimension
  `static Query`
  `newBoxQuery(String field, PlanetModel planetModel, double minLatitude, double maxLatitude, double minLongitude, double maxLongitude)`
  Create a query for matching a box.
  `static Query`
  `newDistanceQuery(String field, PlanetModel planetModel, double latitude, double longitude, double radiusMeters)`
  Create a query for matching points within the specified distance of the supplied location.
  `static Query`
  `newLargePolygonQuery(String field, PlanetModel planetModel, Polygon... polygons)`
  Create a query for matching a large polygon.
  `static Query`
  `newPathQuery(String field, double[] pathLatitudes, double[] pathLongitudes, double pathWidthMeters, PlanetModel planetModel)`
  Create a query for matching a path.
  `static Query`
  `newPolygonQuery(String field, PlanetModel planetModel, Polygon... polygons)`
  Create a query for matching a polygon.
  `static Query`
  `newShapeQuery(String field, GeoShape shape)`
  Returns a query matching all points inside the provided shape.
  `String`
  `toString()`

  ### Methods inherited from class org.apache.lucene.document.Field

  `binaryValue, fieldType, getCharSequenceValue, invertableType, name, numericValue, readerValue, setBytesValue, setBytesValue, setByteValue, setDoubleValue, setFloatValue, setIntValue, setLongValue, setReaderValue, setShortValue, setStringValue, setTokenStream, storedValue, stringValue, tokenStream, tokenStreamValue`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### planetModel

    protected final PlanetModel planetModel
    Planet Model for this Geo3DPoint

  - ### TYPE

    public static final FieldType TYPE
    Indexing `FieldType`.

- ## Constructor Details

  - ### Geo3DPoint

    public Geo3DPoint(String name, double lat, double lon)
    Creates a new Geo3DPoint field with the specified latitude, longitude (in degrees), with default WGS84 PlanetModel.
    Throws:
      `IllegalArgumentException` - if the field name is null or latitude or longitude are out of bounds

  - ### Geo3DPoint

    public Geo3DPoint(String name, double x, double y, double z)
    Creates a new Geo3DPoint field with the specified x,y,z, using default WGS84 planet model.
    Throws:
      `IllegalArgumentException` - if the field name is null or latitude or longitude are out of bounds

  - ### Geo3DPoint

    public Geo3DPoint(String name, PlanetModel planetModel, double x, double y, double z)
    Creates a new Geo3DPoint field with the specified x,y,z, and given planet model.
    Throws:
      `IllegalArgumentException` - if the field name is null or latitude or longitude are out of bounds

  - ### Geo3DPoint

    public Geo3DPoint(String name, PlanetModel planetModel, double latitude, double longitude)
    Creates a new Geo3DPoint field with the specified latitude, longitude (in degrees), given a planet model.
    Throws:
      `IllegalArgumentException` - if the field name is null or latitude or longitude are out of bounds

- ## Method Details

  - ### newDistanceQuery

    public static Query newDistanceQuery(String field, PlanetModel planetModel, double latitude, double longitude, double radiusMeters)
    Create a query for matching points within the specified distance of the supplied location.
    Parameters:
      `field` - field name. must not be null. Note that if `PlanetModel.WGS84` is used, the query is approximate and may have up to 0.5% error.
      `latitude` - latitude at the center: must be within standard +/-90 coordinate bounds.
      `longitude` - longitude at the center: must be within standard +/-180 coordinate bounds.
      `radiusMeters` - maximum distance from the center in meters: must be non-negative and finite.
    Returns:
      query matching points within this distance
    Throws:
      `IllegalArgumentException` - if `field` is null, location has invalid coordinates, or radius is invalid.

  - ### newBoxQuery

    public static Query newBoxQuery(String field, PlanetModel planetModel, double minLatitude, double maxLatitude, double minLongitude, double maxLongitude)
    Create a query for matching a box.

    The box may cross over the dateline.

    Parameters:
      `field` - field name. must not be null.
      `minLatitude` - latitude lower bound: must be within standard +/-90 coordinate bounds.
      `maxLatitude` - latitude upper bound: must be within standard +/-90 coordinate bounds.
      `minLongitude` - longitude lower bound: must be within standard +/-180 coordinate bounds.
      `maxLongitude` - longitude upper bound: must be within standard +/-180 coordinate bounds.
    Returns:
      query matching points within this box
    Throws:
      `IllegalArgumentException` - if `field` is null, or the box has invalid coordinates.

  - ### newPolygonQuery

    public static Query newPolygonQuery(String field, PlanetModel planetModel, Polygon... polygons)
    Create a query for matching a polygon. The polygon should have a limited number of edges (less than 100) and be well-defined, with well-separated vertices.

    The supplied `polygons` must be clockwise on the outside level, counterclockwise on the next level in, etc.

    Parameters:
      `field` - field name. must not be null.
      `polygons` - is the list of polygons to use to construct the query; must be at least one.
    Returns:
      query matching points within this polygon

  - ### newLargePolygonQuery

    public static Query newLargePolygonQuery(String field, PlanetModel planetModel, Polygon... polygons)
    Create a query for matching a large polygon. This differs from the related newPolygonQuery in that it does little or no legality checking and is optimized for very large numbers of polygon edges.

    The supplied `polygons` must be clockwise on the outside level, counterclockwise on the next level in, etc.

    Parameters:
      `field` - field name. must not be null.
      `polygons` - is the list of polygons to use to construct the query; must be at least one.
    Returns:
      query matching points within this polygon

  - ### newPathQuery

    public static Query newPathQuery(String field, double[] pathLatitudes, double[] pathLongitudes, double pathWidthMeters, PlanetModel planetModel)
    Create a query for matching a path.
    Parameters:
      `field` - field name. must not be null.
      `pathLatitudes` - latitude values for points of the path: must be within standard +/-90 coordinate bounds.
      `pathLongitudes` - longitude values for points of the path: must be within standard +/-180 coordinate bounds.
      `pathWidthMeters` - width of the path in meters.
    Returns:
      query matching points within this polygon

  - ### encodeDimension

    public static void encodeDimension(double value, byte[] bytes, int offset, PlanetModel planetModel)
    Encode single dimension

  - ### decodeDimension

    public static double decodeDimension(byte[] value, int offset, PlanetModel planetModel)
    Decode single dimension

  - ### newShapeQuery

    public static Query newShapeQuery(String field, GeoShape shape)
    Returns a query matching all points inside the provided shape.
    Parameters:
      `field` - field name. must not be `null`.
      `shape` - Which `GeoShape` to match

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Field`