2009-08-26 112 views
6

我想创建一个大型数据库的GPS坐标,可以说“返回是[这个坐标]‘N’米内的所有坐标”进行查询。空间索引

我想知道如何实现在SQLServer2008的四叉树索引?

我想编写调用它采用四叉树,使我可以快速检索对象的查询一个.NET模块。

我如何能实现上述功能?

在此先感谢

回答

5
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 
+0

感谢that.But我SQLServer2008的数据类型几何不geography.Actually,我想知道的四叉树的实现是SQLSERVER2008如果我在我的表上创建索引空间索引?这意味着它是四叉树实现吗? – user98454 2009-08-26 13:49:38

+0

不,这是一个“B-树”,用于索引tesselated表面上的单元格。 “SQL Server”本身不支持“R-Tree”或“Q-Tree”。但是,它仍然有不俗的表现。对于'GPS'数据,最好将位置保留为'GEOGRAPHY',因为'GEOMETRY'假定为简单坐标(而不是球形)。 – Quassnoi 2009-08-26 13:58:19

+0

意味着q-tree实现在sqlserver2008中是不可能的? – user98454 2009-08-26 14:05:37