適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric SQL Database
地理空間データ型の geography は、SQL Server では .NET 共通言語ランタイム (CLR) のデータ型として実装されています。 この型は、球体地球座標系のデータを表します。 SQL Server geography データ型は、GPS の緯度経度座標などの楕円体 (球体地球) データを格納します。
注
Fabric SQL データベースでは、空間型の列は使用できますが、Fabric OneLake にはミラー化されません。
SQL Server では、geography 空間データ型の一連のメソッドがサポートされています。 これには、Open Geospatial Consortium (OGC) 標準で定義されている geography に関するメソッドやその標準に基づいた Microsoft の一連の拡張メソッドがあります。
geography メソッドの許容誤差は、1.0e-7 * までです。 エクステントは、 geography オブジェクトのポイント間のおおよその最大距離を参照します。
geography 型の登録
geography 型は、各データベースで使用できるように事前に定義されています。 geography 型のテーブル列を作成し、システムが提供する他のデータ型を使用するときと同じように geography データを操作できます。 保存される計算列と保存されない計算列で使用できます。
解説
Microsoft Fabric の SQL データベースでは、 geography と geometry データ型はサポートされていますが、Fabric OneLake に ミラー化することはできません。
例
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
);