この春から初めて GIS ソフトを触る機会がある方もいらっしゃると思います。GIS ソフトを使うには必ず「シェープファイル」という言葉を耳にします。ここで簡単にシェープファイルとはどういったものかを紹介します。
目次
シェープファイルは図形情報と属性情報を持つ
シェープファイル (Shapefile) とは、Esri 社の提唱したベクター形式の業界標準フォーマットです。図形情報 (点、線、面) で駅や道路、建物といった地物を表現します。同時に属性情報 (建物名称や面積、人口など) も格納することができます。加えて位置情報を持つ場合、それに基づいた場所に表示されるので他の地図と重ねて利用することができます。
多くの GIS ソフトで使える
シェープファイルは ArcGIS 製品やその他多くの GIS ソフトウェアの間で幅広く利用されています。また、さまざまな機関からシェープファイル形式のデータが提供、販売されていますので、そこから入手し、ArcGIS 上で表示・解析することが可能です。ほかのソフトとの互換性があることから成果物としてシェープファイル形式で出力することも可能です。
ここに注意!
ファイルの拡張子に注意
シェープファイルは拡張子に注意が必要です。必須ファイルは 3 つあり、そのうち 1 つでも欠けるとアプリケーション上で表示することができません。拡張子 (.shp) だけがシェープファイルでないことを覚えておいてください。
主な構成ファイル(ファイルの拡張子とその概要)
.shp: 図形の情報を格納する主なファイル (必須)
.shx: 図形のインデックス情報※を格納するファイル (必須)
.dbf: 図形の属性情報を格納するテーブル、dBaseIV を使用 (必須)
.prj: 図形の持つ座標系の定義情報を格納するファイル、ArcGIS で使用される (推奨)
.sbn および .sbx: 空間インデックスを格納するファイルで、ArcGIS で空間検索のパフォーマンスを向上させることができる (推奨)
.<フィールド名>.atx: 属性インデックスを格納するファイルで、ArcGIS で属性検索のパフォーマンスを向上させることができる (オプション)
.cpg: 文字コードに関する情報を格納するファイル (オプション)
※.shx のインデックス情報とは、いわゆるデータベースのインデックスとは異なるもので、shpファイルに格納されているバイナリを何バイト目で区切るかが定義されている。
文字コードに注意
ほかの GIS ソフトウェアや機関から提供されたシェープファイルを ArcGIS で開くと、まれに属性情報が文字化けして見える場合があります。この文字コードに関する問題の改善方法や、原因の詳細は以下のリンクをご参考ください。
ArcGIS では文字コードを設定するユーティリティが提供されており、シェープファイルの読み込み・作成時に Shift_JIS もしくは UTF-8 が指定できます。特に ArcGIS でシェープファイルを作成し、他の GIS ソフトウェアで使用する場合や、その逆を行う場合は文字コードに注意してください。
データ容量に制限がある
シェープファイルを構成するファイルのサイズはそれぞれ 2GB の制限があります。日本全国に点をプロットするなどした場合、容量が足りなくなる場合があります。 容量の大きなデータを扱ったり、文字化けを気にせずにデータを扱いたい、属性情報のフィールド名に長い文字列や記号を使いたいなどの要望がありましたら、ArcGIS の機能を最大限に発揮できるファイル ジオデータベースの利用をおすすめします。解析や分析・データの編集など高精度なデータを必要とされている方はぜひご検討ください。ファイル ジオデータベースの概要はこちらをご参照ください。 簡単ですが、シェープファイルの概要をご説明しました。もっと知りたい、利活用法を学びたいという方はぜひトレーニングを受講されることをおすすめします。 用語などはこちらにまとめられていますので、ご参考にしてください。 GIS 基礎解説
ほか GIS ソフトウェアでの使用
シェープファイルは開発者向けの仕様書が公開されているため、ほかの多くの GIS ソフトウェアでも対応しており、読み込み・作成・編集することができます。しかし、仕様として公開されているのは必須の 3 つのファイル構造のみです。そのほかのファイルは ArcGIS だけで利用するために拡張された専用ファイルとなっています。ArcGIS と、ほかの GIS ソフトウェアの両方でシェープファイルを扱う際は注意してください。
FID はユニークであるが再利用される可能性がある
一般的に、データベースのテーブルにはユニークなレコードを特定するための ID (主キー) が定義されます。ジオデータベースのフィーチャクラスは、既定値として「OBJECTID」という名称が設定されます。また、一度そのレコードに与えられた ID は永久のもので、レコードを削除するとその ID は欠番となり、再利用されません。
シェープファイルでは、「FID」という名前のフィールドが設定されますが、シェープファイルの ID は、属性テーブル内の途中のレコードを削除して保存すると ID が繰り上がり、必ず連番となります。これは、属性情報を保存する .dbf ファイルに ID の概念がないためです。FID フィールドでテーブル結合する際は注意してください。