我想创建一个大型数据库的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的四叉树,但作为一个选项,您可以使用一个托管代码实现。
感谢that.But我SQLServer2008的数据类型几何不geography.Actually,我想知道的四叉树的实现是SQLSERVER2008如果我在我的表上创建索引空间索引?这意味着它是四叉树实现吗? – user98454 2009-08-26 13:49:38
不,这是一个“B-树”,用于索引tesselated表面上的单元格。 “SQL Server”本身不支持“R-Tree”或“Q-Tree”。但是,它仍然有不俗的表现。对于'GPS'数据,最好将位置保留为'GEOGRAPHY',因为'GEOMETRY'假定为简单坐标(而不是球形)。 – Quassnoi 2009-08-26 13:58:19
意味着q-tree实现在sqlserver2008中是不可能的? – user98454 2009-08-26 14:05:37