データベースにテーブルを作成する、またはテーブルに列を追加するときに、列のデータ タイプを定義します。データ タイプによって次のことが決定します。
- 列に保存できる値
- その列のデータに対して使用できる操作
- 列のデータをデータベースに保存する方法
ArcGIS では、特定のデータ タイプを操作できます。[データベース接続] やクエリ レイヤーからデータベース テーブルにアクセスする場合、ArcGIS はサポートされていないデータ タイプを除外します。ArcGIS にはサポートされていないデータ タイプは表示されないため、ArcGIS からそれらを編集することはできません。同様に、ArcGIS を使用してサポートされていないデータ タイプを含むテーブルをデータベース間でコピーして貼り付ける場合、ArcGIS はサポートされているデータ タイプを使用する列のみを貼り付けます。
次のテーブルの最初の列は ArcGIS データ タイプです。2 番目の列は、ArcGIS が作成する 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) | UUID | UUID のサポートは 10.5.1 および ArcGIS Pro 2.0 で追加されました。 |
| LONG INTEGER | INTEGER | SERIAL | |
| OBJECT ID | ジオデータベースの INTEGER データベースの SERIAL | ArcGIS の ObjectID タイプは、テーブル (またはフィーチャクラス) に登録された RowID 列です。1 つのテーブルにつき、1 つだけ存在します。 | |
| RASTER | BYTEA or ST_RASTER | ラスターはジオデータベースのみでサポートされます。作成される PostgreSQL データ タイプは、ラスター データセットまたはモザイク データセットの作成時に使用されるコンフィグレーション キーワード (rasterblob、binary、または st_raster) によって異なります。 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 ジオメトリ
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 ジオメトリ タイプを使用する PostgreSQL 内のジオデータベースのフィーチャクラスには、CAD に使用されるフィールドとカーブ格納 (GDB_GEOMATTR_DATA) が含まれます。ArcGIS の外部に空間テーブルを作成する場合は、そのテーブルをジオデータベースに登録します。これで、このフィールドがテーブルに追加されます。
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 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 データ タイプ」をご参照ください。