我希望创建一个大型的GPS坐标数据库,可以通过说“返回所有与[这个坐标]相距'n'米以内的坐标”来查询。
我想知道如何在Sqlserver2008中实现四叉树索引?
我想编写一个.NET模块,调用使用四叉树的查询,以便我可以快速检索对象。
如何实现上述功能?
提前感谢。
我希望创建一个大型的GPS坐标数据库,可以通过说“返回所有与[这个坐标]相距'n'米以内的坐标”来查询。
我想知道如何在Sqlserver2008中实现四叉树索引?
我想编写一个.NET模块,调用使用四叉树的查询,以便我可以快速检索对象。
如何实现上述功能?
提前感谢。
CREATE TABLE mytable (id INT NOT NULL, mypoint GEOGRAPHY NOT NULL, ...)
CREATE SPATIAL INDEX SX_mytable_mypoint ON mytable (mypoint)
SELECT *
FROM mytable
WHERE mypoint.STDistance(geography::STGeomFromText(N'POINT (latitude longitude)', 4326) <= @N
我知道你的文章特别提到了在SqlServer2008中实现QuadTree,但是你也可以使用一个在托管代码中实现的选项。
B-Tree
算法,用于在镶嵌表面上索引单元。SQL Server
没有本地支持R-Tree
或Q-Tree
。但即便如此,它仍然具有良好的性能。如果涉及到GPS数据,最好将位置保存为GEOGRAPHY
,因为GEOMETRY
假定平面坐标(而不是球形坐标)。 - Quassnoi2008
,所有由SQL Server
本地实现的索引都是B-Tree
。 - Quassnoi