ArcGIS フィールド データ タイプ

フィーチャクラスおよびテーブルを作成する際には、各フィールドのデータ タイプを選択します。利用可能なデータ タイプには、さまざまな数値タイプ、テキスト タイプ、日付タイプ、BLOB (Binary Large Object)、GUID (Globally Unique Identifier) などが含まれます。正しいデータ タイプを選択することにより、データを正しく格納し、解析、データ管理、およびビジネス ニーズへの対応を容易にすることができます。

このトピックで説明するデータ タイプには、ArcGIS でフィーチャクラスまたはテーブルを作成するときに利用できるデータ タイプが含まれています。データをデータベースまたはデータベース管理システム (DBMS) のジオデータベースに格納した場合に、ArcGIS と DBMS のデータ タイプが一致しないことがあります。このようなデータ タイプは、DBMS の最も近いデータ タイプと照合されます。このプロセスはデータ タイプ マッピングと呼ばれます。このプロセスでは、値を別のタイプとして DBMS に格納し、データ属性に異なる基準を適用することができます。その結果、ArcGIS Pro のテーブルまたはフィーチャクラスのプロパティに表示されるデータ タイプは、最初に定義したデータ タイプと異なる場合があります。

シェープファイルや dbf テーブルなどの他のデータ格納形式には、異なるデータ タイプ制限が適用されます。異なるデータ格納タイプ間でデータを移動する際は、格納先の形式のデータ タイプとサイズの制限を理解していることを確認してください。

数値

数値は 4 つの数値データ タイプのいずれかで格納することができます。

  • Short integer
  • Long integer
  • Float (単精度浮動小数点数)
  • Double (倍精度浮動小数点数)

データ タイプを選択する際には、整数と分数のどちらが必要であるかを検討します。整数 (12、12,345,678 など) を格納できればよい場合は、short integer または long integer を指定します。小数点を持つ有理数 (0.23、1234.5678 など) を格納する必要がある場合は、float または double を指定します。

short integer と long integer のどちらか、または float と double のどちらかを選択する際に、格納領域が最も少ないデータ タイプを選択します。これにより、必要な記憶領域の量を最小限に抑えるだけでなく、パフォーマンスを向上させます。-32,768 ~ 32,767 の整数だけを格納する必要がある場合は、4 バイトを消費する long integer データ タイプではなく、2 バイトしか消費しない short integer データ タイプを指定します。-3.4E38 ~ 1.2E38 の分数だけを格納する必要がある場合は、8 バイトを消費する double データ タイプではなく、4 バイトを消費する float データ タイプを指定します。データ タイプ、その有効範囲、および格納領域の要件は、下掲の表に示すとおりです。これらはファイルおよびパーソナル ジオデータベースの有効範囲です。有効範囲は、データベースとエンタープライズ/ワークグループ/デスクトップ ジオデータベースで少し異なります。

データ タイプ

有効範囲

サイズ (バイト)

用途

Short integer

-32,768 ~ 32,767

2

小数値を含まない特定の範囲内の数値、コード値

Long integer

-2,147,483,648 ~ 2,147,483,647

4

小数値を含まない特定の範囲内の数値

Float (単精度浮動小数点数)

-3.4E38 ~ 1.2E38

4

小数値を含む特定の範囲内の数値

Double (倍精度浮動小数点数)

-2.2E308 ~ 1.8E308

8

小数値を含む特定の範囲内の数値

ArcGIS データ タイプの表

ファイル ジオデータベース内のテーブルで数値フィールドを指定する場合は、データ タイプを指定するだけで済みます。データベースまたはエンタープライズ ジオデータベースの数値フィールドを指定する場合は、精度 (全桁数) とスケール (小数点以下の桁数) も指定します。

精度とスケールを指定することにより、フィールドに設定可能な値の範囲と数値形式を制限できるため、より厳密な制御が可能になります。たとえば、フィールドのタイプとして精度が 4、スケールが 2 の float を指定する場合、12.34 の値を設定することができます。このフィールドに 12.345 を入力しようとすると、最大桁数と小数点以下の桁数を超えているため、エラー メッセージが表示されます。これに対し、フィールドのタイプとして精度が 5、スケールが 3 の float を指定した場合は、12.345 を入力することができます。

次に、データ タイプとそれらの有効な精度値およびスケール値をまとめます。この表は、データ タイプ、精度、スケールを選択する際に役立ちます。

データ タイプ精度 (フィールドの長さ)スケール (小数点以下の桁数)

Short integer*

1-5 (OracleMicrosoft SQL Server); 5 (IBM Db2) 1-4 (PostgreSQL)

0

Long integer

6-10 (Oracle); 6-9 (Db2SQL Server); 5-9 (PostgreSQL)

0

Float (単精度浮動小数点数)

1-6

1-6

Double (倍精度浮動小数点数)

7+

0+

*ArcGIS Pro のデフォルトでは、short integer が精度 5 で作成されます。ただし、short integer 列に格納できる値は、-32,768 ~ 32,767 の範囲内の値だけです。したがって、精度を 5 に設定したとしても、32,767 を超える値または -32,768 未満の値は、short integer フィールドに格納できません。Oracle 以外のデータベースでは、ArcGIS Pro で作成された short integer 列に精度を指定する必要はありません。SQL Server データベースまたは PostgreSQL データベースでは、ArcGIS Pro で作成された long integer 列に精度を指定する必要はありません。

数値の範囲とそれをデータベースまたはエンタープライズ ジオデータベースに格納する方法の例を次に示します。

範囲値データ タイプ精度 (フィールドの長さ)スケール (小数点以下の桁数)

0 ~ 99

Short integer

2

0

-99 ~ 99*

Short integer

3

0

0 ~ 32,767*

Short integer

5

0

32,768 ~ 99,999

Long integer

5

0

0.001 ~ 0.999

Float (単精度浮動小数点数)

4

3

1,000.00 ~ 9,999.99

Float (単精度浮動小数点数)

6

2

-123,456.78 ~ 0*

Double (倍精度浮動小数点数)

9

2

0 ~ 1,234.56789

Double (倍精度浮動小数点数)

9

5

数値の範囲、データ タイプ、精度、およびスケールの例

* 負数の場合はマイナス記号を格納するための追加の精度が必要です。

コンピューターに格納できる桁数は、割り当てられる格納領域によって制限されます。データベースとジオデータベースの double データ タイプのフィールドには、15 桁までの精度の数値 (8 バイトの格納領域に収まる最も長い数値) しか正確に格納できません。これを超える桁数の数値は丸められ、科学的表記法と同様の形式で格納され、概数となります。たとえば、20 桁の数値「12,345,678,901,234,567,890」を入力した場合、この数値は丸められ、15 桁の数値「1.23456789012346E+19」として格納されます。末尾にあるコード値「E+19」は、小数点の位置を表します。

ファイル ジオデータベースの float タイプのフィールドには、6 桁までの精度の数値しか格納できません。たとえば、float タイプのフィールドに、6 桁を超える数値である 123,456.7 を格納することはできません。この数値はファイル ジオデータベースの float タイプのフィールドに入力できますが、6 桁の数値である 123,457 に丸められます。この数値を正確な精度で格納する必要がある場合は、double タイプのフィールドに格納することができます。エンタープライズ ジオデータベースおよびデータベースの float タイプのフィールドでは、そのフィールドの精度を超える桁数の数値を入力できないため、数値の丸めは行われません。

text

テキスト フィールドは、文字列を表します。これには、道路名、属性プロパティ、その他のテキスト記述が含まれます。ジオデータベースのテキスト属性を繰り返し使用する場合は、コード値を設定するという方法もあります。テキスト記述は数値でコード化されます。たとえば、道路タイプを数値でコード化する場合には、舗装された道路に 1、砂利の道路に 2 などを割り当てていきます。この方法には、ジオデータベースで使用される格納領域が少なくなるという利点がありますが、ユーザーがコード値を理解する必要があります。ジオデータベース内のコード値ドメインでコード値を定義し、コードを格納する整数フィールドにこのドメインを関連付けると、ArcGIS Pro でテーブルを表示した際にテキスト記述が表示されます。

サブタイプおよび属性ドメインの詳細

テキストに使用される文字は言語によって異なります。言語間でのテキストの変換を容易にするために、ArcGIS では文字のエンコーディングに Unicode を使用しています。

日付

日付データ タイプには、日付、時間、または日付と時間を格納することができます。この情報を表現するデフォルト形式は、mm/dd/yyyy hh:mm:ss と AM または PM の指定です。ArcGIS でテーブル内の日付フィールドに入力した日付は、この形式に変換されます。

BLOB

BLOB は、長いバイナリ数値列として格納されるデータです。ArcGIS はアノテーションとディメンションを BLOB として格納します。また、このタイプのフィールドには、画像、マルチメディア、またはコードのビットなどのアイテムを格納することができます。BLOB フィールドにアイテムを読み込む、または BLOB フィールドの内容を参照するには、カスタム ローダー、カスタム ビューアー、またはサードパーティ アプリケーションを使用する必要があります。

ObjectID

ArcGIS によって維持される ObjectID フィールドは、テーブル内の各行が一意の ID を持つことを保証します。テーブルまたはレイヤーの属性テーブルでは、通常、テーブルの ObjectID (OID) とレイヤーの FID のエイリアスの下に ObjectID フィールドが表示されます。選択セットのスクロールや表示などの主な機能は、このフィールドが存在するかどうかに依存します。

[個別属性] ツールなど、ArcGIS Pro の大部分の機能では、ObjectID が一意でなければならない点に注意してください。このため、ArcGIS の外部でデータベースを直接操作する際には、ObjectID が重複しないよう注意する必要があります。たとえば、1 対多のリレーションシップを持つビューを作成するときに ObjectID が重複する可能性があります。ObjectID が重複している場合、ArcGIS Pro の機能が正常に動作しなくなります。

データベース テーブルをマップに追加する場合には、ObjectID が必要です。ArcGIS が ObjectID として使用する NULL 以外の整数フィールドを検出できない場合、ObjectID として使用するフィールドを選択するように求められます。詳細については、「クエリ レイヤーの一意識別子フィールドの選択」をご参照ください。

Global ID

Global ID と GUID データ タイプは、中括弧 ({}) で囲まれた 36 文字のレジストリ形式の文字列を格納します。これらの文字列によって、ジオデータベース内およびジオデータベース間のフィーチャまたはテーブル行を一意に識別できます。一方向と双方向のジオデータベース レプリケーションでは、フィーチャがこのようにして追跡されます。開発者はそれらをリレーションシップや GUID が必要なアプリケーションに使用することができます。リレーションシップでは、Global ID フィールドが関連元キーの場合、GUID フィールドは関連先キーでなければなりません。ジオデータベース内のデータセットに Global ID を追加するには、[Global ID の追加 (Add Global IDs)] ジオプロセシング ツールを使用します。これらの値はジオデータベースによって自動的に管理されます。GUID フィールドを作成することもできますが、その値はユーザーが管理しなければなりません。

SQL Server など、ネイティブ GUID データ タイプを持つデータベースには、Global ID と GUID の値が 16 バイト データとして格納されます。ネイティブ GUID データ タイプを持たないデータベースは、それらの値を 38 バイト データとして格納します。

Global ID に関する注意事項

  • GUID フィールドをジオデータベース データセットに追加するには、フィールド ビューを使用するか、テーブル ウィンドウ内にある [新しいフィールド] コマンドを使用します。
  • スタンドアロン フィーチャクラス、テーブル、および属性リレーションシップ クラスの Global ID をジオデータベースに追加することができます。このコマンドは、フィーチャ データセットの個々のデータセットで実行することはできません。フィーチャ データセット全体に対してのみ実行することができます。データベースのテーブルで実行することもできません。
  • Global ID 列がすでに存在する場合、既存の Global ID 列を削除して新しい Global ID 列を追加するのではなく、元の列は変更されないままとなります。
  • ジオデータベース内のフィーチャ データセットに追加するフィーチャクラスに Global ID 列を追加したい場合は、そのフィーチャ データセットに対して [Global ID の追加 (Add Global IDs)] ツールを実行する必要があります。これにより、新しいフィーチャクラスとまだ Global ID 列を持っていないフィーチャクラスに、Global ID 列が追加されます。すでに Global ID 列を持っているフィーチャクラスは変更されないままとなります。
  • コピーと貼り付け、データ抽出、および XML ワークスペースのエクスポートとインポートを行っても、出力ジオデータベースで Global ID 値は維持されます。他のデータ エクスポートまたはインポート方法では、Global ID 値は維持されません。

ラスター タイプのフィールド

フィーチャのフィールドを画像にリンクするだけのハイパーリンクとは異なり、ラスター タイプのフィールドでは実際にラスター データをジオデータベース内またはジオデータベースとともに格納することができます。詳細については、「ラスター データセットをフィーチャクラスの属性として追加」をご参照ください。

Geometry

ArcGIS のジオメトリ データ タイプは、テーブルに格納するジオメトリの種類 (ポイント、ライン、ポリゴン、マルチポイント、またはマルチパッチ) を示します。ジオメトリ タイプとして格納されるフィールドは、ArcGIS で作成された場合には SHAPE という名前になります。

ジオメトリは、ArcGIS によって使用されるデータ タイプです。たとえば、新しいフィーチャクラスに対して [ポリゴン フィーチャ] を選択した場合、デフォルトで追加された SHAPE フィールドの ArcGIS データ タイプは [ジオメトリ] になります。

[フィーチャクラスの作成 (Create Feature Class)] ツールの [ジオメトリ タイプ] プロパティには、ジオメトリ タイプがポリゴンとして表示されます。

フィーチャクラスを異なるフィーチャ タイプ (ライン、ポイント、マルチポイント、マルチパッチ、ディメンション、またはアノテーション) で作成した場合、SHAPE フィールドのジオメトリ タイプはフィーチャ タイプに応じて異なります (ライン、ポイント、マルチポイント、マルチパッチ、ポリゴン、ディメンション、およびアノテーション)。

データベースまたはエンタープライズ ジオデータベース内のフィーチャクラスにジオメトリ フィールドを作成する場合は、データベース データ タイプというデータ タイプも検討する必要があります。DBMS に SHAPE フィールドの値を格納する方法は、DBMS で使用されているジオメトリ格納タイプによって異なります。エンタープライズ ジオデータベース内にフィーチャクラスを作成する際に使用されるジオメトリ格納タイプは、指定したコンフィグレーション キーワードの GEOMETRY_STORAGE パラメーターの設定によって決まります。データベース内にフィーチャクラスを作成する場合は、[フィーチャクラスの作成 (Create Feature Class)] ツールの [ジオデータベース設定] セクションにある [コンフィグレーション キーワード] パラメーターでフィールドの空間タイプを指定します。