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