Class 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 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 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