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__': |