我需要将公里数转换为弧度.这是正确的公式吗?在MongoDB中我需要radars for nearsphere.
如果我需要将5公里转换为弧度,我会这样做:
5/6371
Run Code Online (Sandbox Code Playgroud)
我得到了这个结果(看起来是否正确):
0.000784806153
Run Code Online (Sandbox Code Playgroud)
UPDATE
这不是一个数学问题,我真的需要知道我是否正在从公里到弧度进行正确的计算,以便能够使用MongoDB进行地理空间查询.
我到了这里,感到很困惑,然后我看了一些可汗学院的录像带,这在当时意义更大,然后我便能够从其他来源实际了解方程式,从而进一步自我教育。
这是我的思路。
我看到一个关于弧度的图表,我首先认为从地理位置的半径是错误的。
而是想象一下,地球完美地切成两半,只专注于一半。
distance = earth radius * radians
因此,有了一些非常简单的代数...
radians = distance / earth radius
公里
radians = distance in km / 6371
MI
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 }
];
Run Code Online (Sandbox Code Playgroud)
但是,当我更改为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 }
];
Run Code Online (Sandbox Code Playgroud)
但是,教育似乎从来都不是浪费时间。
你是对的。在球面几何中,将距离除以球体的半径。请注意,您应该保留单位。因此,如果您计算以公里为单位的球体半径,那么您应该使用以公里为单位的距离。如果您使用英里,那么您应该使用以英里为单位的地球半径(大约:3,963.2)。
| 归档时间: |
|
| 查看次数: |
18655 次 |
| 最近记录: |