Mongodb 将公里转换为弧度
我需要把公里转换成弧度。这个公式正确吗? 我需要MongoDB中近球的弧度 如果需要将5公里转换为弧度,请执行以下操作:Mongodb 将公里转换为弧度,mongodb,radians,Mongodb,Radians,我需要把公里转换成弧度。这个公式正确吗? 我需要MongoDB中近球的弧度 如果需要将5公里转换为弧度,请执行以下操作: 5/6371 我得到了这个结果(它看起来正确吗): 更新 这不是一个数学问题,我真的需要知道从公里到弧度的计算是否正确,以便能够使用MongoDB进行地理空间查询。你是正确的。 在球面几何体中,用球体的半径划分距离。 注意你应该保留这些单位。所以如果你以公里为单位计算球体半径,那么你应该以公里为单位计算距离。如果使用英里,则应使用以英里为单位的地球半径(约:3963.2)。
5/6371
我得到了这个结果(它看起来正确吗):
更新
这不是一个数学问题,我真的需要知道从公里到弧度的计算是否正确,以便能够使用MongoDB进行地理空间查询。你是正确的。
在球面几何体中,用球体的半径划分距离。
注意你应该保留这些单位。所以如果你以公里为单位计算球体半径,那么你应该以公里为单位计算距离。如果使用英里,则应使用以英里为单位的地球半径(约:3963.2)。公里到弧度或距离和弧度的转换
我来到这里,感到困惑,然后我看了一些可汗学院的视频,在这一点上更有意义,然后我能够从其他来源看方程来进一步教育自己
这是我的思路
距离=地球半径*弧度
所以用一些非常简单的代数
弧度=距离/地球半径
km
radians=以公里为单位的距离/6371
mi
radians=以米为单位的距离/3959
有时候想清楚是很有趣的
仔细检查这个
现在关于Mongov3.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 }
];
但是教育似乎从来都不是浪费时间。要转变观念: 到弧度的距离:以与距离测量相同的单位将距离除以球体(例如地球)的半径。
弧度到距离:将弧度测量值乘以要将距离转换为的单位系统中球体(例如地球)的半径 例如:如果要以弧度转换5英里,则需要将距离(5英里)除以球体半径(也以英里为单位),即3959。那么5/3959是0.0012629451
多亏了地球的赤道半径约为3963.2英里s或6378.1公里 注:1公里=0.621371英里 以下是一些简单的计算公式: 100公里到英里:(100*0.621371) 距离辐射线100公里:100/6378.1 距离辐射源100英里:100/3963.2
因此,如果你有公里数的数据,那么你必须使用(100/6378.1),对于英里数的数据,你可以使用(100/3963.2)角度=弧长/半径。“你就是这么做的吗?”我猜是达菲莫,地球。毕竟,海里是通过将度转换成距离的形式来计算的。那么,划分是个问题吗?我问上面的公式/结果是否正确的原因是,我需要我的iOS应用程序在对我的MongoDB后端执行计算时使用正确的弧度。耳的子午半径约为6367.445公里。角度的弧度度量在下表中给出。看起来你很好。
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 }
];