FME Desktop クィックスタートガイド ( 作成時バージョン : FME 2018.1) Takashi Iijima, FME Certified Professional, pragmatica inc. 実習 2 データフォーマットの変換 実習 1 と同じソースデータ "mmm20151001.shp"(esri Shapefile 形式の市区町村区域ポリゴンデータ ) を読み込み 他の GIS フォーマットに変換してファイルに出力するためのワークスペースを作成します 変換先のフォーマットは MapInfo TAB (MITAB) 形式とします また フォーマットの変換とあわせて フィーチャータイプ名 属性名なども変更します 2-1. リーダーの追加と属性の確認 FME Workbench を起動し 実習 1 と同じ方法でソースデータを読み込むためのリーダーをワークスペースに追加してください 実習 1 で作成したワークスペースを開き Inspector を削除した状態からスタートしても構いません プロパティボタン ( リーダーフィーチャータイプ右側の歯車アイコン ) をクリックして Feature Type 画面を開き User Attributes タブを表示させてください 実習 1 では属性の名前と意味のみ確認しましたが ここではデータ型も確認します 2-1
ソースデータの属性 属性名 Type Width Precision 意味 NO number 11 0 データの番号 DATE char 8 指定した時点 JISCODE number 11 0 市区町村コード PNAME char 12 都道府県名 GNAME char 30 政令市 郡 支庁 振興局名 CNAME char 21 市区町村名 NAME char 42 GNAME と CNAME を連結したもの データ型の名前や意味はフォーマットによって異なります ここで表示されているデータ型は Esri Shapefile の仕様に準じたものであり number は数値 (Width は桁数 Precision は小数部の桁数 ) char は文字列 (Width はバイト数 ) を表します Annotation ( 注釈 ) と Summary Annotation ( サマリー注釈 ) キャンバス上のオブジェクトを右クリックして表示されるメニューで Attach Annotation コマンドを選択すると 下図 ( 左 ) のように Annotation( 注釈 ) が表示されます 注釈表示部分をダブルクリックするとテキスト編集モードになり 注釈の内容を編集できます また Show Summary Annotation コマンドを選択すると 下図 ( 右 ) のように 主要なパラメーター等が Summary Annotation( サマリー注釈 ) として表示されます サマリー注釈は編集できませんが 右クリック > Convert to Attached Annotation( 一般の注釈に変換 ) によって 編集可能な一般の注釈に変換できます ( 一般の注釈からサマリー注釈への変換はできません ) Annotation を削除するには右クリック > Delete Summary Annotation を非表示にするには右クリック > Hide を選択します これらの注釈表示機能は 後述するライターフィーチャータイプやトランスフォーマーでも同様です また キャンバス上の任意の場所で右クリックして表示されるメニューで Insert Annotation を選択すると オブジェクトから独立した Annotation( 注釈 ) を作成 編集できます これらを適宜使用してワークスペース作成者の意図やデータフローの意味などのコメントを付け加えることにより 保守がし易くなります 以後 このガイドでは注釈を表示した状態の図を掲載することがあります 2-2
2-2. ライターの追加 (Manual モード ) と出力先スキーマの編集 次の手順で変換先のフォーマットに対応するライターとライターフィーチャータイプをワークスペースに追加します (1) Add Writer Workbench メニュー Writers > Add Writer を選択し Add Writer 画面を開いてください (2) フォーマットの選択 Format 入力フィールド右端の ボタンをクリックすると 次の図ようにドロップダウンリストが表示され 最近使ったフォーマット名が表示されます リスト内に出力先のフォーマット名 ( この実習では MapInfo TAB (MITAB)) があればそれを選択してください なければリスト最後の More Formats を選択してください 次の図のような Writer Gallery が表示されるので その中からフォーマットを選択することができます 実習 1 で行った Add Reader 画面でのフォーマット選択の要領と同じです 2-3
Writer Gallery 画面 Search フィールドに "mitab" と入力し "MapInfo TAB (MITAB)" に絞り込んだ状態 Add Writer 画面 : Format フィールドを設定した状態 2-4
(3) データセットの設定 変換後の MapInfo TAB 形式ファイル出力先のフォルダを設定します Dataset 入力フィールド右側の [ ] ボタンをクリックして既存のフォルダを選択するか または 入力フィールドを直接編集してフォルダを指定してください 存在しないフォルダを指定しても構いません その場合は ワークスペースを実行した時にそのフォルダが自動的に作成されます データセットとフィーチャータイプ データセット フィーチャータイプ ( レイヤ ) と物理的なデータの保存形態の関係はフォーマットによって異なります Esri Shapefile 形式や MapInfo TAB 形式の場合はフォルダがデータセット そのフォルダに保存されるファイルがフィーチャータイプに対応しますが ファイルがデータセット そのファイルに格納されるレイヤがフィーチャータイプに対応するフォーマットもあります 詳しくは次のドキュメントを参照してください データセットとフィーチャータイプ http://www.pragmatica.jp/fme/references/basicdatasetandfeaturetype.html (4) 出力先スキーマの編集 Add Writer 画面下部の Add Feature Type(s) / Table Definition フィールド右端の をクリックして ドロップダウンリストを開いてください 2-5
いくつかの選択肢がありますが ここでは Manual( フィーチャータイプを作成し そのスキーマを手動で定義する ) を使用することにします 次の図のように Add Feature Types(s) で Manual を選択してください この設定で Add Writer 画面を OK で閉じると 次のような Feature Type 画面が開きます 引き続き この画面で出力先のフィーチャータイプ ( ライターフィーチャータイプ とも呼ばれます ) のスキーマ ( フィーチャータイプ名や属性など ) を編集します 一旦 OK で閉じてライターを追加した後 この Feature Type 画面を再度開いて編集することもできます 2-6
1) フィーチャータイプ名 (MapInfo TAB 形式の場合はファイル名と同じ ) の設定 Parameters タブ General グループの Table Name フィールドに 出力先のフィーチャータイプ名を入力します 20151001 全国市区町村 としましょう なお フィーチャータイプ名を設定するフィールド名 (MapInfo TAB では "Table Name") は フォーマットによって異なります また MapInfo TAB の場合は不要ですが フォーマットによっては Geometry パラメーターで出力するジオメトリのタイプの指定が必要なものもあります 2) 属性の定義 次に User Attributes タブで 出力先に書き出すべき属性の属性名とデータ型を設定します 2-7
Name( 属性名 ) Width( 桁数 ) Precision( 十進数型の場合の小数部桁数 ) はリスト内で直接編集することができ Type( データ型 ) はドロップダウンリストで選択できます また 左下の各ボタンによって このリストへの行の追加 削除 順序の変更ができます これらのボタンはライターフィーチャータイプだけでなく ワークスペース作成のさまざまな場面で出てきますので ここで記号と意味を覚えてください 左から : 追加, 削除, 上に移動, 下に移動, 先頭に移動, 末尾に移動 Type( データ型 ) の選択肢は フォーマットによって異なります 属性の意味と記述形式に適合していれば ソースデータの対応する属性のデータ型と一致している必要はありません 属性の構成 属性名 データ型は 実務では出力先データセットの用途やデータの内容に応じて慎重に検討する必要がありますが ここではあまり深く考えず 次のように設定することにします ソース属性名 出力先属性名 Type Width Precision NO 番号 integer DATE 年月日 date JISCODE 市区町村コード char 5 PNAME 都道府県名 char 12 GNAME 政令市 郡 支庁 振興局名 char 30 CNAME 市区町村名 char 30 NAME ( 不使用 ) これらを User Attributes タブで設定した結果は 次の図のとおりです (5) ライターの追加 Feature Type 画面を OK ボタンで閉じると ワークスペースに MITAB 形式のライター 及びライターフィーチャータイプが追加されます 2-8
Navigator ウィンドウでライター "output [MITAB]" が追加されたことを確認してください Navigator ウィンドウのツリーでは 上からリーダー ライターの順に表示されます また キャンバス上に次のようなオブジェクトがひとつ現れたことも確認してください これが先ほどスキーマを定義した出力先のライターフィーチャータイプを表しています キャンバス上のオブジェクトは ドラッグ アンド ドロップによって任意の位置に移動することができます リーダーフィーチャータイプとライターフィーチャータイプを並べてみましょう 2-9
2-3. フィーチャータイプのマッピング データフォーマットの変換は リーダーフィーチャータイプとライターフィーチャータイプの間 及び それらの個々の属性の間の対応づけを定義することで実現できます フィーチャータイプや属性同士の対応づけをすることを マッピング と言います すでにリーダーフィーチャータイプとライターフィーチャータイプがひとつずつあるので これらの間のマッピングをすれば データフォーマット変換のためのワークスペースは完成します キャンバスに表示されているオブジェクトの右端または左端に 右向きの小さな三角形のアイコンが表示されているのを確認してください この三角形のアイコンがオブジェクトへの出入り口を表しており オブジェクトから右に出て行く方向のものを 出力ポート 左から入ってくる方向のものを 入力ポート と呼んでいます リーダーフィーチャータイプには出力ポートがひとつ ライターフィーチャータイプには入力ポートがひとつあります マッピングは 入出力ポート間を接続することによって行います まず リーダーフィーチャータイプの出力ポート ( 黄色 ) とライターフィーチャータイプの入力ポート ( 赤色 ) の間をドラッグ アンド ドロップして接続してください 接続した間を結ぶ黒いラインが表示されました オブジェクト間を接続するラインを リンク と呼ぶこともあります また 接続済みの入出力ポートが緑色に変わるとともに 属性リストの各項目にも入出力ポートが現れました ポートの色は 次のようにそのポートの接続の状態を表します 黄 : 未接続の出力ポート赤 : 未接続の入力ポート緑 : 接続済みの入出力ポート 次に 属性のマッピングをします 対応づけをする属性間を接続してください 方法はフィーチャータイプ間の接続と同じです 2-10
これでマッピングは完了しました すなわち データフォーマット変換のためのワークスペースは完成です 名前をつけてファイルに保存しておきましょう Workbench メニュー File > Save As なお リンクを削除するには リンクを右クリックして表示されるメニューで Delete を選択するか または リンクの一端をキャンバス上の何もないところにドラッグ アンド ドロップします 属性のマッピング方法 本文では リーダーフィーチャータイプとライターフィーチャータイプの間で属性をマッピングするのに それらの入出力ポートをひとつひとつ接続しましたが 次のような方法もあります 1. AttributeManager を挿入する ライターフィーチャータイプの入力ポートに接続しているライン ( リンク ) の右クリックメニューで Replace Link with AttributeManager (AttributeManager を挿入 ) を選択すると そのリンクに AttributeManager トランスフォーマーが挿入されるので そのパラメーター設定画面を開き 属性名を出力側の属性名に変更します ( 入力側の属性名が出力側の属性名と同じにすれば 自動的にマッピングされます ) 2. ライターフィーチャータイプのユーザー属性に値を直接設定する ライターフィーチャータイプの Feature Type 画面 User Attributes タブで 各属性の Value( 値 ) 列で入力側の属性を選択することにより 対応づけることもできます Value 列には属性だけでなく 式や定数を設定することもできます 2-11
2-4. ワークスペースの実行 ワークスペースを実行してください キャンバス上では リーダーフィーチャータイプからライターフィーチャータイプに送られたフィーチャーの数がリンク上に表示されました ログでは 書き込まれたフィーチャー数 読み込んだフィーチャー数などが確認できます Feature output statistics for `MITAB' writer using keyword `MITAB_1': Features Written 20151001 全国市区町村 (20151001 全国市区町村 ) 1899 ============================================================================== Total Features Written 1899 Features Read Summary =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=mmm20151001 1899 ============================================================================== Total Features Read 1899 Features Written Summary 20151001 全国市区町村 1899 ============================================================================== Total Features Written 1899 Translation was SUCCESSFUL with 1 warning(s) (1899 feature(s) output) FME Session Duration: 2.6 seconds. (CPU: 2.3s user, 0.3s system) END - ProcessID: 10048, peak process memory usage: 87044 kb, current process memory usage: 87044 kb Translation was SUCCESSFUL ログの最後の行に "Translation was SUCCESSFUL" と表示されていれば 変換は成功です Windows エクスプローラーでも 出力先ファイルが作成されたことを確認しましょう 2-12
Workbench でワークスペースを実行した後 キャンバス上のライターフィーチャータイプを選択し その上に表示されるツールボタン "Inspect"( 検査 ) を選択すると FME Data Inspector が起動して出力したデータが表示されます 2-13
また Workbench ツールバーのボタンのクリックによって FME Data Inspector を起動することもできます もちろん Windows すべてのプログラム メニューから起動しても構いません それらによって FME Data Inspector を起動した場合は メニュー File > Open Dataset を選択して Select Dataset To View 画面を表示し リーダーの追加と同じ要領で Format に MapInfo TAB を設定 Dataset に MapInfo データファイル (*.tab) を選択してから OK で閉じてください MapInfo TAB 形式のデータを閲覧できる他のソフトウェアがある場合は それでも変換結果を確認してください 実習 2 はここまでです 主に次の事項を学びました ライターの追加 (Manual モード ) 出力先スキーマ ( フィーチャータイプ名 属性 ) の編集 リーダーフィーチャータイプとライターフィーチャータイプのマッピング 2-14