Esri には、地理情報を格納するための、シェープファイルおよびジオデータベースという 2 つの主要なデータ形式があります。 シェープファイルは、地理情報と属性情報を格納するためのシンプルな形式を提供するために開発されました。 このシンプルな特徴から、シェープファイルは一般的でオープンなデータ転送形式になっています。 シェープファイルはシンプルで扱いやすいのですが、制約があり、ジオデータベースにはできてもシェープファイルにはできないことがたくさんあります。 一般的には、次のような制限があります。
- 地理データは、シェープファイルに格納できる単なるフィーチャおよび属性ではありません。 たとえば、アノテーション、属性リレーションシップ、トポロジ リレーションシップ、属性ドメインおよびサブタイプ、座標精度および解像度、その他多くの機能は、ジオデータベースではサポートされている一方で、シェープファイルではサポートされていません。
- シェープファイルは、dBASE ファイル形式 (.dbf ファイル) を使用して属性を格納します。dBASE は 1980 年代の初めに開発された非 Esri 形式であり、その当時、属性のテーブルを格納する最も一般的な形式でした。 しかし、それから長い年月を経るうちに、Unicode 標準など世界のほとんどの表記体系をサポートするために、データ表現に対して多くの改良が施されています。 そのため、シェープファイルは英語以外の言語で情報を格納するのに向かなくなっています。
- ジオデータベースのフィーチャクラスと異なり、シェープファイルはシェープの長さやシェープのエリア フィールドを維持しません。
シェープファイルはアクティブなデータベース管理には適していません。シェープファイルは、データの作成、編集、バージョン対応、アーカイブという現代のライフ サイクルを扱うことができません。
シェープファイルは次のような場合に役立ちます。
- 非 Esri ソフトウェア アプリケーションで使用するために、データをエクスポートする場合
- シンプルなフィーチャと属性を迅速に記述する場合
後述する例外はありますが、シェープファイルはシンプルなフィーチャ ジオメトリの格納に使用できます。 ただし、シェープファイルは属性に関して問題があります。 たとえば、シェープファイルは NULL 値を格納できず、数値は切り上げられます。Unicode 文字列のサポートも十分ではなく、10 文字を超えるフィールド名は使用できません。また、日付フィールドに時刻を格納することはできません。 さらに、シェープファイルは、ドメインやサブタイプなど、ジオデータベースに備わっている機能をサポートしていません。 そのため、データが非常にシンプルな属性でジオデータベースの機能を必要としない場合以外は、シェープファイルは使用しないでください。
シェープファイルのコンポーネントとファイル拡張子
シェープファイルは、3 つ以上のファイルに格納されます。これらは、すべて同じ接頭辞を持ち、同じフォルダー内に格納されます。 個々のファイルは、ArcGIS Pro ではなく、File Explorer でフォルダーを参照すると表示されます。
エクステンション | 説明 | 必須 |
---|---|---|
.shp | フィーチャ ジオメトリを格納するメイン ファイル。 このファイルに格納されるのはジオメトリだけで、属性は格納されていません。 | はい |
.shx | .shp のコンパニオン ファイルで、.shp ファイル内にある個々のフィーチャ ID の位置を格納します。 | はい |
.dbf | フィーチャの属性情報を格納する dBASE テーブル。 | はい |
.sbn および .sbx | フィーチャの空間インデックスを格納するファイル。 | いいえ |
.atx | 各 dBASE 属性インデックスに対して作成されます。 | いいえ |
.ixs および .mxs | 読み取り/書き込みモードのシェープファイルのジオコーディング インデックス。 | いいえ |
.prj | 座標系情報を格納するファイル。 | いいえ |
.xml | ArcGIS のメタデータ。シェープファイルに関する情報を格納します。 | いいえ |
シェープファイルの制限
シェープファイルには次の制限があります。
- シェープファイルのコンポーネント ファイルには、2 GB というサイズの制限があります。これは、最大で約 7,000 万のポイント フィーチャに相当します。 シェープファイル内のラインまたはポリゴン フィーチャの数は、各ラインまたはポリゴンの頂点 (頂点はポイントに相当します) の数によって変わります。
- シェープファイルには、ジオデータベース フィーチャクラスのような XY 許容値がありません。 XY 許容値は、複数の計測値が同一と見なされるための最大距離です。 この XY 許容値は、同じフィーチャクラスのフィーチャ間や、複数のフィーチャクラス間のリレーションシップを評価する場合に使用されます。 また、フィーチャを編集するときにも広範に使用されます。 オーバーレイ ツールセット、[クリップ (Clip)] ツール、[空間検索 (Select Layer By Location)] ツールや、2 つ以上のフィーチャクラスを入力として使うツールなど、フィーチャの比較を行う操作を使用する際は、シェープファイルではなく、(XY 許容値のある) ジオデータベース フィーチャクラスを使用します。
- 圧縮方法の違いから、シェープファイルはファイル ジオデータベースやエンタープライズ ジオデータベースと比べて、3 ~ 5 倍のディスク領域が必要になります。
- シェープファイルはマルチパッチをサポートしていますが、次の高度なマルチパッチ機能はサポートしていません。
- テクスチャ座標
- テクスチャとパート カラー
- 照明法線
- シェープファイルの空間インデックスは、ジオデータベース フィーチャクラスと比較して非効率的です。 つまり、ジオデータベース フィーチャクラスと比較して、空間検索 (ポリゴン内のフィーチャの選択など) に時間がかかります。 これは、大量のフィーチャを処理する場合のみ問題になります。
- パラメーターで定義されたカーブ (円弧の曲線とも呼ばれます) は、シェープファイルではサポートされていません。 「円弧の作成」で説明しているように、パラメトリック カーブは、ジオデータベース フィーチャクラスを編集することで作成されます。 円弧の曲線は、曲線の描画に数式を使用します。 円弧の曲線フィーチャを含むジオデータベース フィーチャクラスをシェープファイルにエクスポートする際に、カーブ フィーチャは、曲線を捕捉するために、間隔の短い頂点を持つシンプル ライン フィーチャに変換されます。
属性の制限
シェープファイルの属性には次の制限があります。
- 他の形式と異なり、シェープファイルは、数値属性をバイナリ形式ではなく文字形式で格納します。 実数 (つまり、小数点以下を含む数) については、これにより桁数のエラーが生じることがあります。 この制限に該当するのは属性だけで、シェープ座標は該当しません。 次の表は、各属性のデータ タイプのフィールド幅をまとめたものです。
ジオデータベースのデータ タイプ dBASE フィールド タイプ dBASE フィールド幅 (文字数) Object ID
数値
9
Short Integer
数値
4
Long Integer
数値
9
Float
Float
13
Double
Float
13
テキスト
文字
254
日付
日付
8
dBASE のフィールド幅 - 日付フィールドは日付だけをサポートし、時間はサポートしません。
注意:
日付フィールドで時刻がサポートされていないことが、時間解析を行うツールにとって重大な制約になります。
- フィールド名は 10 文字以下に制限されます。
- 属性の最大レコード長は 4,000 バイトです。 レコード長は、すべてのフィールドを定義するために使用されるバイト数であり、実際の値を格納するために使用されるバイト数ではありません。
- フィールドの最大数は 255 です。 シェープファイルへの変換で、この制限を超えた場合は、最初の 255 フィールドだけが変換されます。
- dBASE ファイルには、少なくとも 1 つのフィールドが含まれる必要があります。 シェープファイルまたは dBASE テーブルを作成するとき、デフォルトで整数の ID フィールドが含まれます。
- dBASE ファイルは、BLOB、GUID、GlobalID、ラスター フィールド タイプはサポートしていません。
- dBASE ファイルは WHERE 句の他に SQL サポートをほとんどサポートしていません。
- 属性インデックスは、編集の保存時に削除され、一から再作成する必要があります。
デフォルトで、ArcGIS Pro では、dBASE ファイルはフィールド名と値に ANSI 文字セットをサポートしています。 Esri は、Unicode のフィールド名と値をサポートする dBASE ファイルの Unicode サポートを追加しました。 ただし、この追加サポートは非 Esri アプリケーションでは利用できない場合があります。 その他の文字セットをサポートするには、dbfDefault レジストリ値の設定をサポート コード ページ識別子にします。
文字列フィールドの長さプロパティは、データ ソースによって異なります。 dBASE ファイルでは、フィールド長は、サポートしているバイトの数を表します。 一方、ファイル ジオデータベースでは、フィールド長は文字の数を表します。 つまり、フィールド長が 10 のシェープファイルが保持できるのは、3 バイトの漢字を 3 文字だけです。 マルチバイト文字のテーブルを dBASE テーブルのエクスポートすると値が想定どおりに転送されない場合があります。 マルチバイト文字の長さがフィールドの長さよりも長くなると、フィールド値には空または予期しない値が含まれます。
NULL 値の表現
シェープファイルでは、NULL 値はサポートされません。 NULL を持つフィーチャクラスがシェープファイルに変換される場合、あるいはデータベーステーブルが dBASE ファイルに変換される場合、NULL 値は次の表に示すように変更されます。
注意:
シェープファイルあるいは dBASE ファイル (.dbf) をツールの入力に用いた場合、ArcGIS はフィールド値が NULL 値なのか適切な値なのかを判定できません。
NULL 値を含むデータ タイプ | NULL 値の置換 |
---|---|
Number - ツールに NULL、無限、NaN (Not a Number) を出力する必要がある場合 | -1.7976931348623158e+308 (IEEE 標準における負の最大値) |
Number (その他すべてのジオプロセシング ツール) | 0 |
テキスト | " " (空白 - 単一スペース) |
日付 | ゼロとして格納されますが、「<null>」と表示されます。 |
サポートされていない機能
シェープファイルには、ワークスペースまたはフィーチャクラスのレベルで拡張されたデータ タイプがありません。 ジオデータベース フィーチャクラスまたはその他の形式からシェープファイルに変換すると、次の情報が失われます。
- サブタイプ
- 属性ドメイン
- ジオメトリック ネットワーク
- トポロジ
- アノテーション
シェープの長さおよび面積
ジオデータベースに格納されたラインまたはポリゴン フィーチャクラスでは、ArcGIS は shape_length と shape_area フィールドを計算し維持します。 ジオデータベース フィーチャクラスのラインまたはポリゴンのジオメトリを編集すると、shape_length および shape_area フィールドの値が自動的に更新されます。 これは、シェープファイルには当てはまりません。 シェープファイルに shape_area または shape_leng フィールドがあり、このシェープファイルが編集された場合でも、そのフィールドは更新されません。
シェープファイルとジオプロセシング
フィーチャクラスを出力するほとんどのジオプロセシング ツールは、出力形式としてシェープファイルとジオデータベース フィーチャクラスの両方をサポートします。 同様に、テーブルを出力するほとんどのツールは、出力として dBASE ファイル (.dbf) とジオデータベース テーブルの両方をサポートします。
[ジオプロセシング] ウィンドウのツールを使用すると、そのツールは出力フィーチャクラスまたはテーブル パスを自動的に生成します。 現在のワークスペース環境をジオデータベースではなくフォルダーに設定している場合、出力フィーチャクラス パスは、シェープファイルまたは dBASE ファイルになります。 デフォルトでは、現在のワークスペース環境はジオデータベースに設定されます。
シェープファイルは、書き込み処理が高速であるため、モデルの実行を高速化するためにモデルの中間データの書き込みに使用されることがあります。 しかし、ファイル ジオデータベースへの書き込みもシェープファイルへの書き込みと同じくらい高速であるため、実行速度が非常に重要である場合を除いて、中間および出力データにはファイル ジオデータベースを推奨します。 中間データにシェープファイルを使用する代わりに、フィーチャをメモリ ワークスペースに書き込む方法もあります。
空間参照とシェープファイル
「空間参照とジオプロセシング」では、ジオプロセシング ツールを使う際の空間参照プロパティの重要性について説明しています。 空間参照を制御する多くのジオプロセシング環境がツールで使用されています。 次の環境は、ツールの出力がシェープファイルの場合はサポートされていません。