次の方法で共有


geometry (Transact-SQL)

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

SQL Server では、geometry 空間データ型の一連のメソッドをサポートしています。 このようなメソッドには、Open Geospatial Consortium (OGC) 標準で定義されている geometry に関するメソッド、およびこの標準に基づいた Microsoft の一連の拡張メソッドがあります。

geometry 空間データ型のメソッドの詳細については、「geometry データ型メソッド リファレンス」を参照してください。

geometry 型の登録

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

使用例

A. 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

B. 2 つの geometry インスタンスが交差する地点を返す

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();

C. 計算列で geometry 型を使用する

次の例では、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
)

関連項目

概念

geometry データ型メソッド リファレンス

空間データ (SQL Server)