ArcGIS で使用する空間テーブルをサードパーティ製ツールを使用して作成するときに、注意が必要な点を以下に挙げます。
- テーブルには ArcGIS で一意の ID として使用する NULL でない一意の列が必要です。
ArcGIS で空間検索、ログ ファイル検索、単一行の処理、バージョン対応登録したデータベース処理を実行するには、空間テーブルに一意のフィーチャ ID 列が含まれている必要があります。
テーブルをジオデータベースに登録する場合、ArcGIS は、ObjectID という一意の識別列を追加します。通常、この列は OBJECTID という名前ですが、これと同じ名前の列がテーブルにすでに存在する場合は、別の名前にすることができます。インデックスが作成された一意の NULL でない数値または整数の識別列がテーブルに存在する場合、その列を ObjectID として使用することを選択できます。ジオデータベースは、ジオデータベースに登録されたすべてのテーブルの ObjectID 列の値を管理します。
ArcGIS Desktop で空間データベース テーブルを表示する場合、テーブルの一意の ID を形成する 1 つまたは複数の列をまとめて指定することができます。
フィーチャ サービスを介して空間データベース テーブルを編集したいが、そのテーブルをジオデータベースに登録したくない場合、そのテーブルには、データベースで管理される一意の NULL でない列が含まれている必要があります。[増加 ID フィールドの追加 (Add Incrementing ID Field)] ジオプロセシング ツールを使用して、テーブルに修飾フィールドを追加できます。
- 同じテーブルに複数の空間列がないようにしてください。
同じテーブルに空間列を複数作成することは可能です。しかし、ArcGIS は同じテーブル内の複数ジオメトリ列をサポートしません。空間列を複数持つテーブルを使用するために、空間列を 1 つだけ含むビューを作成できます。あるいは、空間列を 1 つだけ含むクエリ レイヤーを定義できます。
- 大文字と小文字が混在したオブジェクト名は使用しないでください。
デフォルトではデータベースのオブジェクト名は、Oracle と DB2 ではすべて大文字、PostgreSQL と Informix ではすべて小文字で格納されます。SQL を使用してテーブルを作成するとき、大文字と小文字が混在した名前を強制的にデータベースに格納することは可能です。ただし、ArcGIS でデータを使用する予定がある場合はこれを行わないでください。 ArcGIS ソフトウェア パッケージでは大文字と小文字が区別されません。大文字と小文字が混在したオブジェクト名を作成した場合、ArcGIS クライアントを使用してクエリを実行すると失敗します。同様に、PostgreSQL データベースですべて大文字のオブジェクト名を作成したり、Oracle データベースですべて小文字のオブジェクト名を作成したりした場合も、ArcGIS のクエリは失敗します。
- 空間テーブルに挿入するレコードは、空間列用に定義されたタイプと一致するエンティティ タイプを持つ必要があります。
空間列に設定できるデータは空間列が要求するエンティティ タイプのデータに限られます。たとえば、ST_Polygon タイプの列の場合、ST_LineString などの他のジオメトリ タイプのデータを格納できません。
ただし、ST_Geometry はサポートしている任意のサブタイプのジオメトリを受け入れます。ST_Geometry 列には、さまざまなエンティティを挿入できますが、ArcGIS が処理するのは 1 つのエンティティ タイプのみです。ArcGIS は、データベース内のフィーチャクラスのデータを表示するときに、テーブルの最初の行を読み取り、そのエンティティ タイプのみを表示します。テーブル内の他のエンティティ タイプを表示するために、テーブルのクエリ レイヤーの定義を変更して、別のエンティティ タイプを表示することができます。空間テーブルをジオデータベースに登録する場合、テーブルに対して 1 つのエンティティ タイプを選択する必要があります。
- テーブルのデータに使用する空間参照は 1 つだけにしてください。
ArcGIS では、1 つの空間参照がテーブル全体に適用されます。データベースのフィーチャクラスを表示するときに、1 つの空間参照を指定する必要があります。その空間参照のデータのみがレンダリングされます。テーブルをジオデータベースに登録するとき、使用する空間参照を指定しますが、指定できるのは 1 つだけです。テーブルに 1 つの空間参照に登録しているが、実際には一部のデータが異なる空間参照を使用している場合、データは適切にレンダリングされません。エラー メッセージが表示される場合があります。