フィーチャクラスおよびテーブルを作成する際には、各フィールドのデータ タイプを選択します。利用可能なデータ タイプには、さまざまな数値タイプ、テキスト タイプ、日付タイプ、BLOB (Binary Large Object)、GUID (Globally Unique Identifier) などが含まれます。正しいデータ タイプを選択することにより、データを正しく格納し、解析、データ管理、およびビジネス ニーズへの対応を容易にすることができます。
このトピックで説明するデータ タイプには、ArcGIS でフィーチャクラスまたはテーブルを作成するときに利用できるデータ タイプが含まれています。データを ArcSDE ジオデータベース、パーソナル ジオデータベース、またはデータベースに格納する場合は、ArcGIS と DBMS (Database Management System) のデータ タイプが直接一致しないことがあります。このようなデータ タイプは、DBMS の最も近いデータ タイプと照合されます。このプロセスはデータ タイプ マッピングと呼ばれます。このプロセスでは、値を別のタイプとして DBMS に格納し、データ属性に異なる基準を適用することができます。その結果、ArcGIS for Desktop のテーブルまたはフィーチャクラス プロパティで表示されるデータ タイプは、初期に定義したデータ タイプとは異なる場合があります。DBMS のデータ タイプ マッピング プロセスの詳細については、「DBMS のデータ タイプ」をご参照ください。
また、シェープファイルや 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 タイプを指定します。次に、データ タイプ、それらの有効範囲、および格納領域の要件をまとめます。これらはファイルおよびパーソナル ジオデータベースの有効範囲です。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、Netezza) ; 5 (DB2、Informix) | 0 |
Long integer | 6 – 10 (Oracle、PostgreSQL) ; 6–9 (DB2、Informix、Netezza、SQL Server) | 0 |
Float | 1–6 | 1–6 |
Double | 7+ | 0+ |
* ArcGIS for Desktop のデフォルトでは short integer が精度 5 で作成されますが、short integer 列に格納できる値は -32,768 ~ 32,767 の範囲内に限られます。したがって、精度を 5 に設定したとしても、32,767 を超える値または -32,768 未満の値は、short integer フィールドに格納できません。Oracle 以外のデータベースでは、ArcGIS for Desktop で作成した short integer 列に精度を指定する必要はありません。SQL Server データベースまたは PostgreSQL データベースでは、ArcGIS for 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 の指定です。ArcGIS でテーブル内の日付フィールドに入力した日付は、この形式に変換されます。
BLOB
BLOB は、長いバイナリ数値列として格納されるデータです。ArcGIS はアノテーションとディメンションを BLOB として格納します。また、このタイプのフィールドには、画像、マルチメディア、またはコードのビットなどのアイテムを格納することができます。BLOB フィールドにアイテムを読み込む、または BLOB フィールドの内容を参照するには、カスタム ローダー、カスタム ビューアー、またはサードパーティ アプリケーションを使用する必要があります。
ObjectID
ArcGIS によって維持される ObjectID フィールドは、テーブル内の各行が一意な ID を持つことを保証します。テーブルまたはレイヤーの属性テーブルでは、通常、テーブルの ObjectID (OID) とレイヤーの FID のエイリアスの下に、ObjectID フィールドが表示されます。選択セットのスクロールや表示などの主な機能は、このフィールドが存在するかどうかに依存します。
[個別属性] ツールなど ArcGIS for Desktop の大部分の機能では、ObjectID が一意でなければならないことに注意してください。そのため、ArcGIS の外部でデータベースを直接操作するときは ObjectID が重複しないよう注意する必要があります。たとえば、1 対多のリレーションシップを持つビューを作成するときに ObjectID が重複する可能性があります。ObjectID が重複すると、ArcGIS for Desktop の機能が正常に動作しなくなります。
データベース テーブルを ArcMap に追加するときには、ObjectID が必要です。ArcGIS が ObjectID として使用する NULL 以外の整数フィールドを検出できない場合、ObjectID として使用するフィールドを選択するように求められます。詳細については、「一意な識別子のフィールドの選択」をご参照ください。
Global ID
GUID データ タイプは、中括弧 ({}) で囲まれた 36 文字のレジストリ形式の文字列を格納します。この文字列によって、ジオデータベース内とジオデータベース間でフィーチャまたはテーブル行を一意に識別できます。一方向と双方向のジオデータベース レプリケーションでは、フィーチャがこのようにして追跡されます。開発者はそれらをリレーションシップや GUID が必要なアプリケーションに使用することができます。リレーションシップでは、Global ID フィールドが関連元キーの場合、GUID フィールドは関連先のキーでなければなりません。ジオデータベースのデータセットにグローバル ID を追加するには、カタログ ツリーで右クリックして、[Global ID の追加] をクリックします。これらの値はジオデータベースによって自動的に管理されます。GUID フィールドを作成することもできますが、その値はユーザーが管理しなければなりません。
パーソナル ジオデータベースや Micorosoft SQL Server など、ネイティブ GUID データ タイプを持つデータベースは、Global ID と GUID の値を 16 バイト データとして格納します。ネイティブ GUID データ タイプを持たないデータベースは、それらの値を 38 バイト データとして格納します。
グローバル ID に関する注意事項
- GUID フィールドは、フィーチャの [プロパティ] ダイアログ ボックスの [フィールド] タブか、テーブル ウィンドウの [フィールドの追加] コマンドでジオデータベース データセットに追加することができます。
- [Global ID の追加] コマンドは、ジオデータベースのスタンドアロン フィーチャクラス、テーブル、および属性リレーションシップ クラスで利用することができます。このコマンドは、フィーチャ データセットの個々のデータセットで実行することはできません。フィーチャ データセット全体に対してのみ実行することができます。データベースのテーブルで実行することもできません。
- Global ID 列がすでに存在する場合、元の列を破棄して新しい Global ID 列を追加するのではなく、元の列は変更されないままとなります。
- ジオデータベースのフィーチャ データセットに追加するフィーチャクラスに Global ID 列を追加したい場合は、フィーチャ データセットで [Global ID の追加] コマンドを実行する必要があります。これにより、新しいフィーチャクラスとまだ Global ID 列を持っていないフィーチャクラスに、Global ID 列が追加されます。すでに Global ID 列を持っているフィーチャクラスは変更されないままとなります。
- コピーと貼り付け、データ抽出、および XML ワークスペースのエクスポートとインポートを行っても、出力ジオデータベースで Global ID 値は維持されます。他のデータ エクスポートまたはインポート方法では、Global ID 値は維持されません。
ラスター タイプのフィールド
フィーチャのフィールドを画像にリンクするだけのハイパーリンクとは異なり、ラスター タイプのフィールドでは実際にラスター データをジオデータベース内またはジオデータベースとともに格納することができます。詳細については、「ラスター データセットをフィーチャクラスの属性として追加」をご参照ください。
ジオメトリ
ArcGIS のジオメトリ データ タイプは、テーブルに格納するジオメトリの種類 (ポイント、ライン、ポリゴン、マルチポイント、またはマルチパッチ) を示します。ジオメトリ タイプとして格納されるフィールドは、ArcGIS で作成される場合には Shape という名前になります。
ジオメトリは、ArcGIS によって使用されるデータ タイプです。たとえば、次に示すように新しいフィーチャクラスに [ポリゴン フィーチャ] を選択すると、デフォルトでは、追加される Shape フィールドは ArcGIS のジオメトリのデータ タイプになります。
[フィーチャクラスの新規作成] ダイアログ ボックスの [フィールド プロパティ] セクションで、ジオメトリ タイプとして「ポリゴン」が表示されます。
フィーチャクラスを異なるフィーチャ タイプ (ライン、ポイント、マルチポイント、マルチパッチ、ディメンション、またはアノテーション) で作成した場合、Shape フィールドのジオメトリ タイプはフィーチャ タイプに応じて異なります (ライン、ポイント、マルチポイント、マルチパッチ、ポリゴン、ディメンション、およびアノテーション)。
データベースまたは ArcSDE ジオデータベースのフィーチャクラスにジオメトリ フィールドを作成するときには、さらにデータベース データ タイプというデータ タイプを検討する必要があります。DBMS に Shape フィールドの値を格納する方法は、DBMS が使用するジオメトリ格納タイプによって異なります。データベースにフィーチャクラスを作成するときには、[フィーチャクラスの新規作成] ダイアログ ボックスの [フィールド プロパティ] セクションにフィールドの空間タイプを指定します。ジオデータベースにフィーチャクラスを作成するときに使用されるジオメトリ格納タイプは、指定したコンフィグレーション キーワードの GEOMETRY_STORAGE パラメーターの設定によって決まります。