A python library for geohash encoding, decoding and finding neighbour cells. This is a python port of Chris Veness' javascript implementation.
pipenv install geolib
or
pip install geolib
from geolib import geohash
>>> # geohash.encode(latitude, longitude, precision)
>>> geohash.encode('70.2995', '-27.9993', 7)
'gkkpfve'
>>> # geohash.decode(geohash), returns latitude, longitude as tuple of decimals
>>> geohash.decode('gkkpfve')
(70.2995, -27.9993)
>>> # geohash.neighbours(geohash)
... # returns a namedtuple (n, ne, e, se, s, sw, w, nw)
>>> neighbours = geohash.neighbours('gcpuyph')
>>> neighbours
('gcpuypk', 'gcpuypm', 'gcpuypj', 'gcpuynv', 'gcpuynu', 'gcpuyng', 'gcpuyp5', 'gcpuyp7')
>>> neighbours.ne
'gcpuypm'
>>> # geohash.adjacent(geohash, direction)
>>> geohash.adjacent('gcpuyph', 'n')
'gcpuypk'
>>> # geohash.bounds(geohash)
... # returns a namedtuple ((sw_lat, sw_lon), ((ne_lat, ne_lon))
>>> bounds = geohash.bounds('ezs42')
>>> bounds
((42.583, -5.625), (42.627, -5.58)))
>>> bounds.sw.lat
42.583