SQL Server の空間タイプと ArcGIS

ジオデータベースは、Microsoft SQL Server での Microsoft の geometry タイプと geography タイプを使用したベクター データの格納をサポートしています。 これらのタイプは SQL Server で自動的に利用可能であり、個別のインストールは不要です。 また、ArcGIS を使用して、geometry または geography フィールド (列) を含むデータベース テーブルにアクセスできます。

次のいずれかに当てはまる場合、ArcGIS で geometry 格納タイプを使用します。

  • 使用する座標系が地理座標系でないか、SQL Server のデータ ディクショナリに定義されていない。
  • 形状と一緒に Z 値または M 値を格納する。

次のいずれかに当てはまる場合、ArcGIS で geography 格納タイプを使用します。

  • 使用する座標系が SQL Server データ ディクショナリで定義されている。
  • データの空間範囲が大きく、SQL の面積および長さの計算を使用する必要がある。
  • SQL 空間クエリには、大楕円の円弧補間を使用する必要があります。

    大楕円円弧補間を使用した SQL の面積および長さの計算結果は、大きな空間範囲に対する平面ライン内挿を使用した場合とは大きく異なる可能性があります。

空間タイプを指定するコンフィグレーション キーワードの使用

デフォルトでは、SQL Server のジオデータベースは、geometry 空間タイプを使用します。 SQL Server 内のジオデータベースへのフィーチャクラスの格納に geography タイプを使用するには、以下のうちのいずれかを実行する必要があります。

  • ほとんどの場合に大部分のユーザーが空間データに geography を使用する場合、DEFAULTS コンフィグレーション キーワードの GEOMETRY_STORAGE コンフィグレーション パラメーターを GEOGRAPHY に変更します。 ジオデータベースに作成されたすべてのフィーチャクラスがデフォルトで geography タイプを使用するようになります。 手順については、「コンフィグレーション キーワードの変更」をご参照ください。
  • 一部のデータだけが geography タイプで格納される場合、フィーチャクラスの作成時に、GEOMETRY_STORAGE コンフィグレーション パラメーターを GEOGRAPHY に指定するコンフィグレーション キーワードを指定します。 キーワードとして GEOGRAPHY が用意されていますが、ユーザーがカスタム キーワードを作成することもできます。

(ジオデータベースではなく) SQL Server データベースにフィーチャクラスを作成する際に、キーワード geometry または geography を選択します。

ジオデータベースへの既存の空間テーブルの登録

サードパーティ アプリケーションや SQL を使用して、SQL Server の空間タイプのフィールドがあるテーブルを、ジオデータベースが格納されているデータベースに作成した場合、これらのテーブルをジオデータベースに登録して、リレーションシップ クラス、トポロジ、ユーティリティ ネットワーク、パーセル ファブリックなどのジオデータベース機能を利用したり、サブタイプ、デフォルト値、ドメイン、または整合性ルールを持たせたりすることができます。 これを実行するには、テーブルが次の前提条件を満たしている必要があります。

  • テーブルを登録するユーザーがテーブルの所有者でなくてはいけません。
  • このテーブルには、geometry または geography タイプの単一の空間フィールドが必要です。
  • フィールド内のすべてのシェープの空間タイプが同じでなければなりません (ポイント、ライン、ポリゴン、マルチポイント、マルチラインストリング、またはマルチポリゴン)。

    テーブルをジオデータベースに登録した後で SQL を使用してタイプが異なるシェープをフィールドに追加することはサポートされておらず、フィーチャクラスが予想外の動作をします。

  • フィールド内のすべてのシェープの空間参照 ID (SRID) が同じでなければなりません。
  • 登録時に指定した SRID は SDE_spatial_references システム テーブルに存在していなくてはいけません。 存在しない場合、登録時に投影法を定義する必要があります。
  • テーブルに主キーが含まれている場合は、テーブルをクラスタリングしなくてはいけません。
注意:

既存のデータベースでジオデータベースが有効であっても、既存のテーブルは自動的にはジオデータベースに登録されません。 ジオデータベースに加えるテーブルやフィーチャクラスは、ジオデータベースに個別に登録する必要があります。

空間インデックスの作成

SQL Server では、空間インデックスを作成できるようにするために、テーブルに主キーを作成する必要があります。

ArcGIS の場合

ArcGIS を使用して、geometry フィールドまたは geography フィールドを含むフィーチャクラスを作成すると、デフォルトでビジネス テーブルの ObjectID フィールドにクラスター化された主キーが作成されます。 次に ArcGIS は、SQL Server のデフォルトを使用して空間インデックスを作成します。 フィーチャクラスをトラディショナル バージョニング用に登録すると、クラスター化された主キーが ADD テーブルの ObjectID フィールドと state id フィールドに作成され、空間インデックスが作成されます。

ArcGIS は、インデックスを作成するデータの範囲として geometry または geography 空間フィールドを使用し、フィーチャクラスのバウンディング ボックスを計算します。 この範囲外にあるフィーチャはインデックス付けされませんが、空間検索では検索の対象となります。 フィーチャクラスの範囲が設定されていない場合は、フィーチャクラスの空間参照系に対する最大の座標範囲がバウンディング ボックスで使用されます。 フィーチャクラスの範囲を、[フィーチャクラス プロパティ] ダイアログ ボックスから設定または再計算できます。 フィーチャクラスがジオデータベースに存在する場合、空間インデックスが削除されて再作成されたときに、最新の範囲を使用して境界ボックスが調整されます。

ArcGIS 以外

ArcGIS 以外のアプリケーションで作成された空間テーブル、たとえば SQL を使用して作成されたテーブルの場合は、テーブルに主キーを作成してから SQL を使用して空間インデックスを作成します。 手順と例については、Microsoft SQL Server のドキュメントをご参照ください。

ArcGIS は、追加のジオメトリック エレメントを格納するためのフィールドを追加します。

geometry および geography タイプは、ジオデータベースでサポートしなければならないすべてのタイプのジオメトリック エレメントを格納することはできません。 したがって、SQL Server のジオデータベースで、geometry または geography 格納タイプを使用するフィーチャクラスを作成または登録する場合、ArcGIS は、このような追加のジオメトリック エレメントを格納するために、ビジネス テーブルにフィールドを追加します。 フィールドの名前は gdb_geomattr_data です。 追加のジオメトリック エレメントには次のものがあります。

  • 高度な編集ツールで作成された円弧、ベジェ曲線などのパラメーター オブジェクト
  • PointID
  • マルチパッチ フィーチャ
  • ArcGIS Spatial Analyst エクステンション からのサーフェス パッチ

ArcGIS がデータ ソースにこのような追加ジオメトリック エレメントがあることを検出すると、単純なジオメトリック表現が shape フィールドに、変更されていないデータ (追加エレメントを含む) が gdb_geomattr_data フィールドに、それぞれ格納されます。

gdb_geomattr_data という名前のフィールドがあるテーブルまたはビューを登録する場合、そのフィールドのデータはオブジェクトに関連付けられているジオメトリック エレメントでなければなりません。

ArcGIS での SQL Server geography 単位

通常、geography データの計測値はメートル単位です。 計測単位は sys.spatial_ref_system で示されるため、データに関連付けられている European Petroleum Survey Group (EPSG) 値で使用される単位を確認します。