Exemple #1
0
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)
Exemple #2
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)
Exemple #3
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
Exemple #4
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