public static void displayPointRanges(Scanner in) { double[][] point = getPoints(in, 1); long hash, hashUpper; double lon, lat, lonUpper, latUpper; for (int i = 63; i >= 45; i -= GeoPointField.PRECISION_STEP) { BytesRefBuilder brb = new BytesRefBuilder(); NumericUtils.longToPrefixCoded( GeoUtils.mortonHash(point[0][LON_INDEX], point[0][LAT_INDEX]), i, brb); BytesRef br = brb.get(); hash = NumericUtils.prefixCodedToLong(br); hashUpper = hash | ((1L << i) - 1); lon = GeoUtils.mortonUnhashLon(hash); lat = GeoUtils.mortonUnhashLat(hash); lonUpper = GeoUtils.mortonUnhashLon(hashUpper); latUpper = GeoUtils.mortonUnhashLat(hashUpper); System.out.println( i + ": " + br + " " + hash + " (" + lon + "," + lat + ")" + " : " + "(" + lonUpper + "," + latUpper + ")"); } }
public GeoPoint resetFromGeoHash(String geohash) { final long hash = GeoHashUtils.mortonEncode(geohash); return this.reset(GeoUtils.mortonUnhashLat(hash), GeoUtils.mortonUnhashLon(hash)); }
public GeoPoint resetFromIndexHash(long hash) { lon = GeoUtils.mortonUnhashLon(hash); lat = GeoUtils.mortonUnhashLat(hash); return this; }