我在 RavenDB 中有类似的文档:
public class MyClass
{
...
public double Latitude { get; set; }
public double Longitude { get; set; }
...
}
现在我想查找位置在由 N 和 S 纬度以及 W 和 E 经度指定的矩形范围内的所有文档。
一个简单的方法是这样的查询:
.Where(o => o.Latitude <= boundaryNorth &&
o.Latitude >= boundarySouth &&
o.Longitude >= boundaryWest &&
o.Longitude <= boundaryEast)
但是,如果边界矩形位于反子午线上,这将不起作用,使查询复杂化(检查是否是这种情况,将边界矩形分成两个,创建两个由 || 组合的先前表达式)。
我知道您可以创建一个空间索引,然后从给定原点查询位置在指定半径内的所有文档,但我还没有找到任何其他查询该索引的方法。
还有其他查询空间索引的方法吗?