SQL Server 2008 引入 geometry (平面) 與 geography (地球曲面) 兩大空間資料類型,支援 OGC 標準方法。本實驗以 Adventure Works 自行車通路為例,示範建立空間資料、查詢空間關係、建立空間索引。
管理全美通路地理資訊,支援查詢:
STIntersects, STWithin)STArea)STDistance)CREATE TABLE Store (
StoreID INT PRIMARY KEY,
StoreName NVARCHAR(100),
StoreLocation GEOGRAPHY -- 地理空間類型
);
INSERT INTO Store (StoreName, StoreLocation)
VALUES ('Aerobic Exercise Company',
geography::GeomFromGML(
'
34.235504 -118.988734
', 4326)); -- SRID 4326 = WGS84
-- 找出在某多邊形銷售區域內的通路
DECLARE @region GEOGRAPHY = geography::STPolyFromText(
'POLYGON((-120 34, -118 34, -118 36, -120 36, -120 34))', 4326);
SELECT StoreName FROM Store
WHERE StoreLocation.STWithin(@region) = 1;
CREATE SPATIAL INDEX idx_Store_Location ON Store(StoreLocation)
USING GEOGRAPHY_GRID
WITH (GRIDS = (LEVEL_1 = MEDIUM, LEVEL_2 = MEDIUM, LEVEL_3 = MEDIUM, LEVEL_4 = MEDIUM),
CELLS_PER_OBJECT = 16);
空間索引將地球表面分解為階層式網格,每個物件對應覆蓋的網格儲存格。查詢時先以索引快速篩選候選物件,再精確計算空間關係,大幅降低計算量。