用于保存和处理地理点的轻量级django地理字段。它支持通过地理哈希搜索附近的点
django-geofield的Python项目详细描述
Django Geofield
==
![](https://api.travis-ci.org/joway/django-geofield.svg?branch=master)
用于保存和处理地理点的轻量级django地理字段。它支持通过地理哈希搜索附近的点。
quick start
--
0。安装django geofield
pip安装django geofield
1。在模型中定义geoppositionfield如下::
类点(models.model):
…
位置=geoppositionfield(db_index=true)
2。运行“python manage.py makemigrations”和“python manage.py migrate”,使其生效
3。该字段将使用字符串将地理点保存到数据库中,如下所示:
position=geopposition(lat,lon,precision=6))
'wtmm7w,30.491457473054005333779059583321327222290625120.04238742548123317547119222586566162109375'
4。如果要查询其geohash与给定点完全匹配的点,则可以:
points_matched=point.objects.filter(position_uu geoprecise=pos.position.geohash)
如果要查询展开区域中的点以消除geohash的边际误差,您可以:
pos=point.objects.get(id=1)
points=point.objects.filter(position\u geosearch=pos.position.geohash)
“\u geosearch”查找将发现所有点都有9个(1个中心点和8个扩展点)geohash中的一个。
如果要查询特定范围内的点,应查找geohash表以获取所需的geohash长度,然后只搜索裁剪的长度。
points=point.objects.filter(position\geosearch=pos.position.geohash[0:4])
![](http://images.cnitblog.com/blog/522490/201309/09185913-9F6F65FC3D3C40ECB3328970831C625C.png)
你应该自己编写代码来过滤结果。
>关于geohhash
---
>
[wikipedia(http://en.wikipedia.org/wiki wiki/geohhash)关于geohhash
<
>Python
-“2.7”
-“3.2”
-“3.3.3”
>-“3.4”
-“3.4”
-“3.5”
-“3.5”
-“3.3.3.3”<.5-dev“3.5开发分支
-“每晚”#目前指向3.6-dev
谢谢
----
许可证
----
mit
==
![](https://api.travis-ci.org/joway/django-geofield.svg?branch=master)
用于保存和处理地理点的轻量级django地理字段。它支持通过地理哈希搜索附近的点。
quick start
--
0。安装django geofield
pip安装django geofield
1。在模型中定义geoppositionfield如下::
类点(models.model):
…
位置=geoppositionfield(db_index=true)
2。运行“python manage.py makemigrations”和“python manage.py migrate”,使其生效
3。该字段将使用字符串将地理点保存到数据库中,如下所示:
'wtmm7w,30.491457473054005333779059583321327222290625120.04238742548123317547119222586566162109375'
4。如果要查询其geohash与给定点完全匹配的点,则可以:
points_matched=point.objects.filter(position_uu geoprecise=pos.position.geohash)
如果要查询展开区域中的点以消除geohash的边际误差,您可以:
pos=point.objects.get(id=1)
points=point.objects.filter(position\u geosearch=pos.position.geohash)
“\u geosearch”查找将发现所有点都有9个(1个中心点和8个扩展点)geohash中的一个。
如果要查询特定范围内的点,应查找geohash表以获取所需的geohash长度,然后只搜索裁剪的长度。
points=point.objects.filter(position\geosearch=pos.position.geohash[0:4])
![](http://images.cnitblog.com/blog/522490/201309/09185913-9F6F65FC3D3C40ECB3328970831C625C.png)
你应该自己编写代码来过滤结果。
>关于geohhash
---
>
[wikipedia(http://en.wikipedia.org/wiki wiki/geohhash)关于geohhash
<
>Python
-“2.7”
-“3.2”
-“3.3.3”
>-“3.4”
-“3.4”
-“3.5”
-“3.5”
-“3.3.3.3”<.5-dev“3.5开发分支
-“每晚”#目前指向3.6-dev
谢谢
----
许可证
----
mit