8

有没有人使用 mongengine 进行地理空间搜索?我似乎无法让它工作!必须进入 GeoPointField 的数据格式是什么?

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

4

2 回答 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

于 2012-07-20T23:30:04.477 回答
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

于 2013-03-21T08:45:19.890 回答