空間類型 - geometry (Transact-SQL)
適用於:Microsoft Fabric 中的 SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
SQL 資料庫
平面空間資料類型 geometry 在 SQL Server 中是實作為通用語言執行平台 (CLR) 資料類型。 此類型代表以 Euclidean (平面) 座標系統表示的資料。
SQL Server 支援一組 geometry 空間資料類型方法。 這些方法包括「開放地理空間協會」(OGC) 標準及該標準的一組 Microsoft 延伸模組所定義的 geometry 相關方法。
geometry 方法的誤差容許範圍可以大到 1.0e-7 *。 範圍指的是 geometry 物件的點之間大致的最大距離。
註冊 geometry 類型
geometry 類型已預先定義,而且可在每一個資料庫中使用。 您可以建立 geometry 類型的資料表資料行,並使用與其他 CLR 類型相同的方式來操作 geometry 資料。 可用於保存和非保存計算資料行。
備註
在 Microsoft Fabric 的 SQL 資料庫中,支援 geography 和 geometry 數據類型,但無法鏡像到 Fabric OneLake。
範例
A. 示範如何加入及查詢幾何資料
下列兩個範例示範如何加入及查詢幾何資料。 第一個範例會建立具有識別資料行及 geometry
資料行 GeomCol1
的資料表。 第三個資料行會將 geometry
資料行轉譯成它的開放地理空間協會 (Open Geospatial Consortium,OGC) 已知的文字 (Well-Known Text,WKT) 表示法,並使用 STAsText()
方法。 然後會插入兩個資料列:一個資料列包含 LineString
的 geometry
執行個體,另一個資料列包含 Polygon
執行個體。
IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL
DROP TABLE dbo.SpatialTable;
GO
CREATE TABLE SpatialTable
( id int IDENTITY (1,1),
GeomCol1 geometry,
GeomCol2 AS GeomCol1.STAsText() );
GO
INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('LINESTRING (100 100, 20 180, 180 180)', 0));
INSERT INTO SpatialTable (GeomCol1)
VALUES (geometry::STGeomFromText('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));
GO
B. 傳回兩個幾何執行個體的交集
第二個範例使用 STIntersection()
方法傳回之前插入之兩個 geometry
執行個體相交的點。
DECLARE @geom1 geometry;
DECLARE @geom2 geometry;
DECLARE @result geometry;
SELECT @geom1 = GeomCol1 FROM SpatialTable WHERE id = 1;
SELECT @geom2 = GeomCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geom1.STIntersection(@geom2);
SELECT @result.STAsText();
C. 在計算資料行中使用幾何
下列範例會使用 geometry 類型來建立含有保存之計算資料行的資料表。
IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL
DROP TABLE dbo.SpatialTable;
GO
CREATE TABLE SpatialTable
(
locationId int IDENTITY(1,1),
location geometry,
deliveryArea as location.STBuffer(10) persisted
)