【问题标题】:MongoDB geo distance/radius to useful unitsMongoDB地理距离/半径到有用单位
【发布时间】:2010-08-12 18:42:42
【问题描述】:

我正在使用 MongoDB 地理空间查询 -- $neargeoNear 等 -- 我想知道如何转换 geoNear 命令的 dis 结果以及 @ 987654325@ 参数用于$within 查询到/来自可读单位(如英里或公里)。

【问题讨论】:

  • 看起来有一个比标记为正确的答案更好的答案。可以改吗?

标签: mongodb geospatial human-readable


【解决方案1】:

使用geoNear命令以公里为单位添加参数:

distanceMultiplier: (6371 * Math::PI / 180.0)

【讨论】:

    【解决方案2】:

    如果您的数据采用地理坐标(即 30.47921 N -121.45724 W),那么您需要使用所需的单位转换基础投影(选择保留距离的投影),或者您需要将坐标中的距离转换为某种东西像英里。

    使用Haversine 公式进行计算 http://www.movable-type.co.uk/scripts/latlong.html

    【讨论】:

    • 感谢您的回答!我的数据确实是纬度/经度点,我可以使用 Haversine 公式通过插入两组纬度/经度点来计算结果和原点之间的距离,但我仍然不确定具体该怎么做“dis”和“半径”。你能澄清一下“转换你的基础投影”是什么意思吗?似乎转换“dis”可能比插入两个纬度/经度集更简单,不是吗?我需要重新排列 Haversine 公式以满足我的需要吗?如果是这样,方程中的哪些变量可能会插入“dis”/“radius”?
    • 嗨,克里斯,我有一个类似的问题 (stackoverflow.com/questions/3878702/…)。如果你们不介意,你能更详细地解释一下解决方案吗?你必须使用map/reduce吗?再次感谢!
    • 如果你们使用 Mongo > 1.8 可以使用球形模型:mongodb.org/display/DOCS/…
    【解决方案3】:

    请注意,如果您使用的是 Mongodb 2.6.0 版,则存在一个错误,该错误始终使球坐标系的新行为能够以米为单位返回距离(基于 WGS84 坐标)。

    文档指出,在旧坐标而不是 GeoJSON 中提供 $near 参数仍应返回弧度。这已在较新的版本中得到修复。

    错误报告:Bug #13540

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多