Пространственная индексация - PullRequest
6 голосов
/ 26 августа 2009

Я хочу создать большую базу данных GPS-координат, которую можно запросить, сказав «Вернуть все координаты, которые находятся в пределах« n »метров от [этой координаты]».

Я хотел бы знать, как реализовать индексирование Quadtree в Sqlserver2008?

Я хочу написать модуль .net, который вызывает запрос, использующий четырехугольное дерево, чтобы я мог получить объекты так быстро.

Как я могу реализовать вышеуказанную функциональность?

Заранее спасибо

Ответы [ 2 ]

5 голосов
/ 26 августа 2009
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
1 голос
/ 30 августа 2009

Я знаю, что ваша статья специально ссылается на реализацию QuadTree в SqlServer2008, но в качестве опции вы можете использовать одну, реализованную в управляемом коде.

Смотри мою статью: http://www.codeproject.com/KB/recipes/QuadTree.aspx

...