我需要将公里转换为弧度。这是正确的公式吗?我需要 MongoDB 中近球的弧度。
如果我需要将 5 公里转换为弧度,我会这样做:
5/6371
我得到了这个结果(看起来是否正确):
0.000784806153
更新
这不是数学问题,我真的需要知道我是否在从公里到弧度进行正确的计算,以便能够使用 MongoDB 进行地理空间查询。
我到了这里,很困惑,然后我看了一些可汗学院的视频,那时它更有意义,然后我能够实际查看其他来源的方程式来进一步教育自己。
这是我的思路。
我看到一个关于弧度的图表,我首先认为来自地理位置点的半径是错误的。
相反,想象地球被完美地切成两半,然后只关注其中的一半。
distance = earth radius * radians
因此,使用一些非常简单的代数...
radians = distance / earth radius
公里
radians = distance in km / 6371
米
radians = distance in mi / 3959
有时候想一想很有趣。
尽管我尽了最大的努力,但 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,963.2)。
地球的赤道半径约为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)
转换:
与弧度的距离:用与距离测量相同的单位将距离除以球体(例如地球)的半径。
弧度到距离:将弧度测量值乘以要转换为距离的单位系统中的球体(例如地球)的半径。
例如:如果您想将 5 英里转换为弧度,那么我们需要将距离(5 英里)除以球体的半径(也以英里为单位),即 3959。那么 5/3959 就是 0.0012629451...
谢谢