/geo_python

Simple GEO library based on Redis GEO commands

Primary LanguagePythonMIT LicenseMIT

GEO Python

Documentation Status Updates

Simple GEO library based on Redis GEO commands

From version 3.2, Redis contains a set of very wonderful commands: the GEO commands (https://redis.io/commands#geo)

With these commands, we can easily develop LBS or GEO application.

Unfortunately, these features are not in redis-py(https://github.com/andymccurdy/redis-py) released packages, so we can only use its development version.

Live Demo

https://github.com/JerryLeooo/geo_example

Installation

Now to use geo_python, you have to install the development version of redis-py first, and I am trysng to fix this...

$ pip install https://github.com/andymccurdy/redis-py/archive/master.zip#egg=redis

$ pip install geo_python

Get Started

In [1]: from geo_python import Point
In [2]: class MyPoint(Point):
   ...:     __key__ = 'my_point'
   ...:


In [3]: point = MyPoint.create(120, 40, 'my point 1')
In [4]: MyPoint.query_by_pos(point.longitude, point.latitude)
Out[4]: [<MyPoint __key__:my_point longitude:120.000000894 latitude:39.9999999108 member:my point 1>]


In [5]: MyPoint.query_by_member(point.member)
Out[5]: [<MyPoint __key__:my_point longitude:120.000000894 latitude:39.9999999108 member:my point 1>]


In [6]: point.update(member='my point 2')
In [7]: print point.member
my point 2

In [8]: another_point = MyPoint.get_by_member(point.member)

In [9]: print another_point
<MyPoint __key__:my_point longitude:120.000000894 latitude:39.9999999108 member:my point 2>

In [10]: print MyPoint.dist(point, another_point)
0.0

In [11]: point.geo_hash()
Out[11]: 'wxj7d9v2fs0'

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.