Package org.elasticsearch.geometry.utils
Class Geohash
- java.lang.Object
-
- org.elasticsearch.geometry.utils.Geohash
-
public class Geohash extends java.lang.Object
Utilities for converting to/from the GeoHash standard The geohash long format is represented as lon/lat (x/y) interleaved with the 4 least significant bits representing the level (1-12) [xyxy...xyxyllll] This differs from a morton encoded value which interleaves lat/lon (y/x). NOTE: this will replaceorg.elasticsearch.common.geo.GeoHashUtils
-
-
Field Summary
Fields Modifier and Type Field Description static int
PRECISION
maximum precision for geohash strings
-
Method Summary
Modifier and Type Method Description static <E extends java.util.Collection<? super java.lang.String>>
EaddNeighbors(java.lang.String geohash, E neighbors)
Add all geohashes of the cells next to a given geohash to a list.static <E extends java.util.Collection<? super java.lang.String>>
EaddNeighborsAtLevel(java.lang.String geohash, int level, E neighbors)
Add all geohashes of the cells next to a given geohash to a list.static double
decodeLatitude(long hash)
decode latitude value from morton encoded geo pointstatic double
decodeLatitude(java.lang.String geohash)
returns the latitude value from the string based geohashstatic double
decodeLongitude(long hash)
decode longitude value from morton encoded geo pointstatic double
decodeLongitude(java.lang.String geohash)
returns the latitude value from the string based geohashstatic int
encodeLatitude(double latitude)
encode latitude to integerstatic int
encodeLongitude(double longitude)
encode longitude to integerstatic java.lang.String
getNeighbor(java.lang.String geohash, int level, int dx, int dy)
Calculate the geohash of a neighbor of a geohashstatic java.util.Collection<? extends java.lang.CharSequence>
getNeighbors(java.lang.String geohash)
Calculate all neighbors of a given geohash cell.static long
longEncode(double lon, double lat, int level)
Encode lon/lat to the geohash based long format (lon/lat interleaved, 4 least significant bits = level)static long
mortonEncode(java.lang.String hash)
Encode to a morton long value from a given geohash stringstatic java.lang.String
stringEncode(double lon, double lat)
Encode to a geohash string from full resolution longitude, latitude)static java.lang.String
stringEncode(double lon, double lat, int level)
Encode to a level specific geohash string from full resolution longitude, latitudestatic java.lang.String
stringEncode(long geoHashLong)
Encode to a geohash string from the geohash based long formatstatic Rectangle
toBoundingBox(java.lang.String geohash)
Computes the bounding box coordinates from a given geohashstatic Point
toPoint(java.lang.String geohash)
Returns aPoint
instance from a geohash string
-
-
-
Field Detail
-
PRECISION
public static final int PRECISION
maximum precision for geohash strings- See Also:
- Constant Field Values
-
-
Method Detail
-
toPoint
public static Point toPoint(java.lang.String geohash) throws java.lang.IllegalArgumentException
Returns aPoint
instance from a geohash string- Throws:
java.lang.IllegalArgumentException
-
toBoundingBox
public static Rectangle toBoundingBox(java.lang.String geohash)
Computes the bounding box coordinates from a given geohash- Parameters:
geohash
- Geohash of the defined cell- Returns:
- GeoRect rectangle defining the bounding box
-
getNeighbors
public static java.util.Collection<? extends java.lang.CharSequence> getNeighbors(java.lang.String geohash)
Calculate all neighbors of a given geohash cell.- Parameters:
geohash
- Geohash of the defined cell- Returns:
- geohashes of all neighbor cells
-
addNeighbors
public static final <E extends java.util.Collection<? super java.lang.String>> E addNeighbors(java.lang.String geohash, E neighbors)
Add all geohashes of the cells next to a given geohash to a list.- Parameters:
geohash
- Geohash of a specified cellneighbors
- list to add the neighbors to- Returns:
- the given list
-
addNeighborsAtLevel
public static final <E extends java.util.Collection<? super java.lang.String>> E addNeighborsAtLevel(java.lang.String geohash, int level, E neighbors)
Add all geohashes of the cells next to a given geohash to a list.- Parameters:
geohash
- Geohash of a specified celllevel
- level of the given geohashneighbors
- list to add the neighbors to- Returns:
- the given list
-
getNeighbor
public static final java.lang.String getNeighbor(java.lang.String geohash, int level, int dx, int dy)
Calculate the geohash of a neighbor of a geohash- Parameters:
geohash
- the geohash of a celllevel
- level of the geohashdx
- delta of the first grid coordinate (must be -1, 0 or +1)dy
- delta of the second grid coordinate (must be -1, 0 or +1)- Returns:
- geohash of the defined cell
-
longEncode
public static final long longEncode(double lon, double lat, int level)
Encode lon/lat to the geohash based long format (lon/lat interleaved, 4 least significant bits = level)
-
stringEncode
public static final java.lang.String stringEncode(double lon, double lat)
Encode to a geohash string from full resolution longitude, latitude)
-
stringEncode
public static final java.lang.String stringEncode(double lon, double lat, int level)
Encode to a level specific geohash string from full resolution longitude, latitude
-
stringEncode
public static final java.lang.String stringEncode(long geoHashLong)
Encode to a geohash string from the geohash based long format
-
mortonEncode
public static long mortonEncode(java.lang.String hash)
Encode to a morton long value from a given geohash string
-
encodeLatitude
public static int encodeLatitude(double latitude)
encode latitude to integer
-
encodeLongitude
public static int encodeLongitude(double longitude)
encode longitude to integer
-
decodeLatitude
public static final double decodeLatitude(java.lang.String geohash)
returns the latitude value from the string based geohash
-
decodeLongitude
public static final double decodeLongitude(java.lang.String geohash)
returns the latitude value from the string based geohash
-
decodeLongitude
public static double decodeLongitude(long hash)
decode longitude value from morton encoded geo point
-
decodeLatitude
public static double decodeLatitude(long hash)
decode latitude value from morton encoded geo point
-
-