Class Geohash


  • public class Geohash
    extends 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 Detail

      • PRECISION

        public static final int PRECISION
        maximum precision for geohash strings
        See Also:
        Constant Field Values
    • Method Detail

      • toBoundingBox

        public static Rectangle toBoundingBox​(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 Collection<? extends CharSequence> getNeighbors​(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 Collection<? super String>> E addNeighbors​(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 Collection<? super String>> E addNeighborsAtLevel​(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 String getNeighbor​(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 String stringEncode​(double lon,
                                                double lat)
        Encode to a geohash string from full resolution longitude, latitude)
      • stringEncode

        public static final String stringEncode​(double lon,
                                                double lat,
                                                int level)
        Encode to a level specific geohash string from full resolution longitude, latitude
      • stringEncode

        public static final String stringEncode​(long geoHashLong)
        Encode to a geohash string from the geohash based long format
      • mortonEncode

        public static long mortonEncode​(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​(String geohash)
        returns the latitude value from the string based geohash
      • decodeLongitude

        public static final double decodeLongitude​(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