【问题标题】:Using MongoDB's Geospacial index with 3d data将 MongoDB 地理空间索引与 3d 数据结合使用
【发布时间】:2011-03-25 17:40:55
【问题描述】:

我有一组文档,每个文档都包含存储在 MongoDB 集合中的 3 空间中的一个点。 MongoDB 目前只有 2 空间的地理空间索引。有没有办法利用地理空间索引对 3 空间数据进行类似查询?

【问题讨论】:

  • 你的意思是你想要x、y、z而不是x?
  • +1 - 我什至不知道 Mongo 有地理空间索引..
  • 它有一个用于地理空间的球面和盒子模型,盒子模型对硬核 GIS 类型没有那么有用,但对于定位应用程序来说很有趣。
  • 是的,Mongodb 有平面二维和球形二维的地理空间索引。 (mongodb.org/display/DOCS/Geospatial+Indexing) 如果您在地球表面绘制点,它可以构建地理空间索引并进行快速邻近查询,不幸的是我的数据有第三个维度。
  • mongo中n维地理空间支持的功能请求是jira.mongodb.org/browse/SERVER-691

标签: algorithm mongodb geospatial


【解决方案1】:

你可以通过压缩其中一个维度来组合它,但你会损失一半的精度。

假设它们是 64 位密钥,并且您想存储三个 32 位坐标: [(x

哎呀,您甚至可以将三个交错并存储在一个键中:

xxx

年年

zzz

xyzxyzyz

【讨论】:

  • 我认为这会弄乱地理空间索引用于“近”的概念,不是吗?
  • 是和不是。如果你用最随机的变量设置粉碎维度的低位,你应该没问题。交错位的第二个技巧非常适合将任意数量的维度压缩为一个。
  • 我不太明白这个。这将如何在 MongoDB JavaScript shell 代码中实际工作?您能否提供一个如何定义索引和示例查询的示例?谢谢!另外,你会怎么做:stackoverflow.com/questions/6003943/…
  • 对于精确查询 -- 是的,但是您不需要空间索引 -- 常规索引可以正常工作,并且您可以进行多列索引,因此不需要杂乱无章。对于近距离查询 - 您已经有效地丢弃了 y 维度(更糟糕的是,在 x 维度中引入了噪声),因此您不妨再次跳过杂乱无章并只是空间索引 [x, z]。
猜你喜欢
  • 1970-01-01
  • 2016-02-12
  • 2013-02-04
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 2014-01-04
相关资源
最近更新 更多