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 static FieldType
TYPE
IndexingFieldType
.-
Fields inherited from class org.apache.lucene.document.Field
fieldsData, name, tokenStream, type
-
-
Constructor Summary
Constructors Constructor Description Geo3DPoint(String name, double latitude, double longitude)
Creates a new Geo3DPoint field with the specified latitude, longitude (in degrees).Geo3DPoint(String name, double x, double y, double z)
Creates a new Geo3DPoint field with the specified x,y,z.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static double
decodeDimension(byte[] value, int offset)
Decode single dimensionstatic void
encodeDimension(double value, byte[] bytes, int offset)
Encode single dimensionstatic Query
newBoxQuery(String field, double minLatitude, double maxLatitude, double minLongitude, double maxLongitude)
Create a query for matching a box.static Query
newDistanceQuery(String field, 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, Polygon... polygons)
Create a query for matching a large polygon.static Query
newPathQuery(String field, double[] pathLatitudes, double[] pathLongitudes, double pathWidthMeters)
Create a query for matching a path.static Query
newPolygonQuery(String field, 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, name, numericValue, readerValue, setBytesValue, setBytesValue, setByteValue, setDoubleValue, setFloatValue, setIntValue, setLongValue, setReaderValue, setShortValue, setStringValue, setTokenStream, stringValue, tokenStream, tokenStreamValue
-
-
-
-
Constructor Detail
-
Geo3DPoint
public Geo3DPoint(String name, double latitude, double longitude)
Creates a new Geo3DPoint field with the specified latitude, longitude (in degrees).- 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.- Throws:
IllegalArgumentException
- if the field name is null or latitude or longitude are out of bounds
-
-
Method Detail
-
newDistanceQuery
public static Query newDistanceQuery(String field, 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 becausePlanetModel.WGS84
is used, this 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
- iffield
is null, location has invalid coordinates, or radius is invalid.
-
newBoxQuery
public static Query newBoxQuery(String field, 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
- iffield
is null, or the box has invalid coordinates.
-
newPolygonQuery
public static Query newPolygonQuery(String field, 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, 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)
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)
Encode single dimension
-
decodeDimension
public static double decodeDimension(byte[] value, int offset)
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 benull
.shape
- WhichGeoShape
to match
-
-