SQL Server 2008 引入兩大空間資料類型:Geometry (平面/歐氏幾何) 與 Geography (球面/地理座標)。本文從最基礎的平面幾何切入,建立空間資料核心觀念。
| 類型 | 說明 | WKT 範例 |
|---|---|---|
| Point | 單一點座標 | POINT (10 20) |
| LineString | 連續線段 | LINESTRING (0 0, 10 10, 20 5) |
| Polygon | 封閉多邊形(外環 + 0~N 內環) | POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)) |
| MultiPoint | 點集合 | MULTIPOINT (0 0, 10 10) |
| MultiLineString | 線集合 | MULTILINESTRING ((0 0, 10 10), (20 20, 30 30)) |
| MultiPolygon | 多邊形集合 | MULTIPOLYGON (((0 0, 10 0, 10 10, 0 10, 0 0))) |
| GeometryCollection | 混合幾何集合 | GEOMETRYCOLLECTION (POINT(1 1), LINESTRING(0 0, 10 10)) |

集合類型皆為 GeometryCollection 特例;Multi* 限定單一幾何型別,GeometryCollection 允許混合。
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POINT (1 2)', 0); -- SRID=0 表平面座標
SELECT @g.ToString(); -- 輸出 WKT
POINT (1 2 100 3.5) 可選擇性包含,平面幾何較少用,地理類型常用於高程與線性參考。0;地理類型常用 4326 (WGS84)。不同 SRID 物件不可直接運算(結果為 NULL)。SELECT
@g.STGeometryType() AS Type, -- 'Point'
@g.STSrid AS SRID, -- 0
@g.STDimension() AS Dim, -- 0
@g.STIsEmpty() AS IsEmpty, -- 0
@g.STX AS X, -- 1
@g.STY AS Y; -- 2
DECLARE @donut geometry = geometry::STGeomFromText(
'POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (3 3, 7 3, 7 7, 3 7, 3 3))', 0);
-- 第一環為外環,第二環為內環 (洞)
SELECT @donut.STIsValid(); -- 1 表示幾何有效
X Y (經度 緯度);Geography 建構時同樣遵循 長度 寬度 而非 緯度 經度。.STIsValid() = 0。.STSrid = 目標SRID 或重建物件。Geometry 以直覺的平面座標建模,適合室內定位、CAD 圖面、遊戲地圖等非地球曲面場景。掌握 WKT 建構、基本屬性與有效性檢查,即可進階學習空間索引與幾何運算。