Geohash: Difference between revisions

Content added Content deleted
m (simplify syntax)
m (add decoder)
Line 272: Line 272:
<lang python>ch32 = "0123456789bcdefghjkmnpqrstuvwxyz"
<lang python>ch32 = "0123456789bcdefghjkmnpqrstuvwxyz"
bool2ch = {f"{i:05b}": ch for i, ch in enumerate(ch32)}
bool2ch = {f"{i:05b}": ch for i, ch in enumerate(ch32)}
ch2bool = {v : k for k, v in bool2ch.items()}



def bisect(val, mn, mx, bits):
def bisect(val, mn, mx, bits):
Line 302: Line 302:
return ''.join(geo)
return ''.join(geo)


def decoder(geo):
minmaxes, latlong = [[-90.0, 90.0], [-180.0, 180.0]], True
for c in geo:
for bit in ch2bool[c]:
minmaxes[latlong][bit != '1'] = sum(minmaxes[latlong]) / 2
latlong = not latlong

return minmaxes


if __name__ == '__main__':
if __name__ == '__main__':