ST_Geometry 列を含むテーブルの ArcSDE への登録
ArcSDE 管理コマンド sdelayer -o register を使用して、空間テーブルを ArcSDE に手動で登録できます。.空間テーブルは、ArcSDE に登録されると、レイヤと呼ばれるようになります。
Esri は ArcGIS でフィーチャクラスを作成することを推奨します。ArcGIS でフィーチャクラスを作成した場合は、適切なフィーチャクラスの作成が保証されます。しかし空間テーブルを操作するときに別のオプションも使用したい SQL ユーザおよびアプリケーション開発者のために SQL またはサード パーティ アプリケーションを使用して作成された外部空間テーブルの登録もサポートされています。
ArcSDE にテーブルを登録するには、テーブルが少なくとも次の条件を満たしている必要があります。
- テーブルを登録するユーザが所有者である。
- ST_Geometry 列が 1 つだけ含まれている。
- 他にユーザ定義タイプの列が含まれていない。
- ジオメトリが 1 種類しかない(ポイント、ライン、またはポリゴン)。
- 登録する object ID 列として適した、整数タイプの一意な非 NULL 列が含まれている。
- テーブルのすべてのレコードが同じ空間参照 ID(SRID)を使用しているか、SRID をまったく使用していない。
- 登録時に SRID を指定する場合は、その SRID がジオデータベースに存在している必要がある。
- テーブル名について、大文字小文字が混在したり、先頭が数字であったり、128 文字(Oracle では 160 文字)を超えていない。
テーブルにデータが含まれず、有効な SRID を指定せずにテーブルを ArcSDE に登録した場合は、デフォルトの SRID が使用されます。ST_Geometry 列を持つ PostgreSQL および Oracle テーブルの場合、デフォルト値は 0 になります。SRID 0 は主としてテスト用に使用され、実際に空間参照を指定するものではありません。後で、0 以外の有効な SRID を持つフィーチャを追加しようとすると、それらの SRID 値が異なるため操作が失敗します。テーブルに割り当てられたSRID を後から変更することはできないため、レイヤを削除し、正しい SRID を使用してレイヤを再作成する必要があります。
sdelayer コマンドを使用する方法の詳細については、『ArcSDE コマンド リファレンス』をご参照ください。
-
「ワークフロー: 既存のフィーチャクラスに対する SQL の使用」で作成した既存の buildings フィーチャクラスから、SQL で comm_bldgs テーブルを作成します。これにより、buildings フィーチャクラスと定義(列とデータ タイプなど)が同じ comm_bldgs テーブルが作成されます。
CREATE TABLE comm_bldgs AS SELECT * FROM buildings WHERE subtype = 'COM';
-
comm_bldgs フィーチャクラスを ArcSDE に登録するときは、buildings フィーチャクラスで使用しているものと同じ SRID を使用します。SRID を確認するには、sdelayer –o describe_long コマンドを使用します。
ヒント:
Oracle では ST_GEOMETRY_COLUMNS テーブル、Informix と DB2 では geometry_columns テーブル、PostgreSQL では sde_geometry_columns テーブルテーブルをクエリして、SRID を確認することもできます。
sdelayer –o describe_long –l buildings,shape –u <user> –p <pw> –s <server> [–D <database>] –i <service_or_direct_connect_string> Layer Administration Utility Layer Description : <None> Table Owner : me Table Name : buildings Spatial Column : shape Layer Id : 15 SRID : 3
-
sdelayer コマンドを使用して、フィーチャクラスを ArcSDE に登録します。直前のステップで取得した SRID を –R オプションで指定します。また、-E オプションを使用してレイヤの範囲を指定することもできます。
sdelayer –o register –l comm_bldgs,shape –e a -t ST_GEOMETRY –C OBJECTID,SDE –R 3 -E -690.389,-512.144,610.389,600.144 –u <user> –p <pw> –s <server> [–D <database>] –i <service_or_direct_connect_string>
注意:DBTUNE テーブルの DEFAULTS キーワードで GEOMETRY_STORAGE パラメータが ST_GEOMETRY に設定されていない場合は、-k オプションを使用してコンフィグレーション キーワードも指定する必要があります。
これによりテーブルが ArcSDE に登録されて、レイヤになりました。Oracle、DB2、または Informix では、LAYERS、GEOMETRY_COLUMNS、COLUMN_REGISTRY、TABLE_REGISTRY の各システム テーブルに、PostgreSQL では sde_layers、sde_geometry_columns、sde_column_registry、sde_table_registry の各テーブルにレコードが追加されます。この時点で、ArcGIS Desktop でフィーチャクラスの表示、選択、バージョン非対応編集を行うことが可能になります。
フィーチャクラスでジオデータベースの機能を使用するには、フィーチャクラスをジオデータベースに登録します。