def decode_uint64(ui64): if _geohash: latlon = _geohash.decode_int(ui64 % 0xFFFFFFFFFFFFFFFF, LONG_ZERO) if latlon: return latlon lat, lon = _uint64_deinterleave(ui64) return (180.0 * lat / (1 << 32) - 90.0, 360.0 * lon / (1 << 32) - 180.0)
def decode_uint64(ui64): if _geohash: latlon = _geohash.decode_int(ui64 % 0xFFFFFFFFFFFFFFFF) if latlon: return latlon lat,lon = _uint64_deinterleave(ui64) return (180.0*lat/(1<<32) - 90.0, 360.0*lon/(1<<32) - 180.0)
def decode(treecode, delta=False): if _geohash and len(treecode) < 64: unit = int(_geohash.intunit / 2) treecode += "3" # generate center coordinate args = [] for i in range(int(len(treecode) / unit)): t = 0 for j in range(unit): t = (t << 2) + { "0": 0, "1": 2, "2": 1, "3": 3 }[treecode[i * unit + j]] args.append(t) if len(treecode) % unit: t = 0 off = int(len(treecode) / unit) * unit for i in range(len(treecode) % unit): t = (t << 2) + { "0": 0, "1": 2, "2": 1, "3": 3 }[treecode[off + i]] for j in range(unit - len(treecode) % unit): t = t << 2 args.append(t) args.extend([ 0, ] * int(128 / _geohash.intunit - len(args))) (lat, lon) = _geohash.decode_int(*tuple(args)) if delta: b = 1 << (len(treecode) + 1) return lat, lon, 180.0 / b, 360.0 / b return lat, lon (lat, lon, bitlength) = _decode_c2i(treecode) lat = (lat << 1) + 1 lon = (lon << 1) + 1 b = 1 << (bitlength + 1) if delta: return 180.0 * lat / b - 90.0, 360.0 * lon / b - 180.0, 180.0 / b, 360.0 / b return 180.0 * lat / b - 90.0, 360.0 * lon / b - 180.0
def decode(treecode, delta=False): if _geohash and len(treecode) < 64: unit = int(_geohash.intunit / 2) treecode += "3" # generate center coordinate args = [] for i in range(int(len(treecode) / unit)): t = 0 for j in range(unit): t = (t << 2) + {"0": 0, "1": 2, "2": 1, "3": 3}[treecode[i * unit + j]] args.append(t) if len(treecode) % unit: t = 0 off = int(len(treecode) / unit) * unit for i in range(len(treecode) % unit): t = (t << 2) + {"0": 0, "1": 2, "2": 1, "3": 3}[treecode[off + i]] for j in range(unit - len(treecode) % unit): t <<= 2 args.append(t) args.extend([0, ] * int(128 / _geohash.intunit - len(args))) (lat, lon) = _geohash.decode_int(*tuple(args)) if delta: b = 1 << (len(treecode) + 1) return lat, lon, 180.0 / b, 360.0 / b return lat, lon (lat, lon, bitlength) = _decode_c2i(treecode) lat = (lat << 1) + 1 lon = (lon << 1) + 1 b = 1 << (bitlength + 1) if delta: return 180.0 * lat / b - 90.0, 360.0 * lon / b - 180.0, 180.0 / b, 360.0 / b return 180.0 * lat / b - 90.0, 360.0 * lon / b - 180.0