将千米转换为弧度

21

我需要将公里转换为弧度。这个公式正确吗?我需要在 MongoDB 中使用 nearsphere(附近球体)时要用到弧度。

如果我需要将5公里转换为弧度,我会这样做:

5/6371

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

0.000784806153

更新

这不是一个数学问题,我确实需要知道我从千米转换到弧度的计算是否正确,以便能够在MongoDB中执行地理空间查询。


@duffymo 我猜是地球。毕竟,海里是通过将度数转换为一种距离形式得出的。 - Jon Hanna
所以除法是个问题?难道给提问者拍拍头就是答案吗? - duffymo
我之所以问上面的公式/结果是否正确,是因为我需要我的iOS应用程序在与我的MongoDB后端进行计算时使用正确的弧度。 - Jonathan Clark
4
地球的南北半径约为6,367.445公里。角度的弧度测量方法可在http://www.themathpage.com/atrig/arc-length.htm中找到。看起来你没问题。 - duffymo
你的问题是重复的,参考这个链接:http://stackoverflow.com/questions/25138862/converting-earth-kilometers-to-radians-in-php。你的公式与那个答案相同。 - Steve Tarver
显示剩余2条评论
4个回答

18

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

我来到这里时感到困惑,后来我看了一些可汗学院的视频,在那时它变得更加清晰,然后我能够实际查看其他来源的方程式以进一步自我教育。

以下是我的思路。

  1. 我看到一个关于弧度的图表,我首先想到地理位置点的半径,这是错误的。

  2. 相反,想象地球被完美地切成两半,只关注其中一半。

enter image description here

  1. 现在将那一半面对你,看看数学图表。

enter image description here

  1. 将数学图表视为从地球中心测量边缘的弧长,毕竟地球是弯曲的,所以任何测量都将在地球的表面上弯曲。
  2. 弧度就像圆圈中的度数,而弧长就是数学图表中A和B之间的距离。
  3. 对你来说,在鸟瞰图上是一条直线,但在3D空间中沿着地球边缘只是弧线。
  4. 欧拉!我脑海中灵光一闪。

距离 = 地球半径 * 弧度

因此通过一些非常简单的代数运算...

弧度 = 距离 / 地球半径

公里弧度 = 公里距离 / 6371

英里弧度 = 英里距离 / 3959

有时思考过程很有趣。

请仔细检查... https://www.translatorscafe.com/unit-converter/zh-CN/length/7-89/kilometer-Earth's%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 }
  ];

但教育似乎从来不会浪费时间。


3

您是正确的。 在球面几何中,我们将距离除以球体半径。注意要保持单位一致。如果您使用千米计算球体半径,则应使用千米作为距离单位。如果您使用英里,则应使用地球半径(约为3,963.2英里)作为距离单位。


3
地球的赤道半径约为3,963.2英里6,378.1千米注意:1公里=0.621371英里 以下是一些简单的计算公式:

100千米转英里:(100 * 0.621371)

100千米转弧度:100 / 6378.1

100英里转弧度:100 / 3963.2

因此,如果您的数据以千米为单位,则必须使用(100 / 6378.1),而对于英里数据,您可以使用(100 / 3963.2)

1

转换:

距离到弧度: 将距离按照相同单位除以球体的半径(例如地球)。
弧度到距离: 将弧度乘以球体的半径(例如地球),以想要转换成的距离的单位系统为准。

例如: 如果你想将5英里转换成弧度,则需要将距离(5英里)按照相同单位除以球体的半径(也是英里),即3959。然后5/3959等于0.0012629451...

谢谢


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接