承接前幾篇空間資料基礎與物件建立,本文進入實務階段:如何在資料表中定義空間資料欄位、指派 SRID、插入 WKT 格式資料、查詢並轉換輸出,完整示範空間資料在關聯表中的完整生命週期操作。
語法與一般建表無異,僅欄位型別使用 geometry 或 geography。
CREATE TABLE [Cities] (
[ID] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[CityName] VARCHAR(255) NOT NULL,
[CityLocation] GEOMETRY NOT NULL
);
ALTER TABLE [Cities]
ADD [Geo] GEOGRAPHY;
部分空間類型 (特別是 geography) 強制要求 SRID。透過 CHECK 條件約束實現:
ALTER TABLE [Cities]
ADD CONSTRAINT [enforce_srid_geographycolumn]
CHECK ([Geo].STSrid = 4326); -- WGS 84
使用靜態方法 STGeomFromText (geometry) 或 STGeomFromText (geography) 將 WKT 字串轉為二進位空間物件。
INSERT INTO Cities (CityName, CityLocation)
VALUES (
'重慶市',
geometry::STGeomFromText(
'POLYGON((107.04352 28.870554, 107.043891 28.873231, ...))',
4326
)
);
註:WKT 字串過長此處省略,實際使用時需提供完整座標環。
SELECT * FROM Cities;

DECLARE @cq GEOMETRY;
SELECT @cq = CityLocation FROM Cities WHERE ID = 1;
SELECT @cq AS 重慶市_二進位;
SELECT @cq.ToString() AS 重慶市_ToString; -- 含 Z/M 值
SELECT @cq.STAsText() AS 重慶市_WKT; -- 標準 WKT,無 Z/M

空間資料型別無縫整合於關聯表,透過 STGeomFromText/STGeomFromText 實現 WKT 雙向轉換,搭配 SSMS 空間結果分頁可視覺化預覽,極大降低 GIS 應用開發門檻。後續可結合空間索引與空間查詢方法 (STDistance, STIntersects 等) 實現豐富的位置智慧功能。