FMEフィーチャー関数 (FME Feature Functions)

次の表に掲げる関数はトランスフォーマーのパラメーターとして設定する式の中で使用することができ、ワークスペースの実行時、そのトランスフォーマーにフィーチャーが入力される度に実行されます。

これらの関数は、テキストエディタ (Text Editor)、数式エディタ (Arithmetic Editor) の編集画面でのキー入力の他、画面左側のFMEフィーチャー関数 (FME Feature Functions) セクションに表示されている関数名のダブルクリック、または、ドラッグ&ドロップによって編集中の式に挿入することができます。 テキストエディタ、数式エディタのどちらか一方にしか表示されない関数もあります。 これらの関数の使用にあたっては表の下の説明をよくお読みください。

なお、一部の関数は、下表で説明している機能のほかにフィーチャーに変更を加える機能を持つものもあり、そのような機能は FMEFunctionCaller トランスフォーマーなどで使うことができますが、ここでは、トランスフォーマー等のパラメーターに設定する式の中で使う場合の値を返す機能に限定して説明しています。

関数名構文, 機能概要, 引数の説明
@Abort @Abort(<msg>)

変換を中止し、引数に指定されたメッセージ文字列をログに出力する。

<msg> (文字列):
ログに出力するメッセージ
@Area@Area([[(SLOPED_AREAS|VOLUME),]<multiplier>])

ジオメトリの面積を返す。第1引数に VOLUME を指定したときはソリッドの体積を返す。
<multiplier> を指定したときは、<multiplier> を乗じて換算した面積/体積を返す。
点と線については 0 を返す。

第1引数の指定内容に応じて次のように処理内容が異なる。
省略した場合は、ジオメトリをXY平面に投影した面の面積を返す。SLOPED_AREAS を指定した場合は、面を含む平面上の面積を返す。VOLUME を指定した場合は、ソリッドの体積を返す。

<multiplier> (数値):
求めた値に乗じる値。省略したときは 1 とみなされる。例えば、座標値が m 単位であるジオメトリについて km2 単位の面積を求めたいときは、0.000001 または 1e-6 を指定する。
@CoordSys@CoordSys()

フィーチャーに設定されている座標系名 (文字列) を返す。
@Count@Count([<domain>[,<startVal>[,<modulo>]]][,NO_LOG])

関数の実行順で <startValue> の値 (省略したときは 0) から始まる連番を返す。
<modulo> を指定したときは、連番を <modulo> で除した余りを返す。

<domain> (文字列):
カウンターの名前。連番は指定された名前ごとに生成される。

<startVal> (整数):
連番の開始値。省略したときは 0 と見なされる。

<modulo> (正の整数):
指定したときは連番を <modulo> で除した余りを返す。

NO_LOG:
省略したときはカウンターの最終値がログに記録され、NO_LOG を指定したときは記録されない。
@CurrentAttribute@CurrentAttribute()

AttributeCreator, AttributeManager, StringConcatenator, ExpressionEvaluator で既存の属性値を更新するための式の中で使用したときに、その属性の現在の値 (更新前の値) を返す。

例1: 属性 a の値が X であるとき、a を更新するための文字列式 R@CurrentAttribute() は RX を返す。

例2: 属性 n の値が 2 であるとき、n を更新するための数式 @CurrentAttribute()+1 は 3 を返す。
@Dimension@Dimension()

ジオメトリの次元 (2または3) を返す。
@Evaluate@Evaluate(<expression>)

数式を評価し、その結果を返す。
数式エディタ (Arithmetic Editor) で入力した数式はこの関数によって評価される。

<expression> (数式):
例えば @Evaluate(1+2) は 3 を返す。
@GeometryPartCount@GeometryPartCount()

ジオメトリを構成するパーツの数を返す。
@GeometryType@GeometryType()

ジオメトリタイプ (fme_geometry の値) を返す。
@Length@Length([<dimension>[,<multiplier>]])

ジオメトリの長さ (面については周の長さ) を求める。穴がある面の長さには穴の境界の長さが含まれる。

<dimension> (次元):
2を指定したときはジオメトリをXY平面に投影した長さ、3を指定したときは各頂点のZ値を考慮した斜長を求める。省略したときは 2 とみなされる。

<multiplier> (数値):
求めた長さに乗じる値。省略したときは 1 とみなされる。例えば、座標値が m 単位であるジオメトリについて km 単位の長さを求めたいときは、0.001 または 1e-3 を指定する。
@NumCoords@NumCoords([FLATTEN_AGGREGATE])

ジオメトリの頂点の数を返す。

FLATTEN_AGGREGATE:
マルチパートのジオメトリ (aggregate: 集約) について、FLATTEN_AGGREGATE を指定したときは実際の頂点の数を返し、省略したときは頂点数にパート数を加算した数を返す。
@UUID@UUID()

UUID (Universally Unique Identifier) を生成して返す。
@Value@Value(<attr>)

引数に指定された名前の属性の値を返す。

<attr> (文字列):
属性名を指定する。
@XValue@XValue()

ジオメトリの最初の頂点のX座標値を返す。
@YValue@YValue()

ジオメトリの最初の頂点のY座標値を返す。
@ZValue@ZValue()

ジオメトリの最初の頂点のZ座標値を返す。

構文において、<引数名> は取り得る値の制約 (整数、2または3 など) の範囲で任意の値を設定できる引数であり、全て英大文字の文字列 (Area 関数の SLOPED_AREAS など) はその文字列に固定された引数です。また、[ ] は省略可能な部分、(A|B) は A か B のどちらか一方であることを意味します。

引数には値を直接記述する他、@Value(属性名) で取得するフィーチャーの属性値、他の関数の呼び出し、$(パラメーター名) で参照するユーザーパラメーターの値も設定できます。

数式の中で値を返さない関数を使用した場合、あるいは、数式で使用した関数が数値として解釈できない文字列を返した場合、その数式全体の値は null になります。

関数名の大文字と小文字は厳密に区別されます。例えば @Abort関数について、@abort や @ABORT は無効です。

次の表に掲げるFMEフィーチャー関数の機能は、トランスフォーマーで代替することもできます。

関数名関数機能の全部または一部に相当するトランスフォーマー
@AbortTerminator
@AreaAreaCalculator, VolumeCalculator
@CoordSysCoordinateSystemExtractor
@CountCounter, ModuloCounter
@DimensionDimensionExtractor
@GeometryPartCountPartCounter
@LengthLengthCalculator
@NumCoordsCoordinateCounter
@UUIDUUIDGenerator
@XValue, @YValue, @ZValueCoordinateExtractor