首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 空間資料實戰 (五):資料表中建立、儲存與查詢空間資料類型

     編輯:關於SqlServer

前言

承接前幾篇空間資料基礎與物件建立,本文進入實務階段:如何在資料表中定義空間資料欄位、指派 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;

三、指派空間參考識別碼 (SRID)

部分空間類型 (特別是 geography) 強制要求 SRID。透過 CHECK 條件約束實現:

ALTER TABLE [Cities]
ADD CONSTRAINT [enforce_srid_geographycolumn]
CHECK ([Geo].STSrid = 4326);  -- WGS 84

四、插入空間資料 (WKT 格式轉換)

使用靜態方法 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;

查詢結果含空間欄位

轉換為 WKT / 字串輸出

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 等) 實現豐富的位置智慧功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved