ジオデータベース フィールドのデータ タイプ
フィーチャクラスおよびテーブルを作成する際には、各フィールドのデータ タイプを選択します。利用可能なデータ タイプには、さまざまな数値タイプ、テキスト タイプ、日付タイプ、BLOB(Binary Large Object)、GUID(Globally Unique Identifier)などが含まれます。正しいデータ タイプを選択することにより、データを正しく格納し、解析、データ管理、およびビジネス ニーズへの対応を容易にすることができます。
このトピックで説明するデータ タイプには、ArcMap または ArcCatalog でフィーチャクラスまたはテーブルを作成するときに利用できるすべてのデータ タイプが含まれています。データを ArcSDE ジオデータベースまたはパーソナル ジオデータベースに格納する場合は、ArcGIS と DBMS(Database Management System)のデータ タイプが直接一致しないことがあります。このようなデータ タイプは、DBMS の最も近いデータ タイプと照合されます。このプロセスはデータ タイプ マッピングと呼ばれます。このプロセスでは、値を別のタイプとして DBMS に格納し、データ属性に異なる基準を適用することができます。DBMS のデータ タイプ マッピング プロセスの詳細については、「DBMS のデータ タイプ」をご参照ください。
数値
数値は 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.4E-38 ~ 1.2E38 の有理数のみを格納する必要がある場合は、最大で 8 バイトを消費する double タイプではなく、4 バイトを消費する float タイプを指定します。データ タイプ、その有効範囲、および格納領域の要件は、下掲の表に示すとおりです。これらはファイルおよびパーソナル ジオデータベースの有効範囲です。ArcSDE ジオデータベースの有効範囲は少し異なります。
データ タイプ |
有効範囲 |
サイズ(バイト) |
用途 |
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 |
有理数を含む特定の範囲内の数値 |
ファイル ジオデータベースまたはパーソナル ジオデータベースのテーブルで数値フィールドを指定する場合は、データ タイプを指定するだけで済みます。ArcSDE ジオデータベースで数値フィールドを指定する場合は、さらに精度(全桁数)とスケール(小数点以下桁数)を指定します。
精度とスケールを指定することにより、フィールドに設定可能な値の範囲と数値形式を制限できるため、より厳密な制御が可能になります。たとえば、フィールドのタイプとして精度が 4、スケールが 2 の float を指定する場合、12.34 の値を設定することができます。このフィールドに 12.345 を入力しようとすると、最大桁数と小数点以下の桁数を超えているので、エラー メッセージが表示されます。これに対し、フィールドのタイプとして精度が 5、スケールが 3 の float を指定した場合は、12.345 を入力することができます。
次に、データ タイプとそれらの有効な精度値およびスケール値をまとめます。この表を ArcSDE ジオデータベースでのデータ タイプ、精度、スケールの選択に役立ててください。
データ タイプ |
精度(フィールドの長さ) |
スケール(小数点以下の桁数) |
---|---|---|
Short integer* |
1-5(Oracle、SQL Server、PostgreSQL); 5(DB2、Informix) |
0 |
Long integer |
6 – 10(Oracle、PostgreSQL); 6-9(DB2、Informix、SQL Server) |
0 |
Float |
1–6 |
1–6 |
Double |
7+ |
0+ |
* ArcGIS Desktop のデフォルトでは short integer が精度 5 で作成されますが、short integer 列に格納できる値は -32,768 ~ 32,767 の範囲内に限られます。したがって、精度を 5 に設定したとしても、32,767 を超える値または -32,768 未満の値は、short integer フィールドに格納できません。Oracle 以外のデータベースでは、ArcGIS Desktop で作成した short integer 列に精度を指定する必要はありません。SQL Server データベースまたは PostgreSQL データベースでは、ArcGIS Desktop で作成した long integer 列に精度を指定する必要はありません。
次に、数値の範囲とそれらを ArcSDE ジオデータベースに格納する方法の例を示します。
範囲 |
データ タイプ |
精度(フィールドの長さ) |
スケール(小数点以下の桁数) |
---|---|---|---|
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 |
* 負数の場合はマイナス記号を格納するための追加の精度が必要です。
コンピュータに格納できる桁数は、割り当てられる格納領域によって制限されます。ファイル、パーソナル、または ArcSDE ジオデータベースの double タイプのフィールドには、8 バイトの格納領域に収まる最も長い数である、15 桁の精度の数値を格納することができます。これを超える桁数の数値は丸められ、科学表記法と同様の形式で格納され、概数となります。たとえば、20 桁の数値(12,345,678,901,234,567,890)を入力した場合は、15 桁の数値である 1.23456789012346E+19 に丸められて格納されます。末尾のコード値(E+19)は、小数点の位置を定義します。
ファイル ジオデータベースまたはパーソナル ジオデータベースの float タイプのフィールドには、6 桁の精度の数値しか格納できません。たとえば、float タイプのフィールドに、6 桁を超える数値である 123,456.7 を格納することはできません。この数値をファイル ジオデータベースまたはパーソナル ジオデータベースに入力することは可能ですが、6 桁の数値である 123,457 に丸められます。この数値を正確な精度で格納する必要がある場合は、double タイプのフィールドに格納することができます。ArcSDE ジオデータベースの float タイプのフィールドでは、そのフィールドの精度を超える桁数の数値を入力することはできず、数値の丸めは行われません。
テキスト
テキスト フィールドは、文字列を表します。これには、道路名、属性プロパティ、その他のテキスト記述が含まれます。テキスト属性を繰り返し使用する場合は、コード値を設定するという方法もあります。テキスト記述は数値でコード化されます。たとえば、道路タイプを数値でコード化する場合には、舗装された道路に 1、砂利の道路に 2 などを割り当てていきます。この方法には、ジオデータベースで使用される格納領域が少なくなるという利点がありますが、ユーザがコード値を理解する必要があります。ジオデータベースのコード値ドメインにコード値を定義し、コードを格納するフィールドにこのドメインを関連付けると、ArcMap または ArcCatalog でテーブルを表示したときにテキスト記述が表示されます。
テキストに使用される文字は言語によって異なります。言語間でのテキストの変換を容易にするために、ArcGIS では文字のエンコーディングに Unicode を使用しています。
日付
日付データ タイプには、日付、時間、または日付と時間を格納することができます。この情報を表現するデフォルト形式は、mm/dd/yyyy hh:mm:ss と AM または PM の指定です。テーブル内の日付フィールドに入力した日付は、この形式に変換されます。
BLOB
BLOB は、単なる長いバイナリ数値列としてジオデータベースに格納されるデータです。ArcGIS はアノテーションとディメンションを BLOB として格納します。また、このタイプのフィールドには、画像、マルチメディア、またはコードのビットなどのアイテムを格納することができます。BLOB フィールドにアイテムを読み込む、または BLOB フィールドの内容を参照するには、カスタム ローダー、カスタム ビューア、またはサードパーティ アプリケーションを使用する必要があります。
ObjectID
ArcGIS によって維持される ObjectID フィールドは、テーブル内の各行が一意な ID を持つことを保証します。テーブルまたはレイヤの属性テーブルでは、通常、テーブルの ObjectID(OID)とレイヤの FID のエイリアスの下に、ObjectID フィールドが表示されます。選択セットのスクロールや表示などの主な機能は、このフィールドが存在するかどうかに依存します。
[個別属性] ツールなど ArcGIS Desktop の大部分の機能では、ObjectID が一意でなければならないことに注意してください。そのため、データベースを直接操作するときは ObjectID が重複しないよう注意する必要があります。たとえば、1 対多のリレーションシップを持つビューを作成するときに ObjectID が重複する可能性があります。ObjectID が重複すると、ArcGIS Desktop の機能が安定して動作しなくなります。
Global ID
GUID データ タイプは、中括弧({})で囲まれた 36 文字のレジストリ形式の文字列を格納します。これらの文字列は、ジオデータベース内とジオデータベース間でフィーチャまたはテーブル行を一意に識別します。一方向と双方向のジオデータベース レプリケーションでは、フィーチャがこのようにして追跡されます。開発者はそれらをリレーションシップや GUID が必要なアプリケーションに使用することができます。リレーションシップでは、Global ID フィールドが関連元キーの場合、GUID フィールドは関連先のキーでなければなりません。カタログ ツリーでフィーチャに GUID を追加するには、フィーチャを右クリックして、[Global ID の追加] をクリックします。これらの値はジオデータベースによって自動的に管理されます。GUID フィールドを作成することもできますが、その値はユーザが管理しなければなりません。
パーソナル ジオデータベースや Micorosoft SQL Server を使用する ArcSDE ジオデータベースなど、ネイティブ GUID データ タイプを持つデータベースは、Global ID と GUID の値を 16 バイト データとして格納します。ネイティブ GUID データ タイプを持たないデータベースは、それらの値を 38 バイト データとして格納します。
GUID に関する注意事項
- GUID フィールドは、フィーチャの [プロパティ] ダイアログの [フィールド] タブか、テーブル ウィンドウの [フィールドの追加] コマンドで追加することができます。
- [Global ID の追加] コマンドは、スタンドアロン フィーチャクラス、テーブル、および属性リレーションシップ クラスで利用することができます。フィーチャ データセットの個々のデータセットで実行することはできません。フィーチャ データセット全体でのみ実行することができます。
- Global ID 列がすでに存在する場合、元の列を破棄して新しい Global ID 列を追加するのではなく、元の列は変更されないままとなります。
- フィーチャ データセットに追加するフィーチャクラスに Global ID 列を追加したい場合は、フィーチャ データセットで [Global ID の追加] コマンドを実行する必要があります。これにより、新しいフィーチャクラスとまだ Global ID 列を持っていないフィーチャクラスに、Global ID 列が追加されます。すでに Global ID 列を持っているフィーチャクラスは変更されないままとなります。
- コピーと貼り付け、データ抽出、および XML ワークスペースのエクスポートとインポートを行っても、出力ジオデータベースで Global ID 値は維持されます。他のデータ エクスポートまたはインポート方法では、Global ID 値は維持されません。
ラスタ タイプのフィールド
フィーチャのフィールドを画像にリンクするだけのハイパーリンクとは異なり、ラスタ タイプのフィールドでは実際にラスタ データをジオデータベース内またはジオデータベースとともに格納することができます。詳細については、「フィーチャクラスへの属性としてのラスタ データセットの追加」をご参照ください。
ジオメトリ
ArcGIS のジオメトリ データ タイプは、テーブルに格納するジオメトリの種類(ポイント、ライン、ポリゴン、マルチポイント、またはマルチパッチ)を示します。ジオメトリ タイプとして格納されるフィールドは、通常は Shape という名前です。
ジオメトリは、ArcGIS によって使用されるデータ タイプです。データを ArcSDE ジオデータベースに格納する場合、ジオメトリック データが DBMS に格納される方法は、使用する DBMS によって異なります。これは、各 DBMS 用の ArcSDE が特定のジオメトリ格納タイプを使用するためです。
たとえば、新しいフィーチャクラスにポリゴン フィーチャを選択した場合、
デフォルトで追加される Shape フィールドのデータ タイプは「Geometry」になります。[フィーチャクラスの新規作成] ダイアログ ボックスの [フィールド プロパティ] セクションで、[ジオメトリ タイプ] として「ポリゴン」が表示されます。
フィーチャクラスを異なるフィーチャ タイプ(ライン、ポイント、マルチポイント、マルチパッチ、ディメンション、またはアノテーション)で作成した場合、Shape フィールドのジオメトリ タイプはフィーチャ タイプに応じて異なります(ライン、ポイント、マルチポイント、マルチパッチ、ポリゴン、ディメンション、およびアノテーション)。
ArcSDE で使用する DBMS に Shape フィールドの値が格納される方法は、DBMS が使用するジオメトリ格納タイプによって異なります。ArcSDE Personal ジオデータベースでフィーチャクラスを新規作成する場合、Shape フィールドの値は ArcSDE Compressed Binary ジオメトリ格納タイプで格納されます。