データベースにテーブルを作成する、またはテーブルに列を追加すると、それらの列は特定のデータ タイプとして作成されます。データ タイプとは、有効な値、データで実行できる操作、およびその列のデータがデータベースに格納される方法を識別するための分類のことを指します。
ArcGIS からデータベース テーブルにアクセスすると、特定のデータ タイプを操作できます。カタログ ツリーの [Database Connections] ノードや ArcMap のクエリ レイヤーからデータベース テーブルにアクセスする場合、ArcGIS はサポートされていないデータ タイプを除外します。データベース テーブルに直接アクセスする場合、サポートされていないデータ タイプは ArcGIS インターフェイスには表示されず、ArcGIS からは編集できません。同様に、サポートされていないデータ タイプを含むテーブルを ArcGIS でコピーする場合、サポートされているデータ タイプのみがコピーされます。テーブルを別のデータベースやジオデータベースに貼り付けるときも、サポートされていないデータ タイプの列は対象外となります。
ArcGIS でフィーチャクラスまたはテーブルを作成したり、ArcGIS を使用して既存のテーブルまたはフィーチャクラスに列を追加したりするとき、フィールドに割り当てることのできる ArcGIS データ タイプは 12 種類あります。これらのタイプに対応しないデータベースのデータ タイプは、ArcGIS クライアントアプリケーションでは直接使用できません。
最初の列は ArcGIS データ タイプです。2 番目の列は、データベースに作成される PostgreSQL のデータ タイプです。3 番目の列は、ArcGIS で表示するときに、ArcGIS データ タイプにマップされるその他の PostgreSQL のデータ タイプ (存在する場合) を示しています。
ArcGIS データ タイプ | 作成された PostgreSQL のデータ タイプ | 表示可能なその他の PostgreSQL のデータ タイプ | 注意事項 |
---|---|---|---|
BLOB | BYTEA | ||
DATE | TIMESTAMP WITHOUT ZONE | TIMESTAMP | |
DOUBLE | NUMERIC(p) | BIG SERIAL、DOUBLE PRECISION | ArcGIS で指定した精度と縮尺が、データベースに作成されるデータ タイプの結果に影響を与える場合があります。詳細は、「ArcGIS フィールド データ タイプ」をご参照ください。 |
FLOAT | NUMERIC(p) | ArcGIS で指定した精度と縮尺が、データベースに作成されるデータ タイプの結果に影響を与える場合があります。詳細は、「ArcGIS フィールド データ タイプ」をご参照ください。 | |
GEOMETRY | ST_GEOMETRY or GEOMETRY (PostGIS) | ジオデータベースでは、データベースに作成されるデータ タイプは、フィーチャクラスの作成時に使用されるコンフィグレーション キーワードの、GEOMETRY_STORAGE の設定によって決まります。 ST_Geometry をデータベースで使用するには、インストールする必要があります。詳細については、「PostgreSQL データベースへの ST_Geometry タイプの追加」をご参照ください。 PostGIS ジオメトリ タイプを使用するには、PostgreSQL データベース クラスター内に PostGIS をインストールし、データベース自体を有効化して PostGIS を使用できるようにする必要があります。詳細については、PostgreSQL のドキュメントをご参照ください。 | |
GLOBAL ID | VARCHAR(38) | ジオデータベースでのみサポートされています。 | |
GUID | VARCHAR(38) | ||
LONG INTEGER | INTEGER | SERIAL | |
OBJECT ID | ジオデータベースの INTEGER データベースの SERIAL | ArcGIS の ObjectID タイプは、テーブル (またはフィーチャクラス) に登録された RowID 列です。1 つのテーブルにつき、1 つだけ存在します。 | |
RASTER | BYTEA or ST_RASTER | ラスターはジオデータベースのみでサポートされます。作成される PostgreSQL データ タイプは、ラスター カタログ、ラスター データセット、またはモザイク データセットの作成時に使用されるコンフィグレーション キーワードによって変わります。 ST_Raster を使用する場合は、別途、ジオデータベースに ST_Raster を構成する必要があります。手順については、「PostgreSQL での ST_Raster のインストール」をご参照ください。 | |
SHORT INTEGER | SMALLINT | REAL | |
TEXT | CHARACTER VARYING | CHARACTER、VARCHAR、TEXT |
テーブル内に ArcGIS でサポートされていないデータ タイプの列がある場合、その列をテキストにキャストできます。ただし、これを実行するのは、列内の値を表示したい場合だけにしてください。その列の値で分析を行う必要がある場合は、実行しないでください。たとえば、SELECT ステートメントを実行して、テーブル内の列を選択し、小数の列 (total) をテキストにキャストできます。
SELECT id, name, total::text
FROM me.mydb.tableb;
ジオメトリ データ タイプ
表に示すように、ArcGIS は、Esri ST_Geometry または PostGIS Geometry という PostgreSQL の 2 種類のジオメトリ データ タイプでデータを作成および操作できます。以降の 2 つのセクションでは、これら 2 つのデータ タイプの背景について説明します。
ST_Geometry
以下では、ST_Geometry 空間データ タイプの概要について説明します。PostgreSQL の実装に固有の情報については、「PostgreSQL の ST_Geometry」をご参照ください。
ST_Geometry データ タイプはユーザー定義データ タイプ (UDT) の SQL 3 Specification を実装しているので、ランドマークの場所、道路、土地区画といった空間データを格納できる列を作成することができます。これは、ジオデータベースおよびデータベースに対して、ISO/OGC 準拠の SQL アクセスを提供します。このジオメトリ格納は、地理フィーチャを表すオブジェクト (ポイント、ライン、ポリゴン) の格納を提供することで、データベースの機能を拡張します。このジオメトリ格納は、データベースのリソースを効率よく使用し、レプリケーションやパーティションといったデータベースの機能との互換性を維持し、空間データへのすばやいアクセスを可能にします。
ST_Geometry 自体は、インスタンス化されない抽象スーパークラスです。ただし、そのサブクラスはインスタンス化することができます。インスタンス化されたデータ タイプはテーブルの列として定義することができ、その他の値を挿入することができます。
列を ST_Geometry タイプとして定義することはできますが、インスタンス化することができないため ST_Geometry の値は挿入しません。代わりに、サブクラスの値を挿入します。
次の図は、ST_Geometry データ タイプとそのサブクラスの階層を示しています。

ST_Geometry のサブクラスは、ベース ジオメトリ サブクラスと同種コレクション サブクラスの 2 つのカテゴリに分類されます。ベース ジオメトリには、ST_Point、ST_LineString、ST_Polygon が含まれ、同種コレクションには、ST_MultiPoint、ST_MultiLineString、ST_MultiPolygon が含まれます。名前が示しているように、同種コレクションはベース ジオメトリのコレクションです。同種コレクションでは、ベース ジオメトリのプロパティを共有することに加えて、独自のプロパティを持つこともできます。
各サブクラスは、その名前が示唆するジオメトリ タイプを格納します。たとえば、ST_MultiPoint はマルチポイントを格納します。以下の表に、サブクラスの一覧とそれらについての説明を示します。
サブタイプ | 説明 |
---|---|
ST_Point |
|
ST_LineString |
|
ST_Polygon |
|
ST_MultiPoint |
|
ST_MultiLineString |
|
ST_MultiPolygon |
|
各サブクラスは ST_Geometry スーパークラスのプロパティを継承しますが、サブタイプ固有のプロパティもあります。ST_Geometry データ タイプで使用できる関数は、サブクラス エンティティ タイプでも使用できます。ただし、一部の関数はサブクラス レベルで定義されており、特定のサブクラスにしか対応しません。たとえば、ST_GeometryN 関数には、引数として ST_MultiLinestring、ST_MultiPoint、ST_MultiPolygon サブタイプのみを渡すことができます。
PostGIS Geometry
PostGIS は、PostgreSQL データベースを空間対応にする製品です。PostGIS は OGC (Open Geospatial Consortium) の Simple Features Specification for SQL に準拠しています。ジオメトリの OGC Well-Known Binary (WKB) 表現と OGC Well-Known Text (WKT) 表現を使用します。
PostGIS には、ジオメトリとジオグラフィの 2 つの空間タイプがあります。ArcGIS でサポートされているのは、ジオメトリのみです。
ArcGIS で PostGIS ジオメトリ格納タイプを使用するときは、以下のルールに留意してください。
- ジオデータベースとして使用する PostgreSQL データベースを PostGIS データベース テンプレートを使用して作成するか、データベースで PostGIS を有効化する必要があります。
- sde ユーザーおよびジオデータベースにデータを作成するユーザーには、特定の PostGIS テーブルに関する権限が付与されている必要があります。
- 作成するフィーチャクラスは、PostGIS の public.spatial_ref_sys テーブルに列挙されている空間参照だけを使用できます。このテーブルにない空間参照を指定した場合、フィーチャクラスの作成は失敗します。
- PostGIS ジオメトリ タイプを使用するフィーチャクラスを作成するときは、GEOMETRY_STORAGE パラメーターを PG_GEOMETRY に設定したコンフィグレーション キーワードを指定する必要があります。
- PostGIS ジオメトリ タイプを使用して格納された空間テーブルの名前を変更することはできません。これは、public.geometry_columns テーブルのテーブル名を更新する PostGIS 関数が存在しないためです。
PostGIS ジオメトリ タイプを使用するには、PostGIS をインストールする必要があります。PostgreSQL をインストールした後、PostGIS をインストールします。インストールする PostGIS のバージョンが、使用する ArcGIS のリリースでサポートされていることを確認します。
PostGIS をインストールすると、PostGIS テンプレート データベースが PostgreSQL データベース クラスターに作成されます。この PostGIS データベース テンプレートを使用して、ジオデータベースを格納するデータベースを作成します。
PostGIS ジオメトリ列の作成権限の付与
データベースで PostGIS が有効になると、2 つのテーブル (geometry_columns と spatial_ref_sys) が public スキーマに作成されます。少なくとも、geometry_columns テーブルの SELECT、INSERT、UPDATE、DELETE 権限、spatial_ref_sys テーブルの SELECT 権限を、sde ユーザーおよびジオデータベースにデータを作成するすべてのユーザーに割り当てる必要があります。
GRANT select, insert, update, delete
ON TABLE public.geometry_columns
TO <user_name>;
GRANT select
ON TABLE public.spatial_ref_sys
TO <user_name>;
PostGIS ジオメトリを使用するフィーチャクラスの作成
ArcGIS は、sde_dbtune テーブルのコンフィグレーション パラメーター設定を使用して、フィーチャクラスの作成時に使用する空間データ タイプを決定します。そのパラメーターは、GEOMETRY_STORAGE です。PostgreSQL のジオデータベースではパラメーターの値を ST_GEOMETRY または PG_GEOMETRY (PostGIS ジオメトリ タイプに対する設定) のいずれかに設定できます。そのため、PostGIS ジオメトリ タイプを使用するフィーチャクラスを ArcGIS で作成するときは、GEOMETRY_STORAGE パラメーターを PG_GEOMETRY に設定したコンフィグレーション キーワードを指定する必要があります。
デフォルトでは、新しいフィーチャクラスは ST_Geometry 格納を使用します。ほとんどのデータを PostGIS 格納タイプで格納する場合は、sde_dbtune テーブルの DEFAULTS コンフィグレーション キーワードの GEOMETRY_STORAGE パラメーター値を PG_GEOMETRY に変更しますまたは、フィーチャクラスの一部だけを PostGIS 格納タイプで格納する場合は、フィーチャクラスの作成時に PG_GEOMETRY コンフィグレーション キーワードを指定できます。PG_GEOMETRY キーワードをジオデータベースからエクスポートすると、次のように表示されます。
##PG_GEOMETRY GEOMETRY_STORAGE "PG_GEOMETRY" UI_TEXT "User Interface text description for POSTGIS geometry storage" END
残りの格納パラメーターは DEFAULTS キーワードから取得されます。コンフィグレーション キーワードおよびパラメーターの詳細については、以下のトピックをご参照ください。
既存のジオメトリ テーブルの使用
ArcGIS ではテーブルが次の前提条件を満たしている限り、他のアプリケーションや SQL によって外部環境で作成された PostGIS ジオメトリ列が含まれたテーブル (サードパーティ テーブルとも呼ばれます) を使用することができます。
- ジオメトリ列が 1 つだけ含まれていなければならない。含まれていない場合は、ジオメトリ列を 1 つだけ含むクエリ レイヤーまたはビューを定義する。
- 他にユーザー定義タイプの列が含まれていない。
- ジオメトリのタイプが 1 種類でなければならない (ポイント、ライン、またはポリゴン)。ただし、ジオメトリはマルチパートでもよい。
- 登録済みの RowID 列に適した、整数タイプの一意な NOT_NULL の列が含まれていなければならない。
- 空間インデックスを持つ。
SQL を使用して PostGIS 列を持つテーブルを作成する方法については、PostGIS の FAQ (英文)をご参照ください。
ArcGIS for Desktop から PostGIS テーブルを含む PostgreSQL データベースに接続して、それらのテーブルをジオデータベースに登録することができます。詳細については、「ジオデータベースへのテーブルの登録」をご参照ください。
ラスター データ タイプ
Bytea または ST_Raster データ タイプを使用して、PostgreSQL のジオデータベースにラスターを格納できます。デフォルトでは、Bytea が使用されます。ST_Raster を使用する場合、ジオデータベースを構成する必要があります。
Bytea
Bytea は、PostgreSQL で使用される可変長バイナリ文字列データ タイプです。Bytea は BLOB に類似しています。このデータ タイプの詳細については、PostgreSQL のドキュメントをご参照ください。
ST_Raster
ST_Raster は、エンタープライズ ジオデータベースにインストールしてラスター データへの SQL アクセスを提供できるユーザー定義データ タイプです。
ST_Raster タイプを使用するには、データベースで構成する必要があります。
ST_Raster オブジェクト タイプの定義方法の詳細については、「ST_Raster データ タイプ」をご参照ください。