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