Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
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
Example #9
0
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
Example #10
0
def decode(*args):
  return _geohash.decode(*args)