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

SQL Server 2008 空間資料類型入門:Geometry 平面幾何基礎與 WKT 建構

     編輯:關於SqlServer

SQL Server 2008 引入兩大空間資料類型:Geometry (平面/歐氏幾何) 與 Geography (球面/地理座標)。本文從最基礎的平面幾何切入,建立空間資料核心觀念。

Geometry 七大基本幾何類型

類型說明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))

Geometry 類型關係圖

集合類型皆為 GeometryCollection 特例;Multi* 限定單一幾何型別,GeometryCollection 允許混合。

WKT 建構語法與 SRID

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POINT (1 2)', 0);  -- SRID=0 表平面座標
SELECT @g.ToString();  -- 輸出 WKT
  • Z (仰角) 與 M (度量):POINT (1 2 100 3.5) 可選擇性包含,平面幾何較少用,地理類型常用於高程與線性參考。
  • SRID (Spatial Reference ID):識別座標參考系統。平面幾何固定 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

進階:Polygon 內環 (洞) 建構

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 表示幾何有效

常見陷阱

  • 座標順序:WKT 為 X Y (經度 緯度);Geography 建構時同樣遵循 長度 寬度 而非 緯度 經度。
  • 環閉合:Polygon 首尾座標必須相同,否則 .STIsValid() = 0。
  • SRID 不符:跨 SRID 運算回傳 NULL,務必先 .STSrid = 目標SRID 或重建物件。

結語

Geometry 以直覺的平面座標建模,適合室內定位、CAD 圖面、遊戲地圖等非地球曲面場景。掌握 WKT 建構、基本屬性與有效性檢查,即可進階學習空間索引與幾何運算。

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