2015-07-23

複数のデータファイルの一括読込

FMEによって複数のファイルで構成されるデータセットを一括して読み込む場合、リーダーの Dataset の設定において、同じフォルダ内の複数のファイルを指定するだけでなく、複数のフォルダを選択したりファイルパス文字列のパターンによってフィルタリングしたりするなどにより、ディスクシステムのフォルダ構造やファイルの配置を変更する手間をかけずに必要なファイルを選択することができます。

ここでは、最も単純なデータ統合のケースとして、複数のファイルに分割して格納されているデータセットについて、フォーマットやスキーマの変更をせずにひとつのデータファイルに統合することを例として、それらのファイルを一括して読み込むためのリーダー Dataset の設定方法を説明します。

FME 2015.1.1.0 build 15515

=====
国土数値情報「行政区域」(平成27年1月1日時点, Shape形式)47都道府県をひとつのShapeファイルに統合する。

ソースデータ:
国土数値情報ダウンロードサービスサイトからダウンロードした「行政区域」データ
平成27年1月1日時点, Shapefile 形式, 47都道府県(47ファイル)
ダウンロードファイル名: N03-15_xx_150101.shp (xxは都道府県コード: 01~47)

ディスクシステムにおけるファイルの配置
ケース1: ひとつのフォルダ内に全てのファイルが保存されている(サブフォルダなし)
ケース2: ひとつのフォルダ内の地方別のサブフォルダに分けて保存されている
ケース3: ひとつの zip ファイルに全てのファイルがアーカイブされている
ケース4: ひとつのフォルダ内に解凍前の都道府県別 zip ファイルが保存されている
=====

FMEワークスペース例











[SHAPE] リーダー: 全てのファイルから全てのフィーチャーを読み込む。
[SHAPE] ライター: 全てのフィーチャーをひとつのファイルに出力する。

ワークスペースの内容は、[SHAPE] リーダーの Dataset の設定を除いてどのケースでも同じです。

まず、Workbench メニュー: Readers > Add Reader で Add Reader 画面を開き、Format フィールドで Esri Shapeを選択するとともに、Workflow Options で Single Merged Feature Type を選択します。

Add Reader 画面














Shapefile 形式の場合はファイルがフィーチャータイプに対応するので、Workflow Options を Individual Feature Type (デフォルト) のままにした場合、キャンバスにはファイル数分のフィーチャータイプが現れます。

これを Single Merged Feature Type に変更すると、キャンバスには <All> リーダーフィーチャータイプがひとつだけ現れ、全てのファイルから読み込まれたフィーチャーがそこから出力されるようになります。


ケース1: ひとつのフォルダ内に全てのファイルが保存されている(サブフォルダなし)


















このケースでの Dataset フィールドの設定方法は次の2通りが考えられます。

(a) Dataset フィールド横の[...]ボタンでファイル選択画面を開き、全ての Shapefile ファイルを選択する。

Shift キーを押しながら最初と最後のファイルをクリックすると、全てのファイルが選択できます。
















(b) Advanced Browser によって Shape ファイルを格納しているフォルダを選択する。

[2017-04-11 追記] FME 2017 では、Dataset フィールドの右端はメニューボタンとなり、それをクリックして開くメニューから "Select Multiple Folders/Files" (複数のファイル/フォルダーを選択) を選択することによって、複数のファイル/フォルダー選択用のダイアログボックス (下図右) が開きます。Workbench のユーザーインターフェースで Advanced Browser という名称は使われなくなりましたが、操作方法は従来と同じです。










Advanced Browser (右図) をOKで閉じると、Add Reader の Dataset フィールドは次のように設定されます。ここで、* (アスタリスク1個) は任意の文字列を意味し、選択したフォルダ内の全ての *.shp ファイルが読み込まれることになります。日本語版Windowsでは、バックスラッシュ \ を半角 ¥ に読み替えてください(以下同じ)。
-----
C:\Data\KSJ-N03-15\Case1\*.shp
-----

なお、デフォルトでは、リーダーをワークスペースに追加するときにワークベンチは全てのファイルのスキーマ定義を参照してリーダーフィーチャータイプを構成しますが、Advanced Browser 画面左下の Identical Schema チェックボックスをチェックすると、最初のファイルのスキーマ定義のみに基づいてリーダーフィーチャータイプを構成するようになります。読み込もうとする全てのファイルの属性定義が同一である場合は、これをチェックすることによってリーダーフィーチャータイプを構成する時間を短縮することができます。ただし、ワークスペースの実行時にフィーチャーを読み込む時間は変わりません。


ケース2: ひとつのフォルダ内の地方別のサブフォルダに分けて保存されている


















Advanced Browser では検索の対象とするフォルダをいくつでも追加することができるので、全ての地方別サブフォルダを選択することもできます。

しかし、さらに簡易な方法として、上位フォルダのみを選択して Subfolders チェックボックスをチェックすると、選択したフォルダ及びそれ以下の全てのサブフォルダ内の *.shp ファイルを検索することができます。
















この設定で Advanced Browser をOKで閉じると、Add Reader の Dataset フィールドは次のように設定されます。ここで、** (アスタリスク2個) は、その直上位のフォルダおよびそれ以下にある全てのサブフォルダを意味します。
-----
C:\Data\KSJ-N03-15\Case2\**\*.shp
-----


ケース3: ひとつの zip ファイルに全てのファイルがアーカイブされている


FMEは、ファイルベースのフォーマット用のリーダーの Dataset に zip 形式の圧縮ファイル (拡張子 .zip) が指定されたときに、それを自動的に解凍してから読み込みます。その場合、zip ファイルはフォルダと同じように扱われます。ただし、圧縮は1段階である場合のみをサポートします(アーカイブ内にある zip ファイルは解凍されません)。

Dataset フィールド横の[...]ボタンでファイル選択画面を開き、ファイルの種類ドロップダウンリストの選択を "Zip Files (*.zip)" に変更すると *.zip ファイルが選択できるようになります。
















ファイル選択画面を [開く] で閉じると、Add Reader の Dataset フィールドは次のように設定されます。
-----
C:\Data\KSJ-N03-15\Case3\N03-15.zip
-----
zip アーカイブ内にフォルダ階層がある場合には、それらをサブフォルダとみなしてファイルを検索することができます。その場合は、Dataset フィールドを次のように編集してください。
-----
C:\Data\KSJ-N03-15\Case3\N03-15.zip\**\*.shp
-----

zip ファイルの解凍は、ワークスペースの実行時にデータの読込が始まる前に行われます。解凍されたファイルはFMEの作業用フォルダに格納され、そのワークスペースによる変換が全て終了したときに自動的に削除されます。


ケース4: ひとつのフォルダ内に解凍前の都道県別 zip ファイルが保存されている





















Dataset の設定は次の手順で行うのが簡単です。

(1) Advanced Browser で上位フォルダを選択する。
















(2) File/Filter を *.zip\**\*.shp に修正する(ダブルクリックすると編集できます)。
















Advanced Browser をOKで閉じると、Add Reader の Dataset フィールドは次のように設定されます。
-----
C:\Data\KSJ-N03-15\Case4\*.zip\**\*.shp
-----

この設定により、Case4 フォルダ内の全ての *.zip アーカイブに格納されている全ての *.shp ファイル(アーカイブ内のサブフォルダ内を含む)を読み込むことになります。アーカイブ内にフォルダ階層がないことが明らかな場合は、中間の \** を省くことができます。


全ての場合において、Dataset フィールドで直接編集しても構いません。また、リーダーをワークスペースに追加した後、Navigator ウィンドウで変更することもできます。上記のケースを応用すれば、どんなディレクトリ構造でソースデータセットが格納されていても、ファイルを検索すべきフォルダを選択することができます。

0 件のコメント:

コメントを投稿