ArcGIS のすべてのレイヤー (クエリ レイヤー、ジオデータベースのレイヤー、データベースのレイヤーも含む) には、一意識別子が必要です。
ジオデータベース テーブルまたはフィーチャクラスに対してクエリ レイヤーを定義する場合、テーブルには必ず一意識別子フィールド (ObjectID フィールド) を含めます。
ただし、ほとんどの場合は、クエリ レイヤーを作成してデータベース内のフィーチャクラスやテーブルにアクセスしたり、データベース レイヤーを ArcGIS Desktop クライアントに直接ドラッグしたりします。データベース テーブルに一意識別子フィールドを含めるのは、標準的な使用方法です。そのため、使用しているデータベース テーブルには、一意識別子として使用できるフィールドがすでに含まれている可能性があります。
ArcGIS でフィールドを一意識別子として使用するには、そのフィールドに NULL が含まれず、値が一意であり、かつ以下のデータ タイプのいずれかである必要があります。
- 整数 (正の値のみ)
- String
- GUID
- 日付
一意識別子の値は、ArcGIS 内の行またはフィーチャ オブジェクトを一意に識別するため、そのフィールドの値は常に一意で、また NULL ではない必要があります。必要に応じてユーザーがこのフィールドの値を管理します。
データベース テーブルを ArcMap にドラッグしたとき、または新しいクエリ レイヤー定義を整合チェックしたときに、ArcGIS が適切な一意識別子を検出できなかった場合、使用する 1 つ以上のフィールドを選択するよう要求されます。この例では、ArcGIS は、一意識別子として使用する、NULL を含まない整数のフィールドを検出できませんでした。テーブルの行で一意識別子として使用するための、NULL を含まず値が一意である、既知のフィールドまたはフィールドの組み合せを選択する必要があります。
データベース テーブルをカタログ ツリーからドラッグして ArcMap に配置したとき、またはクエリ レイヤー定義を整合チェックしたときに、適切なフィールドが存在する場合、ArcGIS は最初に検出した NULL を含まないフィールドをデフォルトで一意識別子フィールドとして設定します。多くの場合、この値を一意識別子フィールドとして十分使用できますが、代わりに使用する 1 つ以上の別の適切なフィールドを [一意識別子フィールド] リストから選択することもできます。ArcGIS が使用するデータベース テーブルの一意識別子フィールドを変更するには、以下の手順に従います。
- ArcMap の [コンテンツ] ウィンドウで該当するレイヤーを右クリックしてから、[プロパティ] をクリックします。
- [ソース] タブをクリックし、[クエリを変更] をクリックします。
[クエリ レイヤーの編集] ダイアログ ボックスが開きます。
- [高度な設定を表示] をクリックして、[次へ] をクリックします。
- 一意識別子として使用する別の適切なフィールドまたはフィールドのセットを選択し、[完了] をクリックします。
- [OK] をクリックして [レイヤー プロパティ] ダイアログ ボックスを閉じます。