次の方法で共有


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

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

geographyの種類は定義済みであり、各データベースで使用できます。 geography型のテーブル列を作成し、他のシステム指定型を使用するのと同じ方法でgeographyデータを操作できます。

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

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

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

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

地理の周囲にバッファーを作成し、許容範囲を設定するには
BufferWithTolerance(ジオグラフィ データ型)

2 つの地理インスタンスが交差する部分から地理を生成するには
STIntersection (地理空間データ型)

2 つの geography インスタンスを統合して geography を作成するには
STUnion (geography データ型)

ある地理が別の地理と重なっていない点から地理を作成するには
STDifference (geography データ型)

geography インスタンス Well-Known をテキスト入力から構築する

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

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

Parse (地理データ型)

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 を構築する

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

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

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 テキスト入力からの geography インスタンスの構築

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

Geography マークアップ言語の詳細については、「OGC 仕様: OGC 仕様、Geography Markup Language」を参照してください。

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

geography インスタンスから Well-Known Text と Well-Known Binary を返す

次のメソッドを使用して、 geography インスタンスの WKT 形式または WKB 形式を返すことができます。

geography インスタンスの WKT 表現を返すには
STAsText (地理 データ型)

ToString (geography データ型)

任意の Z 値と M 値を含む geography インスタンスの WKT 表現を返すには
AsTextZM (geography データ型)

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

geography インスタンスの GML 表現を返すには
AsGml(地理データ型)

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

すべての geography インスタンスには、SQL Server が提供するメソッドを使用して取得できるプロパティが多数用意されています。 次のトピックでは、geography 型のプロパティと動作と、それぞれを照会するためのメソッドを定義します。

有効性、インスタンスの種類、GeometryCollection情報

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

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

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

地理空間インスタンスがそのインスタンス型に対して整形式であるかどうかを判断するには
STNumGeometries (geography データ型)

GeometryCollection インスタンスで特定の地理情報を返すには
STGeometryN (地理データ型)STGeometryN (地理データ型)

ポイント数

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

インスタンスを構成するポイントの数を返すには
STNumPoints (geography データ型)

インスタンス内の特定のポイントを返すには
STPointN (geometry データ型)

インスタンスの開始点を返すには
STStartPoint (geography データ型)

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

ディメンション

空でない geography インスタンスには、0 次元、1 次元、または 2 次元を指定できます。 PointMultiPointなどの 0 次元のgeography インスタンスには、長さや面積がありません。 LineString, CircularStringCompoundCurveMultiLineStringなどの 1 次元オブジェクトには長さがあります。 Polygon, CurvePolygonMultiPolygonなどの 2 次元インスタンスには、面積と長さがあります。 空のインスタンスは -1 のディメンションを報告し、 GeometryCollection はその内容の最大ディメンションを報告します。

インスタンスのディメンションを返すには
STDimension (地理データタイプ)

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

インスタンスの領域を返すには
STArea (geography データ型)

空っぽ

geography インスタンスにはポイントがありません。 空の LineString, CircularStringCompoundCurve、および MultiLineString インスタンスの長さは 0 です。 空の Polygon, CurvePolygonMultiPolygon インスタンスの領域は 0 です。

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

クローズ

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

リングは、単純で閉じた LineString インスタンスです。

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

Polygon インスタンス内のリングの数を返すには
NumRings (地理データ型)

geography インスタンスの指定されたリングを返すこと
RingN (地理データ型)

空間参照識別子 ID (SRID)

空間参照 ID (SRID) は、 geography インスタンスが表す楕円体座標系を指定する識別子です。 異なる SRID を持つ 2 つの geography インスタンスを比較することはできません。

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

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

地理インスタンス間の関係の決定

geography データ型には、2 つのgeography インスタンス間のリレーションシップを決定するために使用できる多くの組み込みメソッドが用意されています。

2 つのインスタンスが同じポイント セットを構成しているかどうかを判断するには
STEquals (ジオメトリ データ型)

2 つのインスタンスが不整合かどうかを判断するには
STDisjoint (ジオメトリ データ型)

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

2 つのインスタンスが交差するポイントを決定するには
STIntersection (地理データ型)

2 つの geography インスタンス内のポイント間の最短距離を決定するには
STDistance (geometry データ型)

2 つの geography インスタンス間のポイント差を確認するには
STDifference (geography データ型)

ある geography インスタンスの対称差 (一意のポイント) を別のインスタンスと比較して導き出すには
STSymDifference (geography データ型)

geography インスタンスでサポートされている SRID を使用する必要がある

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

SQL Server では、既定の SRID 4326 が使用されます。これは、 geography インスタンスでメソッドを使用する場合に WGS 84 空間参照システムにマップされます。 WGS 84 (または SRID 4326) 以外の空間参照システムのデータを使用する場合は、地理空間データの特定の SRID を決定する必要があります。

例示

次の例では、地理データを追加してクエリを実行する方法を示します。

  • 最初の例では、ID 列と geographyGeogCol1を含むテーブルを作成します。 3 番目の列は、 geography 列を Open Geospatial Consortium (OGC) Well-Known Text (WKT) 表現にレンダリングし、 STAsText() メソッドを使用します。 次に、2 つの行が挿入されます。1 つの行にはgeographyLineStringインスタンスが含まれており、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();  
    

こちらもご覧ください

空間データ (SQL Server)