Share via


geometry データ型の概要

平面空間データ型の geometry は、SQL Server では共通言語ランタイム (CLR) のデータ型として実装されています。この型は、ユークリッド (平面) 座標系のデータを表します。

geometry 型の登録

geometry 型は、各データベースで使用できるように事前に定義されています。geometry 型のテーブル列を作成し、他の CLR 型を使用するときと同じように geometry データを操作できます。

次の 2 つの例は、geometry 型のデータの追加方法とクエリ方法を示しています。最初の例では、ID 列と geometry 型の GeomCol1 列を含むテーブルを作成します。3 番目の列で、geometry 型の列をその Open Geospatial Consortium (OGC) の Well-Known Text (WKT) 表現で示し、STAsText() メソッドを使用します。次に 2 つの行が挿入されます。1 つは、geometry の LineString インスタンスを含む行で、もう 1 つは 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

2 番目の例では、STIntersection() メソッドを使用して、前の例で挿入した 2 つの 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();