Near <t>(MongoDB C#驱动程序)</t>中的maxDistance单位

时间:2013-06-16 10:25:29

标签: c# mongodb geospatial mongodb-.net-driver nosql

maxDistance方法的Query<U>.Near<T>参数的单位类型是什么(在MongoDB C#Driver中)?

注意:我创建了一个索引,并检查它是否为“2d”索引:

var keys = IndexKeys<Loc>.GeoSpatial<double[]>(l => l.Coordinates);
var options = IndexOptions.SetName("Loc_Coordinates").SetBackground(true);
Locations.EnsureIndex(keys, options);

索引检查:

var idxes = Locations.GetIndexes();
foreach (var i in idxes)
{
    Program.Log(i.Key);
}

索引是:

{ "_id" : 1 }
{ "Coordinates" : "2d" }

我认为单位应该是弧度,所以我写了这个帮手方法将米转换为弧度:

const double EarthRadius_m = 6371.01 * 1000d; //m
public static double MeterToRadian(this double meter) { return meter / EarthRadius_m; }

但如果我使用米(在密集区域),我会得到太多结果,如果我使用弧度,我什么都没有,除非它很大(乘以1000!)。也许MeterToRadian有一些问题?或者单位是km而不是m? (但在网站上,它表示它是米)。

我通过以下代码查询集合:

var radius = meter.MeterToRadian();
var query = Query<Loc>.Near<double[]>(l => l.Coordinates, lon, lat, radius);
var answer = Locations.Find(query).SetLimit(limit).ToList();

0 个答案:

没有答案