显然有很多索引方法可以实现这一点,但我需要一个最快的方法。
答案 0 :(得分:1)
如果您想保存二维线路,并且您的查询是二维范围查询,则可以使用 Segment Tree 。
查询的算法复杂度为O(log ^ 2 N)。
答案 1 :(得分:1)
检查四叉树....和DotSpatial以进行空间类型处理,包括四叉树实现。
答案 2 :(得分:1)
您还可以尝试R-tree。 http://sourceforge.net/projects/cspatialindexrt/提供了一个C#实现。
R-tree应该具有Segment Tree的性能,并且上面的实现应该是独立的,并且相当独立于许多额外的代码引用,但我还没有对它进行测试。
答案 3 :(得分:0)
这没有银弹。它取决于数据的类型(即,仅点,仅线,三角形,网格,它们的任意组合等)和查询的类型(面内的点,线相交,最近的邻居,圆内的任何几何形状或框等)。
您有一个为特定类型的查询和数据设计的数据结构。如果要对所有类型的查询和所有类型的数据使用单个数据结构,则必须权衡空间或时间或两者兼而有之。您可以采取相当快的方法,但通常不会达到最佳状态。
根据我的经验,一个足以应付大多数几何对象并可以处理多种类型查询的数据结构,我建议使用AABB-Tree: