geometry (Transact-SQL)

平面空間資料類型 geometry 會在 SQL Server 中實作為 Common Language Runtime (CLR) 資料類型。此類型代表 Euclidean (平面) 座標系統中的資料。

SQL Server 2008 支援 geometry 空間資料類型的一組方法。這些方法包括開放式地理空間協會 (Open Geospatial Consortium,OGC) 標準所定義的 geometry 方法以及該標準的一組 Microsoft 擴充。

如需有關 geometry 空間資料類型方法的詳細資訊,請參閱<geometry 資料類型方法參考>。

註冊 geometry 類型

geometry 類型已預先定義,而且可在每一個資料庫中使用。您可以建立 geometry 類型的資料表資料行,並使用與其他 CLR 類型相同的方式來操作 geometry 資料。

範例

下列兩個範例示範如何加入及查詢幾何資料。第一個範例會建立具有識別資料行及 geometry 資料行 GeomCol1 的資料表。第三個資料行會將 geometry 資料行轉譯成它的開放式地理空間協會 (Open Geospatial Consortium,OGC) 已知的文字 (Well-Known Text,WKT) 表示法,並使用 STAsText() 方法。然後會插入兩個資料列:一個資料列包含 geometry 的 LineString 執行個體,另一個資料列包含 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

第二個範例使用 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();