空間列を含むサードパーティ テーブルの登録
空間テーブルをフィーチャクラスとして登録するには、ArcSDE 管理コマンドの sdelayer を register 操作を指定して使用します。
register 操作はユーザ定義データ タイプとして定義された空間列を含む DBMS テーブルから、フィーチャクラスを作成できます。現在、ArcSDE ジオデータベースでサポートされている DBMS 空間データ タイプの実装は、Oracle Spatial ジオメトリ タイプ(SDO_Geometry)、Informix Spatial DataBlade(ST_Geometry)、DB2 Spatial Extender(ST_Geometry)、Oracle の空間タイプ(ST_Geometry)、PostgreSQL の空間タイプ(ST_Geometry)、PostGIS for PostgreSQL(Geometry)、Geometry for SQL Server(Geometry)、および Geography for SQL Server(Geography)の 6 種類です。これらの空間データ タイプのいずれかを使用して作成され、DBMS SQL インタフェースまたはその他のサード パーティ インタフェースを使用して設定されたテーブルは、既存のテーブルをフィーチャクラスとして登録することで、ArcSDE ジオデータベースに追加することができます。
サード パーティの空間テーブルを登録するには、次の前提条件を満たしている必要があります。
- テーブルを ArcSDE に登録できるのは、テーブルの所有者だけです。したがって、-u および -p オプションで指定するユーザ名とパスワードは、テーブルの所有者のものである必要があります。
- テーブルには空間列が 1 つだけ含まれている必要があります。 ヒント:
テーブルに複数の空間列が含まれている場合は、空間列を 1 つだけ含むテーブルのビューを作成できます。
- 他にユーザ定義タイプの列が含まれていてはなりません。
- テーブルのすべてのレコードに同じ空間参照が必要です。
- -R オプションで SRID(空間参照 ID)を指定する場合は、その SRID がジオデータベースの ArcSDE 空間参照テーブルに存在している必要があります。デフォルトのオフセットと範囲は、指定した SRID で示される空間参照に基づいて計算されます。
- テーブルの名前に、大文字と小文字を混在させることはできません。数字で始まる名前、および長さが 128 文字(Oracle では 160 文字)を超える名前も使用できません。
- -t オプションを使用して、ジオメトリ格納タイプを指定する必要があります。register 操作の -t オプションに対して有効な値は、Geography、Geometry、SDO_Geometry、および ST_Geometry です。指定する値は、登録するテーブルの空間列タイプと一致する必要があります。
- SDO_Geometry テーブルを登録する場合は、これらを ArcSDE に登録する前に、空間インデックスを作成することをお勧めします。
- -E オプションで範囲を指定してください。
sdelayer コマンドの構文と使用例については、ArcGIS Server Enterprise に付属している『ArcSDE コマンド リファレンス』をご参照ください。
以前のバージョンの ArcSDE で提供されていた SDO_Geometry の自動登録機能は、使用されなくなりました。
-
MS-DOS プロンプト(Windows)またはシェル プロンプト(UNIX または Linux)で、sdelayer コマンドを register 操作を指定して実行します。
ArcSDE への PostGIS ポイント テーブルの登録
sdelayer -o register -l samplepts,geom -e p+ -C ptid,SDE -t PG_GEOMETRY -g RTREE -E -76.74381615680447,34.59132803608262,-74.56368991230103,36.18919425895801 -i sde:postgresql:myserver -s myserver -D bigdb -u editor -p open.up
メモ:例に示すように、フィーチャ ID 列を SDE 管理ではなくユーザ管理(-C id,USER)として登録した後に、フィーチャクラスをジオデータベースに登録する場合は、ArcGIS が追加のフィーチャ ID 列(ObjectID)を追加します。この列の値は ArcGIS が管理します。テーブルに大量のレコードが含まれる場合は、この ObjectID 列の追加に時間がかかることがあります。