A lightweight Django Geo Field to save and handle Geo Points. It supports to search the nearby points by their geohash
Project description
=====
Django-GeoField
=====
A lightweight Django Geo Field to save and handle Geo Points. It supports to search the nearby points by their geohash.
Quick start
-----------
0. Install django-geofield
pip install django-geofield
1. Add "django-geofield" to your INSTALLED_APPS setting like this::
INSTALLED_APPS = (
...
'django-geofield',
)
2. Define GeoPositionField in your Model like this::
class Point(models.Model):
...
position = GeoPositionField(db_index=True)
3. Run `python manage.py makemigrations` and `python manage.py migrate` to make it effect
4. The field will save a geo point with a string into database like this :
Point.objects.create(
position=GeoPosition(lat, lon, precision=6))
'wtmm7w,30.49145747305400533377905958332121372222900390625,120.042387425481223317547119222581386566162109375'
5. If you want to query the points whose geohash is matched exactly with the given point , you can :
pos = Point.objects.get(id=1)
points_matched = Point.objects.filter(position__geoprecise=pos.position.geohash)
The '__geoprecise' will find all points have the same geohash.
6. If you want to query the points in expand area to eliminate the geohash's marginal error, you can :
pos = Point.objects.get(id=1)
points_matched = Point.objects.filter(position__geosearch=pos.position.geohash)
The '__geosearch' lookup will find all points have one of 9 ( 1 center point and 8 expand point) geohash .
### **License**: MIT
Django-GeoField
=====
A lightweight Django Geo Field to save and handle Geo Points. It supports to search the nearby points by their geohash.
Quick start
-----------
0. Install django-geofield
pip install django-geofield
1. Add "django-geofield" to your INSTALLED_APPS setting like this::
INSTALLED_APPS = (
...
'django-geofield',
)
2. Define GeoPositionField in your Model like this::
class Point(models.Model):
...
position = GeoPositionField(db_index=True)
3. Run `python manage.py makemigrations` and `python manage.py migrate` to make it effect
4. The field will save a geo point with a string into database like this :
Point.objects.create(
position=GeoPosition(lat, lon, precision=6))
'wtmm7w,30.49145747305400533377905958332121372222900390625,120.042387425481223317547119222581386566162109375'
5. If you want to query the points whose geohash is matched exactly with the given point , you can :
pos = Point.objects.get(id=1)
points_matched = Point.objects.filter(position__geoprecise=pos.position.geohash)
The '__geoprecise' will find all points have the same geohash.
6. If you want to query the points in expand area to eliminate the geohash's marginal error, you can :
pos = Point.objects.get(id=1)
points_matched = Point.objects.filter(position__geosearch=pos.position.geohash)
The '__geosearch' lookup will find all points have one of 9 ( 1 center point and 8 expand point) geohash .
### **License**: MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-geofield-0.0.1.tar.gz
(9.4 kB
view details)
File details
Details for the file django-geofield-0.0.1.tar.gz
.
File metadata
- Download URL: django-geofield-0.0.1.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5ed5da846941b568d361d45c4c5d232e56abc641f24b5d53bb7dabadefe84c6 |
|
MD5 | 80f617eabe10bf008fdd84cef91c2c2b |
|
BLAKE2b-256 | 2578aff9c1cd6edd79a92a0e5d7e2d0f60f72fab303e02abcb8b17faea84af54 |