我需要将公里转换为弧度。这个公式正确吗?
我需要MongoDB中近球面的弧度。

如果我需要将5公里转换为弧度,请执行以下操作:

5/6371

我得到这个结果(看起来正确):
0.000784806153

更新

这不是数学问题,我真的需要知道我是否在进行从千米到弧度的正确计算,以便能够使用MongoDB进行地理空间查询。

最佳答案

公里到弧度或距离和弧度转换

我到了这里,感到很困惑,然后我看了一些可汗学院的录像带,这在当时意义更大,然后我便能够从其他来源实际了解方程式,从而进一步自我教育。

这是我的思路。

  • 我看到一个关于弧度的图表,我首先想到了地理位置点的半径,这是错误的
  • 相反,想象地球完美地切成两半,只专注于两半。

  • mongodb - 转换公里到弧度-LMLPHP
  • 现在将那一半面向您并查看数学图表。

  • mongodb - 转换公里到弧度-LMLPHP
  • 认为数学图是从地球的中心开始显示的,它根据弧长测量地球的边缘,毕竟地球都是弯曲的,因此任何测量都将在地球表面弯曲。
  • 弧度就像一个圆的度数,而弧长实际上就是数学图中A与B之间的距离。
  • 对您来说,它是鸟瞰图上的一条直线,但实际上,它只是3d空间中沿着地球边缘的曲线。
  • Eureka !一个灯泡在我的头上闪着。
  • distance = earth radius * radians
    因此,有了一些非常简单的代数...
    radians = distance / earth radius
    公里radians = distance in km / 6371
    mi radians = distance in mi / 3959
    有时仔细想一想很有趣。

    仔细检查一下... https://www.translatorscafe.com/unit-converter/en/length/7-89/kilometer-Earth%E2%80%99s%20equatorial%20radius/

    现在关于Mongo v3.2,专门在node.js中使用mongoose

    尽管我已尽力而为,mongo仍无法像在2d索引上的$ geoNear查询所记录的那样正常运行。 没用过
      let aggregate = [
        {
          $geoNear: {
            near: { type: 'Point', coordinates: lonLatArray },
            spherical: false,
            distanceField: 'dist.calculated',
            includeLocs: 'dist.location',
            maxDistance: distanceInMeters / (6371 * 1000),
            query: {
              mode: 'nearme',
              fcmToken: { $exists: true }
            }
          }
        },
        { $skip: skip },
        { $limit: LIMIT }
      ];
    

    但是,当我更改为2dsphere索引时,它可以正常工作。
      let aggregate = [
        {
          $geoNear: {
            near: { type: 'Point', coordinates: lonLatArray },
            spherical: true,
            distanceField: 'dist.calculated',
            includeLocs: 'dist.location',
            maxDistance: distanceInMeters,
            query: {
              mode: 'nearme',
              fcmToken: { $exists: true }
            }
          }
        },
        { $skip: skip },
        { $limit: LIMIT }
      ];
    

    但是,教育似乎从来都不是浪费时间。

    关于mongodb - 转换公里到弧度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12180290/

    10-10 16:09