2014年11月21日金曜日

固定長フォーマットのテキストデータの変換

2014-11-03発信

ごくまれなことですが、固定長フォーマットのテキストデータを読まなくてはならないことがあります。
固定長フォーマットとは、1レコードの長さ(バイト数)が固定されており、1レコードに含まれる各データ項目の幅もバイト数で指定されているようなフォーマットです。

レコード間の区切りが改行であれば、FME の Column Aligned Text (CAT) Reader が使えますが、データに日本語文字が含まれている場合には、各列の幅をうまく設定できないケースがあります。
CAT Reader が適用できない場合には、Text File Reader で1行ずつ読み込み、各行をファイル仕様で指定されたバイト数に基づいて各データ項目に分割するというアプローチが必要になります。
しかし、FME は原則として文字列の長さを文字数でカウントするため、バイト数に基づいて文字列を分割するのにはやや複雑なワークスペースを作らなくてはなりません。

最近、固定長フォーマットのデータを扱う機会があったので、バイト数による文字列分割処理を一般化したカスタムトランスフォーマー"MbStringByteSplitter"を作成し、FME Store で公開しました。
FME Workbench: Transformer Gallery / FME Store / Pragmatica フォルダ内に格納されており、標準のトランスフォーマーと同じ操作で利用することができます。
固定長フォーマットのテキストデータを扱う必要があるときは、お試しください。

あわせて当社サポートサイトには、これを利用した簡単なワークスペース例(テンプレート)をアップロードしました。
国土数値情報(統一形式)「河川区域台帳」(固定長フォーマット)を読み込み、CSV形式に変換するものです。
KsjKasenKuikiDaicho.fmwt
http://www.pragmatica.jp/fme/example.html

データダウンロードURLや使用方法についてはワークスペース内にコメントしていますので、上記テンプレートをダウンロード後、FME Workbench で開いてご確認ください。
なお、国土数値情報ダウンロードサイトではXML形式の「河川区域台帳」も公開されており、FME でそれを読むためのワークスペースも作成できます。
フォーマットの違いを取り払い、利用し易い形態に変換するのは FME の基本的な使用法であると言えます。

-----

私の個人ブログにも関連記事を掲載しましたので、ご興味がありましたらご覧ください。
http://fme-memorandum-takashi.blogspot.jp/

0 件のコメント:

コメントを投稿