2009-08-26 72 views
6

Chcę utworzyć dużą bazę danych współrzędnych GPS, które można sprawdzić, mówiąc "Zwróć wszystkie współrzędne, które są w obrębie" n "liczników [tej współrzędnej]".Spatial Indexing

Chciałbym wiedzieć, jak zaimplementować indeksowanie Quadtree w Sqlserver2008?

Chcę napisać moduł .net, który wywołuje kwerendę, która używa drzewa quad, aby można było szybko pobierać obiekty.

Jak mogę wdrożyć powyższą funkcjonalność?

góry dzięki

Odpowiedz

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

Dzięki za that.But moich Sqlserver2008 typ danych jest geometria nie geography.Actually, chcę wiedzieć, co implementacje drzewo quad jest w sqlserver2008 jeśli utworzyć indeks przestrzennej indeksu na moim stole? oznacza to, że jest to implementacja quad-tree? – user98454

+0

Nie, to "B-drzewo", które indeksuje komórki na tesselowanej powierzchni. 'SQL Server' natywnie nie obsługuje' R-Tree' ani 'Q-Tree'. Jednak wciąż ma przyzwoitą wydajność. Dla danych "GPS" lepiej zachować miejsca jako "GEOGRAFIA", ponieważ "GEOMETRIA" zakłada proste współrzędne (w przeciwieństwie do sferycznego). – Quassnoi

+0

Oznacza q-drzewo realizacji nie jest możliwe w sqlserver2008? – user98454