/geolib

Python geohash library

Primary LanguagePythonMIT LicenseMIT

Build Status Documentation python 2.7|3.4|3.5|3.6|3.7 Downloads

Geolib

A python library for geohash encoding, decoding and finding neighbour cells. This is a python port of Chris Veness' javascript implementation.

Wikipedia reference

Installation

pipenv install geolib or pip install geolib

Usage

from geolib import geohash

Encode a latitude, longtiude to geohash

>>> # geohash.encode(latitude, longitude, precision)
>>> geohash.encode('70.2995', '-27.9993', 7)
'gkkpfve'

Decode a geohash to latitude, longitude

>>> # geohash.decode(geohash), returns latitude, longitude as tuple of decimals
>>> geohash.decode('gkkpfve')
(70.2995, -27.9993)

Find neighbouring cells of a geohash

>>> # 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'

Find adjacent cell in a given direction

>>> # geohash.adjacent(geohash, direction)
>>> geohash.adjacent('gcpuyph', 'n')
'gcpuypk'

Find SW/NE latitude/longitude bounds of a geohash

>>> # 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