ArcGIS でサポートされている PostgreSQL のデータ タイプ
データベースにテーブルを作成する、またはテーブルに列を追加するときに、列のデータ タイプを定義します。 データ タイプによって次のことが決定します。
列に保存できる値
その列のデータに対して使用できる操作
列のデータをデータベースに保存する方法
ArcGIS では、特定のデータ タイプを操作できます。 データベース接続、クエリー レイヤー、または Web サービスからデータベース テーブルにアクセスする場合、ArcGIS はサポートされていないデータ タイプを除外します。 ArcGIS にはサポートされていないデータ タイプは表示されないため、サポートされていないデータ タイプを ArcGIS から編集することはできません。 同様に、ArcGIS を使用してサポートされていないデータ タイプを含むテーブルをデータベース間でコピーして貼り付ける場合、ArcGIS はサポートされているデータ タイプを使用する列のみを貼り付けます。
次のテーブルの最初の列は ArcGIS データ タイプです。 2 番目の列は、ArcGIS が作成する PostgreSQL のデータ タイプです。 3 番目の列は、ArcGIS 以外で作成した (ジオデータベースに登録されていない) テーブルを表示するときに、ArcGIS データ タイプにマップされるその他の PostgreSQL のデータ タイプ (存在する場合) を示しています。 最後の列には、必要に応じて追加情報が表示されています。
|
ArcGIS のデータ タイプ |
作成される PostgreSQL のデータ タイプ |
表示可能なその他の PostgreSQL データ タイプ |
備考 |
|---|---|---|---|
|
Big Integer |
bigint |
||
|
Blob |
bytea |
||
|
Date |
timestamp without time zone |
timestamp with time zone |
|
|
Date Only |
date |
||
|
Double |
numeric(p,s) |
倍精度 |
ArcGIS で指定した精度 (p) と縮尺 (s) が、データベースに作成されるデータ タイプの結果に影響を与える場合があります。 詳細は、「 ArcGIS フィールド データ タイプ 」をご参照ください。 |
|
Float |
numeric(p,s) |
decimal、double precision、numeric、real |
ArcGIS で指定した精度 (p) と縮尺 (s) が、データベースに作成されるデータ タイプの結果に影響を与える場合があります。 詳細は、「 ArcGIS フィールド データ タイプ 」をご参照ください。 |
|
Geometry |
ST_Geometry, Geometry (PostGIS), Geography (PostGIS) |
ジオデータベースでは、データベースに作成されるデータ タイプは、フィーチャクラスの作成時に使用されるコンフィグレーション キーワードの、 ST_Geometry をデータベース (ジオデータベースではない) で使用するには、インストールする必要があります。 詳細については、「 PostgreSQL データベースへの ST_Geometry タイプの追加 」をご参照ください。 PostGIS ジオメトリーまたはジオグラフィー タイプを使用するには、PostgreSQL データベース クラスター内に PostGIS をインストールし、データベース自体を有効化して PostGIS を使用できるようにする必要があります。 詳細については、PostgreSQL のドキュメントをご参照ください。 |
|
|
Global ID |
varchar(38) |
Global ID はジオデータベースでのみサポートされています。 |
|
|
GUID |
varchar(38) |
UUID |
|
|
Long integer |
integer |
serial |
|
|
Object ID |
ジオデータベースの場合は integer (32 ビット) または bigint (64 ビット) データベースの場合はシリアル |
ArcGIS の ObjectID データ タイプは、テーブル (またはフィーチャクラス) に登録された RowID 列です。 1 つのテーブルにつき、1 つだけ存在します。 |
|
|
ラスター |
bytea |
ArcGIS ラスター データ タイプは、ジオデータベースのみでサポートされます。 |
|
|
Short integer |
SMALLINT |
||
|
テキスト |
character varying |
character、text |
SQL クライアントまたはサードパーティー製のアプリケーションを使用してテキスト フィールドを作成する場合に、長さを定義しないと (つまり、長さを 0 にする)、ArcGIS でこのフィールドが CLOB として読み取られます。 |
|
Time Only |
time |
タイム ゾーンを含まない time、タイム ゾーンを含む time |
|
|
Timestamp Offset |
該当なし |
サポート対象外 |
テーブル内に ArcGIS でサポートされていないデータ タイプの列がある場合、その列をテキストにキャストできます。 ただし、これを実行するのは、列内の値を表示する場合だけにしてください。その列の値で解析を行う必要がある場合は、実行しないでください。 たとえば、 SELECT ステートメントを実行して、テーブル B 内の列を選択し、小数の列 (total) をテキストにキャストできます。
SELECT id, name, total::text
FROM me.mydb.tableb;
ジオメトリ データ タイプ
表に示すように、ArcGIS では、PostgreSQL ST_Geometry、Esri Geometry、PostGIS Geography という 3 種類の空間データ タイプを PostGIS に作成および操作できます。 以降の 2 つのセクションでは、これらのデータ タイプの背景について説明します。
ST_Geometry
以下では、ST_Geometry 空間データ タイプの概要について説明します。 PostgreSQL の実装に固有の情報については、「 PostgreSQL の ST_Geometry 」をご参照ください。
ST_Geometry データ タイプはユーザー定義データ タイプ (UDT) の SQL 3 Specification を実装しているため、ランドマークの場所、道路、土地区画といった空間データを格納できる列を作成することができます。 これは、ジオデータベースおよびデータベースに対して、ISO および Open Geospatial Consortium (OGC) 準拠の SQL アクセスを提供します。 このジオメトリー格納は、地理フィーチャを表すオブジェクト (ポイント、ライン、ポリゴン) の格納を提供することで、データベースの機能を拡張します。 データベースのリソースを効率よく使用し、レプリケーションやパーティションといったデータベースの機能との互換性を維持し、空間データへの素早いアクセスを可能にします。
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 では、SQL に対する OGC Simple Features 仕様に従います。 ジオメトリの OGC Well-Known Binary (WKB) 表現と Well-Known Text (WKT) 表現を使用します。
PostGIS には、ジオメトリとジオグラフィの 2 つの空間タイプがあります。 それらを使用するには、PostGIS データベース クラスターに PostgreSQL をインストールし、PostGIS テンプレート データベースを使用して、ジオデータベースを格納するデータベースを作成する必要があります。 使用する ArcGIS のリリースでサポートされているバージョンの PostGIS をインストールします。
ArcGIS で PostGIS 空間格納タイプを使用するときは、以下の点に留意してください。
ジオデータベースとして使用する PostGIS データベースを PostgreSQL データベース テンプレートを使用して作成するか、データベースで PostGIS を有効化する必要があります。
sde ユーザーおよびジオデータベースまたはデータベース内の PostGIS データにアクセスするユーザーには、 特定の PostGIS ビューに関する権限が付与 されている必要があります。
作成するフィーチャクラスは、PostGIS の public.spatial_ref_sys ビューに列挙されている空間参照だけを使用できます。 ここにない空間参照を指定した場合、フィーチャクラスの作成は失敗します。
これらの空間データ タイプのいずれかを使用するフィーチャクラスを作成するときは、
GEOMETRY_STORAGEパラメーターをPG_GEOMETRY(PostGIS ジオメトリの場合) またはPG_GEOGRAPHY(PostGIS ジオグラフィの場合) に設定したコンフィグレーション キーワードを指定する必要があります。PostgreSQL タイプを使用する PostGIS のジオデータベースのフィーチャクラスには、CAD および曲線ストレージ (GDB_GEOMATTR_DATA) 用のフィールドが含まれています。 ArcGIS の外部で空間テーブルを作成して、そのテーブルをジオデータベースに登録すると、このフィールドがテーブルに追加されます。
PostGIS ジオグラフィ タイプでは、処理できる形状のサイズが制限されます。 詳細については、 PostGIS のマニュアル をご参照ください。
PostGIS ジオメトリまたはジオグラフィ列の作成権限の付与
データベースで PostGIS を有効にすると、geometry_columns、geography_columns、spatial_ref_sys という 3 つのビューがパブリック スキーマに追加されます。 ジオデータベース内のすべてのユーザー (sde ユーザーを含む) に、geometry_columns、geography_columns、spatial_ref_sys ビューに対する SELECT 権限を付与する必要があります。
GRANT select
ON public.geometry_columns
TO <login_name>;
GRANT select
ON public.geography_columns
TO <login_name>;
GRANT select
ON public.spatial_ref_sys
TO <login_name>;
PostGIS 空間データ タイプを使用するフィーチャクラスの作成
ArcGIS は、コンフィグレーション パラメーター設定を使用して、フィーチャクラスの作成時に使用する空間データ タイプを決定します。 このパラメーターは GEOMETRY_STORAGE です。 PostgreSQL のジオデータベースでは、パラメーターの値を ST_GEOMETRY 、 PG_GEOMETRY (PostGIS ジオメトリ タイプに対する設定)、または PG_GEOGRAPHY (PostGIS ジオグラフィ タイプに対する設定) のいずれかに設定できます。 したがって、必要な PostGIS 空間データ タイプに設定された GEOMETRY_STORAGE パラメーター (PG_GEOMETRY または PG_GEOGRAPHY) を含む コンフィグレーション キーワード を指定する必要があります。
ST_Geometry 空間タイプを使用するジオデータベースを作成するとき、 DEFAULTS コンフィグレーション キーワードの GEOMETRY_STORAGE パラメーター値は ST_GEOMETRY に設定されます。 PostGIS 空間タイプを使用するジオデータベースを作成するとき、 DEFAULTS コンフィグレーション キーワードの GEOMETRY_STORAGE パラメーター値は PG_GEOMETRY に設定されます。
ほとんどのデータを異なる空間タイプで格納する場合は、 DEFAULTS コンフィグレーション キーワードの GEOMETRY_STORAGE パラメーター値を 変更 します。 または、フィーチャクラスの一部だけを PostGIS 格納タイプで格納する場合は、フィーチャクラスの作成時に PG_GEOMETRY または PG_GEOGRAPHY コンフィグレーション キーワードを指定できます。 これらのキーワードをジオデータベースからエクスポートすると、次のように表示されます。
##PG_GEOMETRY
GEOMETRY_STORAGE "PG_GEOMETRY"
UI_TEXT "User Interface text description for POSTGIS geometry storage"
END
##PG_GEOGRAPHY
GEOMETRY_STORAGE "PG_GEOGRAPHY"
UI_TEXT "User Interface text description for POSTGIS geography storage"
END
これらのコンフィグレーション キーワードのいずれかを使用するとき、残りの格納パラメーターは DEFAULTS キーワードから取得されます。 コンフィグレーション パラメーターの詳細については、「 PostgreSQL コンフィグレーション パラメーター 」をご参照ください。
既存のジオメトリまたはジオグラフィ テーブルの使用
ArcGIS ではテーブルが次の前提条件を満たしている限り、他のアプリケーションや SQL によって外部環境で作成された PostGIS ジオメトリ列またはジオグラフィ列が含まれたテーブル (サードパーティ テーブルとも呼ばれます) を使用することができます。
空間列が 1 つだけ含まれていなければならない。 含まれていない場合は、空間列を 1 つだけ含むクエリ レイヤーまたはビューを定義する。
他にユーザー定義タイプの列が含まれていない。
フィーチャのタイプが 1 種類でなければならない (ポイント、ライン、またはポリゴン)。ただし、フィーチャのタイプはマルチパートでもよい。
Object ID 列に適した、整数タイプの一意な NOT_NULL の列が含まれていなければならない。
空間インデックスを持つ。
SQL を使用して PostGIS 列を持つテーブルを作成する方法については、 PostGIS のドキュメント をご参照ください。
PostgreSQL から ArcGIS Pro データベースに接続して、PostGIS の列を含むテーブルをジオデータベースに登録することができます。 詳細については、「 ジオデータベースへのテーブルまたはビューの登録 」をご参照ください。