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 replace org.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>>
    E
    addNeighbors​(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>>
    E
    addNeighborsAtLevel​(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 point
    static double decodeLatitude​(java.lang.String geohash)
    returns the latitude value from the string based geohash
    static double decodeLongitude​(long hash)
    decode longitude value from morton encoded geo point
    static double decodeLongitude​(java.lang.String geohash)
    returns the latitude value from the string based geohash
    static int encodeLatitude​(double latitude)
    encode latitude to integer
    static int encodeLongitude​(double longitude)
    encode longitude to integer
    static java.lang.String getNeighbor​(java.lang.String geohash, int level, int dx, int dy)
    Calculate the geohash of a neighbor of a geohash
    static 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 string
    static 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, latitude
    static java.lang.String stringEncode​(long geoHashLong)
    Encode to a geohash string from the geohash based long format
    static Rectangle toBoundingBox​(java.lang.String geohash)
    Computes the bounding box coordinates from a given geohash
    static Point toPoint​(java.lang.String geohash)
    Returns a Point instance from a geohash string

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Method Details

    • toPoint

      public static Point toPoint​(java.lang.String geohash) throws java.lang.IllegalArgumentException
      Returns a Point 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 cell
      neighbors - 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 cell
      level - level of the given geohash
      neighbors - 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 cell
      level - level of the geohash
      dx - 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