FMEのLineJoiner


8

線オブジェクトがたくさんあります。それらのいくつかは、いくつかの基準よりも小さいです。

1 meter大きな線の属性を維持しながら、すべての線または大きな線よりも小さい線の小さなセグメントを結合したいと思います。

何かアドバイス?

最初のテスターを使用してラインオブジェクトの長さ(1 m未満の場合)を確認しようとすると、渡された出力はLineJoinerに送られます。しかし、実際には何も起こりません。LineJoinerの出力ポートからのラインには、以前のラインとしての属性がありません(本来あるはずです)。MAybe複雑すぎますが、これは簡単な作業だと思いました。


明確にしてもらえますか?より大きなラインに、それらが結合されるより小さなラインの属性を取得させますか?
GIS-ジョナサン

反対:)小さい行を大きい行に結合する必要があります(1 + 5 = 6)。
Z77

行をマージしたいのですが、属性をどうしますか?大きい線の属性を元のままにしたいですか、それとも小さい線の属性を新しい大きな線に使用しますか?
GIS-ジョナサン

より大きな行の属性を保持します。
Z77 2012年

回答:


7

LineJoinerパラメータ付きのトランスフォーマーを使用できますList Name。ただし、追加のデータ処理を行う必要があります。

  1. LengthCalculator長さの計算に使用します。
  2. Sorter行を長さでソートするために使用します(数値ソート、降順)。
  3. LineJoiner行を結合するために使用します。最大のものを最初に(ステップ2のおかげで)。新しいリスト属性の-名前のパラメータList Nameを指定しますLineJoiner
  4. ListIndexerリストインデックス0で使用-最初に結合されたフィーチャ(最大のもの)の属性をリストから取得します。

これはどのように見えるかです: モデル例

編集1:

100万未満の機能のみを大きな機能に結合できるようにするために、さらに使用する必要があります。

  1. Tester テスト付きLengthCalculator後のトランスフォーマー: _length < 1
  2. 使用SpatialFilter(テストでは、パラメータを実行します:TOUCHES)テスターの後にのみタッチが<1メートル特長ことをフィルタリングします。次に、<1mのフィーチャを使用して、それらをライン結合します。<1mに触れない機能、直接出力(またはさらに処理)。

モデル: モデル2

EDIT2:

2つの大きな線に接する1m未満の線がある場合、それらはすべて一緒に結合されます。データでこのようなケース(1m未満の機能が2つ以上の大きなものに接触する)が可能である場合は、そのようなケースの処理を追加する必要があります。パラメータMerge AttributesAttribute Prefixトランスフォーマを見てみましょうSpatialFilter。これらのパラメーターを使用すると、このようなケースを検出して、追加のフィルター処理を行うことができます。

EDIT3:

2つの大きな線が1つの小さな線(<1m)に接触している場合を解決しましょう。小さなラインとの結合に参加するには、大きなラインの1つだけをとる必要があります。

このようなフィルタリングを実行できるようにするには、これら2つの大きな機能に、接触している小さな機能のIDでマークを付ける必要があります。EDIT2で述べたように、SpatialFilterパラメーターMerge Attributesとを使用してトランスフォーマーで実行できますAttribute Prefix

次に、変圧器を使用します DuplicateRemoverをこのような重複する機能(2つ大きい)をフィルター処理し、そのうちの1つだけを取得します。

ヒント:Inspectorモデルの作成中にトランスフォーマーを使用し、不明な場合は中間結果を表示してください。このようにして、各トランスがどのように機能しているかをよりよく理解できます。データを試してみてください!:)


OK。ご回答ありがとうございます。これもやってみます。
Z77

1
OK、これはもっと複雑な作業です。回答を更新しました。アイデアは、SpatialFilterを使用して、機能TOUCHをテストすることです。このようにして、LineJoinerに提供できるのは、100万個未満の機能とそれらが関係する機能だけです。
Alex Markov

1
さらに複雑なケースが可能であることを認識し、いくつかの情報を追加しました。見てください。
Alex Markov

1
さらに私の答えを更新しました。見てください。
Alex Markov

1
することでSorter、我々より多くの長さは、第1〜第行くと機能を強化LineJoinerし、それの属性がリストに「0」インデックスになります(パラメータを参照List Name)、その後、我々は(機能の主な属性にそれらを移動することができますListIndexer)。そうしないと、小さなフィーチャの属性が「支配する」という結果になる可能性があります。大きな機能から先に行っても違いはわかりませんが、私はそれについては触れません。
Alex Markov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.