Complete implementation of the Munroe geohashing algorithm.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import hashlib
def geohash(latitude, longitude, datedow):
'''Compute geohash() using the Munroe algorithm.
>>> geohash(37.421542, -122.085589, b'2005-05-26-10458.68')
37.857713 -122.544543
'''
h = hashlib.md5(datedow).hexdigest()
p, q = [('%f' % float.fromhex('0.' + x)) for x in (h[:16], h[16:32])]
print('%d%s %d%s' % (latitude, p[1:], longitude, q[1:]))
if __name__ == '__main__':
import doctest
doctest.testmod()
|
See detailed explanation at http://xkcd.com/426/ .