ArcSDE ジオデータベースにおける SQL 使用の概要

SQL を使用して既存のデータベースとそのプロパティにアクセスすることができ、ArcSDE ジオデータベースのバージョン対応データセットとバージョン非対応データセットの両方を編集できます。

また、SQL を使用してテーブルを作成し、そのテーブルを ArcSDE とジオデータベースに登録することができます。このテーブルは SQL 空間タイプまたはラスタ タイプを含むことも、非空間属性だけを含むこともできます。

SQL を使用してジオデータベースにアクセスするときは、データベース管理システム(DBMS)レベルでジオデータベースにアクセスしています。つまり、ArcSDE、ジオデータベース、または ArcGIS クライアントがユーザに強制していた振舞いや機能は、SQL を使用している場合は強制されないことになります。

SQL を使用している場合、データベース内のテーブルに直接アクセスします。そのため、ジオデータベース内のデータに対して SQL コマンドを実行する場合は、データやデータに関する情報を参照することはかまいませんが、ジオデータベースの振舞いに関係するデータを変更してはいけません。詳細については、「SQL を使用して編集可能なデータの種類」をご参照ください。

また、データベースにアクセスするために DBMS クライアントが必要な DBMS の場合、データベースに直接接続する前に、DBMS クライアントをインストールして設定する必要があります。

ジオデータベースへの SQL によるアクセス

SQL の SELECT ステートメントを使用して、ジオデータベース内の既存のデータセットからデータを取得することができます。ArcSDE ジオデータベース内のバージョン対応データセットをクエリする場合は、マルチバージョン対応のビューを使用する必要があります。

マルチバージョン対応ビューは、SQL(Structured Query Language)を使用してジオデータベース テーブルにある指定のバージョンのデータにアクセスできるよう、データベース ビュー、ストアド プロシージャ、トリガ、および関数が組み込まれています。

バージョン対応のデータセットにマルチバージョン対応のビュー経由でアクセスすると、ビジネス テーブル内のすべてのレコードが選択され、差分テーブル内のレコードとマージされて、指定したバージョンの状態におけるビジネス テーブルに加えられた変更をすべて含むビューが作成されます。

SQL を使用して空間データにアクセスして分析を行うには、その空間タイプと共にインストールされた空間 SQL 関数を使用します。各空間タイプは、独自の関数セットを持ちます。これらの関数は、空間リレーションシップを評価し、空間処理を実行し、空間プロパティの取得と設定を行うことができます。この機能の概要については、「空間リレーションシップ」、「空間処理」、「ジオメトリのプロパティ」をご参照ください。

データセットのプロパティへの SQL によるアクセス

SQL の SELECT ステートメントを使用して、ArcSDE ジオデータベース内の既存のデータセットのプロパティを取得することができます。

データセットのプロパティは、ジオデータベース システム テーブルに格納されています。この情報を得るには、システム テーブルの特定の列にクエリを実行します。場合によっては、列に XML ドキュメントが格納されていて、クエリ時に XPath 式を使用してプロパティ情報を取得することもあります。これは、IBM DB2、PostgreSQL、および Microsoft SQL Server データベースに格納されたジオデータベースの場合です。Oracle に格納されたジオデータベースでは、システム ビューにアクセスして、CLOB 列のプレーン テキストを読むことができます。

ジオデータベース データの SQL による編集

DBMS のネイティブ SQL を使用して、ジオデータベース内の単純な非空間属性データを編集できます。また、空間タイプと共にインストールされた空間 SQL 関数を使用して、単純な空間データを SQL によって変更することもできます。

SQL を使用して、ArcSDE ジオデータベースのバージョン対応データセットとバージョン非対応データセットの両方を編集できます。ただし、このトピックですでに触れたように、ジオデータベースの機能に関係するデータセットを編集してはいけません。

バージョン非対応データを編集する場合、SQL を使用して object ID、GUID、およびグローバル ID のフィールドに一意の値を挿入する必要があります。

バージョン対応データを編集するには、マルチバージョン対応のビューを使用する必要があります。そうすることで、編集中に差分テーブルにデータが挿入されることが保証されます。また、マルチバージョン対応のビューでは、object ID のフィールドに一意の値が自動的に挿入されます。

ArcGIS で使用するテーブルの SQL による作成

DBMS のネイティブ SQL を使用して、テーブルを作成し値を設定できます。SQL を使用して作成した空間テーブルと非空間テーブルのどちらも ArcMap で使用できます。また、クエリ レイヤを作成することで、ArcMap で空間テーブルをレンダリングできます。空間テーブルと非空間テーブルの両方の属性を ArcGIS で直接表示することもできます。クエリ レイヤもテーブルへの直接アクセスも、別のシステムと連携しているテーブルがあり、そのテーブルに ArcGIS 経由でアクセスしたり、そのテーブルをジオデータベース内のテーブルに結合したりする場合に便利です。

テーブルでジオデータベースの機能を使用する場合は、テーブルを ArcSDE とジオデータベースに登録します。ただし、テーブルでジオデータベースの機能を使用している場合、SQL を使用してテーブルを編集することはできません。

手順については、「例: ArcSDE への空間テーブルの登録」、「例: ジオデータベースへのレイヤの登録」、「ワークフロー: SQL によるテーブルの作成および ArcSDE とジオデータベースへの登録」をご参照ください。

関連項目


3/6/2012