Mongodb地理空间索引,2d vs 2dsphere

时间:2016-10-11 22:15:24

标签: mongodb mongoose mongodb-indexes 2dsphere

根据文档说的关于2d索引:

  

2d指数支持在平坦的欧几里德平面上进行计算。 2d索引还支持球体上的仅距离计算,但对于球体上的几何计算(例如$ geoWithin),将数据存储为GeoJSON对象并使用2dsphere索引类型。

我不理解的事情很少......

  1. 我不明白 distance-only 是什么意思,它是指Chord(连接两个表面点通过线"内部"表面)的线?
  2. 该计算如何对付地球经度和纬度?如果那是为欧几里德空间设计的,它如何以弧度表示距离?
  3. 相反,使用2dsphere索引,它可以在两个点之间正确计算表面距离,但它可以在不指定360度经度线和180度纬度线的情况下工作。它是专门为地球经度和latinudes编程的吗?
  4. 如果3.以上是正确的。它是否考虑到地球是扁球体而不是一个完美的球体?

1 个答案:

答案 0 :(得分:1)

  1. 否。它表示使用Haversine公式的表面距离。
  2. 我不确定你要问的关于"它如何以弧度表示距离"但如果你的意思是lat / lon角度值和增量转换为弧度,它是:PI * angle / 180.0。有关完整的Haversine公式,请查看此链接以获取84种语言的实现:http://rosettacode.org/wiki/Haversine_formula
  3. 2dsphere索引使用WGS84数据(定义边界)参见:http://spatialreference.org/ref/epsg/4326/
  4. 不看他们的代码就不可能说了。但鉴于他们使用WGS84并谈论一个" 类似地球的范围"这是非常值得怀疑的。我猜测他们使用的是Haversine(所以距离计算只是近似值)。