【问题标题】:Mongoengine geospatial searchMongoengine 地理空间搜索
【发布时间】:2012-07-20 04:01:03
【问题描述】:

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

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

【问题讨论】:

  • 请将答案标记为正确 - 它会在谷歌搜索时帮助其他人。
  • 对不起,我在度假,已解决!

标签: mongodb geolocation geospatial pymongo mongoengine


【解决方案1】:

你能发布你想要做什么吗??

点数据必须存储在带key的字段中

"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=无):

存储纬度和经度的列表。

0.4 版中的新功能。

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

【讨论】:

  • 任何想法如何使用 mongoengine 进行查询? mongodb 提供如下内容:db.places.find( { loc : { $near : [50,50] } } ).limit(20) 但我可以在 mongoengine 文档中找到它
  • 请注意,GeoPointField 现在已弃用,取而代之的是 PointField
【解决方案2】:

我在mongoengine docs找到了答案:

有一些特殊的运算符用于执行地理查询, 可以与 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2020-09-03
    • 2014-11-27
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多