geography インスタンスの作成、構築、およびクエリ

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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

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

新しい geography インスタンスの作成または構築

既存のインスタンスからの新しい geography インスタンスの作成

geography データ型には、既存のインスタンスに基づいて新しい geography インスタンスを作成するために使用できる組み込みメソッドが数多く用意されています。

geography の周りにバッファーを作成するには
STBuffer (geography データ型)

geography の周りにバッファーを作成して許容誤差を指定するには
BufferWithTolerance (geography データ型)

2 つの geography インスタンスの積集合から geography を作成するには
STIntersection (geography データ型)

2 つの geography インスタンスの和集合から geography を作成するには
STUnion (geography データ型)

一方の geography の、もう一方の geography と重なる部分を除いた点から geography を作成するには
STDifference (geography データ型)

Well-Known Text 入力からの geography インスタンスの構築

geography データ型には、Open Geospatial Consortium (OGC) WKT 表現から geography を生成する組み込みのメソッドが数多く用意されています。 WKT 標準は geography データをテキスト形式で交換できるテキスト文字列です。

WKT 入力から任意の型の geography インスタンスを構築するには
STGeomFromText (geography データ型)

Parse (geography データ型)

WKT 入力から geography Point インスタンスを構築するには
STPointFromText (geography データ型)

WKT 入力から geography MultiPoint インスタンスを構築するには
STMPointFromText (geography データ型)

WKT 入力から geography LineString インスタンスを構築するには
STLineFromText (geography データ型)

WKT 入力から geography MultiLineString インスタンスを構築するには
STMLineFromText (geography データ型)

WKT 入力から geography Polygon インスタンスを構築するには
STPolyFromText (geography データ型)

WKT 入力から geography MultiPolygon インスタンスを構築するには
STMPolyFromText (geography データ型)

WKT 入力から geography GeometryCollection インスタンスを構築するには
STGeomCollFromText (geography データ型)

Well-Known Binary 入力からの geography インスタンスの構築

WKB は、 Geography データをクライアント アプリケーションと SQL データベース間で交換することができる、OGC で指定されたバイナリ形式です。 次の関数は、WKB 入力を受け入れて geography インスタンスを構築します。

WKB 入力から任意の型の geography インスタンスを構築するには
STGeomFromWKB (geography データ型)

WKB 入力から geography Point インスタンスを構築するには
STPointFromWKB (geography データ型)

WKB 入力から geography MultiPoint インスタンスを構築するには
STMPointFromWKB (geography データ型)

WKB 入力から geography LineString インスタンスを構築するには
STLineFromWKB (geography データ型)

WKB 入力から geography MultiLineString インスタンスを構築するには
STMLineFromWKB (geography データ型)

WKB 入力から geography Polygon インスタンスを構築するには
STPolyFromWKB (geography データ型)

WKB 入力から geography MultiPolygon インスタンスを構築するには
STMPolyFromWKB (geography データ型)

WKB 入力から geography GeometryCollection インスタンスを構築するには
STGeomCollFromWKB (geography データ型)STGeomCollFromWKB (geography データ型)

GML Text 入力からの geography インスタンスの構築

geography データ型には、GML ( geography インスタンスの XML 表現) から geography インスタンスを生成するメソッドが用意されています。 SQL Server では、GML のサブセットをサポートします。

Geography Markup Language の詳細については、OGC の仕様の「 OGC の仕様、Geography Markup Language」を参照してください。

GML 入力から任意の型の geography インスタンスを構築するには
GeomFromGML (geography データ型)

geography インスタンスからの Well-Known Text および Well-Known Binary の取得

次のメソッドを使用して、 geography インスタンスの WKT 形式または WKB 形式のいずれかを取得できます。

geography インスタンスの WKT 表現を取得するには
STAsText (geography データ型)

ToString (geography データ型)

geography インスタンスの WKT 表現を Z と M の値も含めて取得するには
AsTextZM (geography データ型)

geography インスタンスの WKB 表現を取得するには
STAsBinary (geography データ型)

geography インスタンスの GML 表現を取得するには
AsGml (geography データ型)

geography インスタンスのプロパティと動作のクエリ

すべての geography インスタンスには、SQL Server のメソッドを使用して取得できるいくつかのプロパティがあります。 以下のトピックでは、geography 型のプロパティおよび動作と、geography 型に対するクエリを実行するためのメソッドについて説明します。

有効性、インスタンスの型、および GeometryCollection 情報

geography インスタンスを構築した後、次のメソッドを使用して、インスタンスの型を取得することができます。また、 GeometryCollection インスタンスの場合は、特定の geography インスタンスを返します。

geography インスタンスの型を取得するには
STGeometryType (geography データ型)

geography が特定のインスタンスの型であるかどうかを調べるには
InstanceOf (geography データ型)

geography インスタンスがそのインスタンスの型に対応する適切な形式であるかどうかを調べるには
STNumGeometries (geography データ型)

GeometryCollection インスタンス内の特定の geography を取得するには
STGeometryN (geography データ型) STGeometryN (geography データ型)

Number of Points (ポイント数)

空でないすべての geography インスタンスは で構成されています。 これらの点は、 geography インスタンスが描画される地球の緯度経度座標を表します。 geography データ型には、インスタンスの点に対するクエリを実行するための組み込みメソッドが数多く用意されています。

インスタンスを構成する点の数を取得するには
STNumPoints (geography データ型)

インスタンスの特定の点を取得するには
STPointN (geometry データ型)

インスタンスの始点を取得するには
STStartPoint (geography データ型)

インスタンスの終点を取得するには
STEndpoint (geography データ型)

ディメンション

空でない geography インスタンスの次元は、0 次元、1 次元、2 次元のいずれかになります。 0 次元の geography インスタンス ( PointMultiPointなど) には長さや面積はありません。 1 次元のオブジェクト ( LineString、CircularStringCompoundCurve、および MultiLineStringなど) には長さがあります。 2 次元のインスタンス ( Polygon、CurvePolygon、および MultiPolygonなど) には面積と長さがあります。 空のインスタンスは -1 次元としてレポートされます。 GeometryCollection ではその内容の最も大きな次元がレポートされます。

インスタンスの次元を取得するには
STDimension (geography データ型)

インスタンスの長さを取得するには
STLength (geography データ型)

インスタンスの面積を取得するには
STArea (geography データ型)

Empty

geography インスタンスには点はありません。 空の LineString、CircularStringCompoundCurve、および MultiLineString インスタンスの長さは 0 です。 空の Polygon、CurvePolygon 、および MultiPolygon インスタンスの面積は 0 です。

インスタンスが空かどうかを調べるには
STIsEmpty (geography データ型)

クロージャ

閉じているgeography インスタンスは、始点と終点が同じである図形です。 Polygon インスタンスは閉じていると見なされます。 Point インスタンスは閉じていないと見なされます。

リングは、単純な閉じている LineString インスタンスです。

インスタンスが閉じているかどうかを調べるには
STIsClosed (geography データ型)

Polygon インスタンスのリングの数を取得するには
NumRings (geography データ型)

geography インスタンスの指定したリングを取得するには
RingN (geography データ型)

SRID (spatial reference ID)

SRID (spatial reference ID) は、 geography インスタンスがどの楕円体座標系で表されているかを示す識別子です。 SRID が異なる 2 つの geography インスタンスを比較することはできません。

インスタンスの SRID を設定または取得するには
STSrid (geography データ型)

このプロパティは変更できます。

geography インスタンスの関係の特定

geography データ型には、2 つの geography インスタンスの関係を調べるために使用できる組み込みメソッドが数多く用意されています。

2 つのインスタンスが同じ点の集合で構成されているかどうかを調べるには
STEquals (geometry データ型)

2 つのインスタンスが互いに離れているかどうかを調べるには
STDisjoint (geometry データ型)

2 つのインスタンスが交差するかどうかを調べるには
STIntersects (geometry データ型)

2 つのインスタンスが交差する点を調べるには
STIntersection (geography データ型)

2 つの geography インスタンスの点の間の最短距離を調べるには
STDistance (geometry データ型)

2 つの geography インスタンスの点の相違を調べるには
STDifference (geography データ型)

2 つの geography インスタンスを比較して一方のインスタンスの対称差 (重複しない点) を取得するには
STSymDifference (geography データ型)

geography インスタンスでは必ずサポート対象の SRID を使用

SQL Server は EPSG 標準に基づく SRID をサポートします。 地理空間データを使用して計算を実行したりメソッドを使用したりする際には、SQL Server でサポートされている SRID を geography インスタンスで使用する必要があります。 その SRID が、 sys.spatial_reference_systems カタログ ビューに表示される SRID のいずれかに一致する必要があります。 既に説明したように、 geography データ型を使用して空間データの計算を実行する場合、計算結果は、データの作成に使用された楕円体によって異なります。これは、各楕円体に特定の SRID (spatial reference identifier) が割り当てられているからです。

SQL Server は既定の SRID 4326 を使用します。SRID 4326 は、geography インスタンスのメソッドを使用する際に WGS 84 空間参照系にマップされます。 WGS 84 (SRID 4326) 以外の空間参照系のデータを使用する場合は、その地理空間データの SRID を確認する必要があります。

次の例は、geography 型のデータの追加方法とクエリ方法を示しています。

例 A.

この例では、ID 列と geography 型の GeogCol1 列を含むテーブルを作成します。 3 番目の列で、 geography 型の列をその Open Geospatial Consortium (OGC) の Well-Known Text (WKT) 表現で示し、 STAsText() メソッドを使用します。 次に 2 つの行が挿入されます。1 つは、 LineStringgeographyインスタンスを含む行で、もう 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。

この例では、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();  

参照

空間データ (SQL Server)