空間型 - geography
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
地理空間データ型の geography は、SQL Server では .NET 共通言語ランタイム (CLR) のデータ型として実装されています。 この型は、球体地球座標系のデータを表します。 SQL Server geography データ型は、GPS の緯度経度座標などの楕円体 (球体地球) データを格納します。
SQL Server では、geography 空間データ型の一連のメソッドがサポートされています。 これには、Open Geospatial Consortium (OGC) 標準で定義されている geography に関するメソッドやその標準に基づいた Microsoft の一連の拡張メソッドがあります。
geography メソッドの許容誤差は、1.0e-7 * までです。 エクステントは、geography オブジェクトの地点間の最大近似距離です。
geography 型の登録
geography 型は、各データベースで使用できるように事前に定義されています。 geography 型のテーブル列を作成し、システムが提供する他のデータ型を使用するときと同じように geography データを操作できます。 保存される計算列と保存されない計算列で使用できます。
例
A. geography 型のデータの追加方法とクエリ方法を示す
次の例は、geography 型のデータの追加方法とクエリ方法を示しています。 最初の例では、ID 列と geography
型の GeogCol1
列を含むテーブルを作成します。 3 番目の列で、 geography
型の列をその Open Geospatial Consortium (OGC) の Well-Known Text (WKT) 表現で示し、 STAsText()
メソッドを使用します。 次に 2 つの行が挿入されます。1 つは、 LineString
の geography
インスタンスを含む行で、もう 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
B. 2 つの geography インスタンスが交差する点を返す
次の例では、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();
C. 計算列で geography 型を使用する
次の例では、geography 型を使用して、保存される計算列を持つテーブルを作成します。
IF OBJECT_ID ( 'dbo.SpatialTable', 'U' ) IS NOT NULL
DROP TABLE dbo.SpatialTable;
GO
CREATE TABLE SpatialTable
(
locationId int IDENTITY(1,1),
location geography,
deliveryArea as location.STBuffer(10) persisted
);