ライターフィーチャータイプの編集 (Dynamic Schema)

FMEリファレンス > ライターフィーチャータイプの編集 (Dynamic Schema)
最終更新: 2022-7-1 | FME 2022.0.1.0

Add Writer 画面の Add Feature Type(s) オプションで Dynamic (Advanced) を選択してライターを追加した場合、出力先データセットのスキーマの構成方法には Dynamic Schema (動的スキーマ) が適用され、キャンバスには <Dynamic> ライターフィーチャータイプが表示されます。

Dynamic (Advanced) 以外を選択して追加したライターに Dynamic Schema を適用するには、そのライターに属するフィーチャータイププロパティ画面 General タブで Dynamic Properties チェックボックスをチェックするか、または、User Attributes タブの Attribute Definition セクションで Dynamic を選択します。

Dynamic Schema (動的スキーマ) は、出力先データセットのスキーマをワークスペースの作成時に決定するのではなく、ワークスペースの実行時にFMEに決定させる仕組みです。

データセットのスキーマはひとつ以上のフィーチャータイプのスキーマの集合であり、フィーチャータイプのスキーマは、主にユーザー属性の定義 (属性名とデータ型のペアの集合) とジオメトリタイプで構成されます。

Dynamic Schema を適用した場合、出力先データセットのフィーチャータイプのスキーマは、ワークスペースの実行時に、その時点のソースデータセットや外部のデータセット等 (Schema Sources: スキーマソース) のフィーチャータイプのスキーマに基づいて決定されます。

スキーマソースによって提供されるフィーチャータイプのスキーマは、ワークスペース内でユニークな名前 (Schema Definition Name: スキーマ定義名) によって参照されます。スキーマ定義名は、通常はそのスキーマを提供するスキーマソースにおけるフィーチャータイプ名です。

ワークスペースの作成時に主に行うべきことは、スキーマソースの指定、及び、出力先のフィーチャータイプに適用すべきスキーマを参照するためのスキーマ定義名の設定です。

出力先データセットを複数のフィーチャータイプで構成したい場合でもライターフィーチャータイプは <Dynamic> ひとつだけでよく、また、ワークスペース作成時にユーザー属性を手動で定義することは必須ではありません。

フィーチャータイププロパティ画面での編集方法は以下のとおりです。


Parameters(一般) タブ

Parameters セクションの各パラメーターの意味と設定方法は Static Schema (静的スキーマ) の場合と同じです。
参照: ライターフィーチャータイプの編集 (Static Schema)

ただし、Dynamic Schema の場合には、フィーチャータイプ名と Geometry (ジオメトリタイプ) について以下の点に留意する必要があります。

フィーチャータイプ名

後述の Schema Definition Name (スキーマ定義名) パラメーターが “Default from **** above” (デフォルト) である場合には、ここで指定した名前は、出力先の「フィーチャータイプ名」、及び、そのフィーチャータイプに適用すべきスキーマの「スキーマ定義名」(通常はそのスキーマを提供するスキーマソースにおけるフィーチャータイプ名) の二つの意味を併せ持つことになります。

Geometry (ジオメトリタイプ)

出力先データセットのフォーマットがフィーチャータイプごとに特定のジオメトリタイプを定義しなければならないものである場合 (例: Esri Shape)、Geometry ドロップダウンリストには Static Schema の場合と同様に選択可能なジオメトリタイプが含まれるほか、Dynamic Schema の場合は次の2つの選択肢が追加されます。

  • From Schema Definition (デフォルト): 出力先のフィーチャータイプに適用されるスキーマで定義されているジオメトリタイプを採用する。
  • First feature defines geometry type: 出力先のフィーチャータイプごとに最初のフィーチャーのジオメトリタイプを採用する。

出力先データセットのフォーマットがフィーチャータイプごとにジオメトリタイプを定義する必要がないものである場合は、Geometry ドロップダウンリストは無効になります。

Schema Definition (スキーマ定義) セクションでは以下の事項を設定します。

Schema Sources (スキーマソース)

フィールド右側の ボタンで Select Schema Sources Items 画面を開き、スキーマソースを選択します。

スキーマソースには次に掲げるものが利用できます (複数可)。

  • リーダー (ソースデータセットに属するフィーチャータイプのスキーマ)
  • ワークスペースリソースとして追加したリーダー (外部データセットに属するフィーチャータイプのスキーマ)
  • ワークスペースリソースとして追加した Schema (From Table) リーダー (外部テーブルで定義したスキーマ)
  • “Schema from first feature” (出力先のフィーチャータイプごとに最初のフィーチャーがリスト属性として持つスキーマ定義)

Schema Definition Name (スキーマ定義名)

スキーマソースによって提供されるフィーチャータイプのスキーマのうち、出力先フィーチャータイプに適用するもののスキーマ定義名を指定します。
スキーマ定義名は、通常は参照先のフィーチャータイプの名前です。

“Default from **** above” (デフォルト) とした場合は、前述のように、General Parameters セクションで指定した出力先フィーチャータイプ名がスキーマ定義名を兼ねます。
出力先フィーチャータイプ名の他に、フィールド右側の ボタンで開くメニューの選択によって、フィーチャー属性、テキストエディタで入力した文字列 (式)、ユーザーパラメーターをスキーマ定義名として設定することができます。

スキーマソースによって提供されるフィーチャータイプのスキーマの中に、スキーマ定義名によって参照されるべきスキーマがなかった場合、そのフィーチャーは出力先データセットに書き出されません。

前出の Parameters タブの設定例では 、Schema Definition Name (スキーマ定義名) パラメーターの設定はデフォルト、General Parameters セクションで出力先フィーチャータイプ名 (Shape File Name) として fme_feature_type 属性が指定されています。
fme_feature_type はフォーマット属性のひとつで、各フィーチャーの fme_feature_type 属性には、通常はソースデータセットにおいてそのフィーチャーが属していたフィーチャータイプ名が格納されます。
参照: フィーチャーと属性

ここで、Schema Sources (スキーマソース) パラメーターでそのソースデータセット (リーダー) を指定すると、ワークスペースの実行時にこのライターフィーチャータイプがフィーチャーを受け取ったときに、スキーマ定義名としての fme_feature_type が参照するスキーマ、すなわち、ソースデータセットにおいてそのフィーチャーが属していたフィーチャータイプのスキーマに基づいて、そのフィーチャーの出力先フィーチャータイプのスキーマが決定されることになり、結果として、出力先データセットのスキーマはソースデータセットのスキーマと同じになります。

これは、フォーマット変換やそれに近い比較的シンプルなワークスペースで、ソースデータセットと同じスキーマの出力先データセットを作成したい場合に効果的な手法で、Generate Workspace 画面の Workflow Options で Dynamic Schema を選択して新規ワークスペースを作成したときのライターフィーチャータイプの初期設定でも使われています。

Attributes to Remove (スキーマから除外する属性)

参照先のスキーマで定義されている属性のうち、出力先フィーチャータイプの属性には含めたくないものがある場合は、フィールド右側の  ボタンで Attributes to Remove 画面を開いてそれらの名前を指定することによって、出力先フィーチャータイプのスキーマから除外できます。


User Attributes (ユーザー属性) タブ

Dynamic Schema の場合、ユーザー属性を定義することは必須ではありませんが、出力先データセットの全てのフィーチャータイプのスキーマに同じユーザー属性を追加したいときには、User Attributes タブでその属性を定義することができます。

User Attributes タブでユーザー属性を追加・編集する方法は、Static Schema の場合の Manual モードでの編集方法と同じです。
参照: ライターフィーチャータイプの編集 (Static Schema)