マチルダのレイヤーエクスポート(シェープファイル)


はじめに

シェープファイルはESRIが1998年7月にフォーマットを公開して依頼現在では様々なGISに利用されている汎用フォーマットとなっています。シェープファイルは属性情報の格納としてはdbf(dBase)を採用しております。dBaseは1960年に原型が作られ1981年に"dBaseII"となって発売されたのが始まりです。当然この時代にはUTF-8などの認識はなく、現代の国際言語多様化には難しい状況が続いています。そこでオプションでファイルを追加することで次のような役割で対応しています。

シェープファイルの拡張子と役割

拡張子 説明 備考
.shp シェープ規格:地形情報の本体。 必須
.shx シェープインデックス規格:地形データの前方検索、後方検索を高速にするための位置インデックス。 必須
.dbf 属性規格:各シェープに対する縦表形式の属性情報。dBASE IV形式準拠。 必須
.prj 投影規格:座標系および投影情報。投影法をWell-known text形式で記述したプレーンテキストファイル。 オプション
.sbnおよび.sbx 空間インデックス。 オプション
.fbnおよび.fbx 読み取り専用空間インデックス。 オプション
.ainおよび.aih テーブル内アクティブフィールドの属性インデックス。 オプション
.ixs 読み書き用ファイルのジオコーディングインデックス。 オプション
.mxs 読み書き用ファイルのジオコーディングインデックス(ODB規格)。 オプション
.atx DBFファイルの属性インデックス(ArcGIS Ver8以降)。 オプション
.shp.xml ISO 19115や他のXMLスキーマ言語などのXML形式地理空間メタデータ。 オプション
.cpg 使用した文字コードの識別コードページ(DBF専用)指定。 オプション
.shp.fld フィールド名を別名化指定。 マチルダ専用オプション
.rtree 読み書き専用空間高速化インデックスファイル。 マチルダ専用オプション
初めて読込みした時に自動作成されます。

シェープファイルと日本語(マルチバイト文字)

シェープファイルに情報として日本語を持たせる事は可能ですが、いくつか制限があります。

ファイル名


ファイル名は半角英数時である必要があります。マチルダでは日本語でも一応大丈夫なのですが、原則としてMS-DOS時代の8.3形式の文字数である必要があります。
(例)
test1.dbf → OK
test12345678.dbf → NG
test12~1.dbf → OK

フィールド名


フィールド名も本来は半角英数字である必要があります。マチルダの場合は日本語でも一応は大丈夫なのですが、DBase(dbf)の制限上、10バイト以内とされています。
UTF-8を採用する場合は、さらに注意が必要です。SHIFT-JISの場合は2バイトで1文字を表現しますが、UTF-8は3バイトで1文字を表現します。従って10バイトは日本語でSHIFT-JISを採用すると5文字、UTF-8を採用すると3文字に制限されることになります。
ただ原則としては、シェープファイルの仕様上、フィールド名には国際文字を使うことができないようになっています(いわゆる半角英数字のみが許可されている)

レコード情報


レコード名も日本語でも大丈夫なのですが、DBase(dbf)の制限上、文字列は254バイト以内で収める必要があります。
これは、SHIFT-JISの文字列を格納する場合は127文字以内に制限され、UTF-8の文字列を格納する場合は、84文字に制限されることになります。

UTF-8である事を表現する.cpgファイル


シェープファイル(.shp, .dbf, shx)と同じフォルダに 「.cpg」という拡張子が付いた同名のファイルがあるとUTF-8として認識されます。ファイルの中身はテキスト形式で1行だけ「UTF-8」という文字列が記載されます。

フィールド名をエイリアス化できるマチルダの.fldファイル


シェープファイル(.shp, .dbf, shx)と同じフォルダに 「.shp.fld」という拡張子が付いた同名のファイルがあるとフィールド名を別名化表現して利用することができます。日本語などこの方法を使っているとUTF-8+iPadなどのデバイス環境でも正常に日本語表示されます。
(例)
[TatukGIS Fields]
douro1=大阪国道の道路1
douro2=県道
tatemono1=管理マンション1
tatemono2=修繕マンション2