def bbox(hashcode): ''' decode a hashcode and get north, south, east and west border. ''' if _geohash: (lat,lon,lat_bits,lon_bits) = _geohash.decode(hashcode) latitude_delta = 180.0/(1<<lat_bits) longitude_delta = 360.0/(1<<lon_bits) return {'s':lat,'w':lon,'n':lat+latitude_delta,'e':lon+longitude_delta} (lat,lon,lat_length,lon_length) = _decode_c2i(hashcode) ret={} if lat_length: ret['n'] = 180.0*(lat+1-(1<<(lat_length-1)))/(1<<lat_length) ret['s'] = 180.0*(lat-(1<<(lat_length-1)))/(1<<lat_length) else: # can't calculate the half with bit shifts (negative shift) ret['n'] = 90.0 ret['s'] = -90.0 if lon_length: ret['e'] = 360.0*(lon+1-(1<<(lon_length-1)))/(1<<lon_length) ret['w'] = 360.0*(lon-(1<<(lon_length-1)))/(1<<lon_length) else: # can't calculate the half with bit shifts (negative shift) ret['e'] = 180.0 ret['w'] = -180.0 return ret
def bbox(hashcode): ''' decode a hashcode and get north, south, east and west border. ''' if _geohash: (lat, lon, lat_bits, lon_bits) = _geohash.decode(hashcode) latitude_delta = 180.0 / (1 << lat_bits) longitude_delta = 360.0 / (1 << lon_bits) return {'s': lat, 'w': lon, 'n': lat + latitude_delta, 'e': lon + longitude_delta} (lat, lon, lat_length, lon_length) = _decode_c2i(hashcode) if hasattr(float, "fromhex"): latitude_delta = 180.0 / (1 << lat_length) longitude_delta = 360.0 / (1 << lon_length) latitude = _int_to_float_hex(lat, lat_length) * 90.0 longitude = _int_to_float_hex(lon, lon_length) * 180.0 return {"s": latitude, "w": longitude, "n": latitude + latitude_delta, "e": longitude + longitude_delta} ret = {} if lat_length: ret['n'] = 180.0 * (lat + 1 - (1 << (lat_length - 1))) / (1 << lat_length) ret['s'] = 180.0 * (lat - (1 << (lat_length - 1))) / (1 << lat_length) else: # can't calculate the half with bit shifts (negative shift) ret['n'] = 90.0 ret['s'] = -90.0 if lon_length: ret['e'] = 360.0 * (lon + 1 - (1 << (lon_length - 1))) / (1 << lon_length) ret['w'] = 360.0 * (lon - (1 << (lon_length - 1))) / (1 << lon_length) else: # can't calculate the half with bit shifts (negative shift) ret['e'] = 180.0 ret['w'] = -180.0 return ret
def decode(hashcode, delta=False): ''' decode a hashcode and get center coordinate, and distance between center and outer border ''' if _geohash: (lat,lon,lat_bits,lon_bits) = _geohash.decode(hashcode) latitude_delta = 90.0/(1<<lat_bits) longitude_delta = 180.0/(1<<lon_bits) latitude = lat + latitude_delta longitude = lon + longitude_delta if delta: return latitude,longitude,latitude_delta,longitude_delta return latitude,longitude (lat,lon,lat_length,lon_length) = _decode_c2i(hashcode) lat = (lat<<1) + 1 lon = (lon<<1) + 1 lat_length += 1 lon_length += 1 latitude = 180.0*(lat-(1<<(lat_length-1)))/(1<<lat_length) longitude = 360.0*(lon-(1<<(lon_length-1)))/(1<<lon_length) if delta: latitude_delta = 180.0/(1<<lat_length) longitude_delta = 360.0/(1<<lon_length) return latitude,longitude,latitude_delta,longitude_delta return latitude,longitude
def decode(hashcode, delta=False): """ decode a hashcode and get center coordinate, and distance between center and outer border """ if _geohash: (lat, lon, lat_bits, lon_bits) = _geohash.decode(hashcode) latitude_delta = 180.0 / (2 << lat_bits) longitude_delta = 360.0 / (2 << lon_bits) latitude = lat + latitude_delta longitude = lon + longitude_delta if delta: return latitude, longitude, latitude_delta, longitude_delta return latitude, longitude (lat, lon, lat_length, lon_length) = _decode_c2i(hashcode) lat = (lat << 1) + 1 lon = (lon << 1) + 1 lat_length += 1 lon_length += 1 latitude = 180.0 * lat / (1 << lat_length) - 90.0 longitude = 360.0 * lon / (1 << lon_length) - 180.0 if delta: latitude_delta = 180.0 / (1 << lat_length) longitude_delta = 360.0 / (1 << lon_length) return latitude, longitude, latitude_delta, longitude_delta return latitude, longitude
def decode(hashcode, delta=False): ''' decode a hashcode and get center coordinate, and distance between center and outer border ''' if _geohash: (lat, lon, lat_bits, lon_bits) = _geohash.decode(hashcode) latitude_delta = 180.0 / (2 << lat_bits) longitude_delta = 360.0 / (2 << lon_bits) latitude = lat + latitude_delta longitude = lon + longitude_delta if delta: return latitude, longitude, latitude_delta, longitude_delta return latitude, longitude (lat, lon, lat_length, lon_length) = _decode_c2i(hashcode) lat = (lat << 1) + 1 lon = (lon << 1) + 1 lat_length += 1 lon_length += 1 latitude = 180.0 * (lat - (1 << (lat_length - 1))) / (1 << lat_length) longitude = 360.0 * (lon - (1 << (lon_length - 1))) / (1 << lon_length) if delta: latitude_delta = 180.0 / (1 << lat_length) longitude_delta = 360.0 / (1 << lon_length) return latitude, longitude, latitude_delta, longitude_delta return latitude, longitude
def bbox(hashcode): """ decode a hashcode and get north, south, east and west border. """ if _geohash: (lat, lon, lat_bits, lon_bits) = _geohash.decode(hashcode) latitude_delta = 180.0 / (1 << lat_bits) longitude_delta = 360.0 / (1 << lon_bits) return {"s": lat, "e": lon, "n": lat + latitude_delta, "w": lon + longitude_delta} (lat, lon, lat_length, lon_length) = _decode_c2i(hashcode) ret = {} ret["n"] = 180.0 * (lat + 1) / (1 << lat_length) - 90.0 ret["s"] = 180.0 * lat / (1 << lat_length) - 90.0 ret["e"] = 360.0 * (lon + 1) / (1 << lon_length) - 180.0 ret["w"] = 360.0 * lon / (1 << lon_length) - 180.0 return ret
def decode(hashcode, delta=False): """ Decode a hashcode and get center coordinate, and distance between center and outer border :param hashcode: :param delta: :return: latitude, longitude (optional lat & lon deltas) """ if _geohash: (lat, lon, lat_bits, lon_bits) = _geohash.decode(hashcode) latitude_delta = 90.0 / (1 << lat_bits) longitude_delta = 180.0 / (1 << lon_bits) latitude = lat + latitude_delta longitude = lon + longitude_delta if delta: return latitude, longitude, latitude_delta, longitude_delta return latitude, longitude (lat, lon, lat_length, lon_length) = _decode_c2i(hashcode) if hasattr(float, "fromhex"): latitude_delta = 90.0 / (1 << lat_length) longitude_delta = 180.0 / (1 << lon_length) latitude = _int_to_float_hex(lat, lat_length) * 90.0 + latitude_delta longitude = _int_to_float_hex(lon, lon_length) * 180.0 + longitude_delta if delta: return latitude, longitude, latitude_delta, longitude_delta return latitude, longitude lat = (lat << 1) + 1 lon = (lon << 1) + 1 lat_length += 1 lon_length += 1 latitude = 180.0 * (lat - (1 << (lat_length - 1))) / (1 << lat_length) longitude = 360.0 * (lon - (1 << (lon_length - 1))) / (1 << lon_length) if delta: latitude_delta = 180.0 / (1 << lat_length) longitude_delta = 360.0 / (1 << lon_length) return latitude, longitude, latitude_delta, longitude_delta return latitude, longitude
def decode(hashcode, delta=False): """ decode a hashcode and get center coordinate, and distance between center and outer border """ if _geohash: (lat, lon, lat_bits, lon_bits) = _geohash.decode(hashcode) latitude_delta = 90.0 / (1 << lat_bits) longitude_delta = 180.0 / (1 << lon_bits) latitude = lat + latitude_delta longitude = lon + longitude_delta if delta: return latitude, longitude, latitude_delta, longitude_delta return latitude, longitude (lat, lon, lat_length, lon_length) = _decode_c2i(hashcode) if hasattr(float, "fromhex"): latitude_delta = 90.0 / (1 << lat_length) longitude_delta = 180.0 / (1 << lon_length) latitude = _int_to_float_hex(lat, lat_length) * 90.0 + latitude_delta longitude = _int_to_float_hex(lon, lon_length) * 180.0 + longitude_delta if delta: return latitude, longitude, latitude_delta, longitude_delta return latitude, longitude lat = (lat << 1) + 1 lon = (lon << 1) + 1 lat_length += 1 lon_length += 1 latitude = 180.0 * (lat - (1 << (lat_length - 1))) / (1 << lat_length) longitude = 360.0 * (lon - (1 << (lon_length - 1))) / (1 << lon_length) if delta: latitude_delta = 180.0 / (1 << lat_length) longitude_delta = 360.0 / (1 << lon_length) return latitude, longitude, latitude_delta, longitude_delta return latitude, longitude
def bbox(hashcode): """ Decode a hashcode - return N, S, E, W borders :param hashcode: :return: """ if _geohash: (lat, lon, lat_bits, lon_bits) = _geohash.decode(hashcode) latitude_delta = 180.0 / (1 << lat_bits) longitude_delta = 360.0 / (1 << lon_bits) return {'s': lat, 'w': lon, 'n': lat + latitude_delta, 'e': lon + longitude_delta} (lat, lon, lat_length, lon_length) = _decode_c2i(hashcode) if hasattr(float, "fromhex"): latitude_delta = 180.0 / (1 << lat_length) longitude_delta = 360.0 / (1 << lon_length) latitude = _int_to_float_hex(lat, lat_length) * 90.0 longitude = _int_to_float_hex(lon, lon_length) * 180.0 return {"s":latitude, "w":longitude, "n":latitude+latitude_delta, "e":longitude+longitude_delta} ret = {} if lat_length: ret['n'] = 180.0 * (lat + 1 - (1 << (lat_length - 1))) / (1 << lat_length) ret['s'] = 180.0 * (lat - (1 << (lat_length - 1))) / (1 << lat_length) else: # can't calculate the half with bit shifts (negative shift) ret['n'] = 90.0 ret['s'] = -90.0 if lon_length: ret['e'] = 360.0 * (lon + 1 - (1 << (lon_length - 1))) / (1 << lon_length) ret['w'] = 360.0 * (lon - (1 << (lon_length - 1))) / (1 << lon_length) else: # can't calculate the half with bit shifts (negative shift) ret['e'] = 180.0 ret['w'] = -180.0 return ret
def decode(*args): return _geohash.decode(*args)