次の方法で共有


geography データ型の概要

地理空間データ型の geography は、SQL Server では .NET 共通言語ランタイム (CLR) のデータ型として実装されています。この型は、球体地球座標系のデータを表します。SQL Server の geography データ型は、GPS の緯度経度座標などの楕円体 (球体地球) データを格納します。

geography 型の登録

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

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

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326));

INSERT INTO SpatialTable (GeogCol1)
VALUES (geography::STGeomFromText('POLYGON((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));
GO

2 番目の例では、STIntersection() メソッドを使用して、前の例で挿入した 2 つの geography インスタンスが交差する点を返します。

DECLARE @geog1 geography;
DECLARE @geog2 geography;
DECLARE @result geography;

SELECT @geog1 = GeogCol1 FROM SpatialTable WHERE id = 1;
SELECT @geog2 = GeogCol1 FROM SpatialTable WHERE id = 2;
SELECT @result = @geog1.STIntersection(@geog2);
SELECT @result.STAsText();