Mongoengine地理空间搜索

8

有人使用过mongengine的地理空间搜索吗?我似乎无法使其正常工作! GeoPointField中需要输入什么数据格式?

应该如何格式化? 我在文档中找不到任何关于格式化的信息!


请标记答案为正确 - 这将有助于其他人在谷歌搜索时找到答案。 - Ross
抱歉,我在度假,已经修复了! - verrochio
2个回答

10

你能否发一下你想做的事情?

点数据必须存储在一个带有关键字 "loc":{"lon":51.10682735591432, "lat":-114.11773681640625}loc: [22.23432, 21.23212] 的字段中。

使用Mongoengine,可以支持地理点字段。

Class Location:
  point = GeoPointField()

new_location = Location(point=[21.1232,23.23432])
new_location.save()

类似上面的代码应该可以工作。

GeoPointField类(db_field=None, name=None, required=False, default=None, unique=False, unique_with=None, primary_key=False, validation=None, choices=None, verbose_name=None, help_text=None):

存储纬度和经度的列表。

版本0.4中新增。

http://mongoengine-odm.readthedocs.org/en/latest/apireference.html#mongoengine.GeoPointField


3
有没有想过如何使用Mongoengine进行查询?MongoDB提供了一些查询方式,例如:db.places.find( { loc : { $near : [50,50] } } ).limit(20),但是我在Mongoengine文档中找不到相关信息。 - Ron
请注意,GeoPointField现已弃用,建议使用PointField - Daryl

3
我在mongoengine文档中找到了答案:
以下是关于执行地理查询的几个特殊运算符,可与GeoPointFields一起使用:
- `within_distance` - 提供一个包含点和最大距离的列表(例如[(41.342, -87.653), 5]) - `within_spherical_distance` - 与上述相同,但使用球形地理模型(例如[(41.342, -87.653), 5/earth_radius]) - `near` - 按离给定点的距离对文档进行排序,`near_sphere` - 与上述相同,但使用球形地理模型 - `within_box` - 过滤文档以仅包含在给定边界框内的文档(例如[(35.0, -125.0), (40.0, -100.0)]) - `within_polygon` - 过滤文档以仅包含在给定多边形内的文档(例如[(41.91,-87.69), (41.92,-87.68), (41.91,-87.65), (41.89,-87.65)])。.. 注意:需要Mongo Server 2.0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接