異なる行列数のラスタを一定サイズに揃える方法

51 views
Skip to first unread message

TJ

unread,
Sep 19, 2017, 11:39:15 PM9/19/17
to FMEユーザーフォーラム
FME 2017.1.0.0

メッシュでラスタをクリップ処理をしています。
完全にメッシュと重なっている箇所について、メッシュの同じサイズのラスタが出力されますが、
ラスタの外郭周辺など一部がメッシュと重なっている箇所について、重なる部分のラスタが出力されます。

やりたいことは一部重なる箇所について、重なっていない部分を白色とし、全ての出力ラスタがメッシュと同じサイズに揃えたいです。

以下の2つの方法で試しました。
1.MapnikRasterizer でメッシュと同じサイズのラスタを作成した後、RasterMosaicker で切り出し後のラスタと融合する
2.MapnikRasterizer でメッシュと同じサイズのラスタを作成した後、RasterExpressionEvaluator で切り出し後のラストと融合する

1の方法では、メッシュサイズの画像が作成されましたが、とても時間がかかりるのと入力ラスタの順序はどのようにコントロールするのが分かりません。
2の方法では、RasterExpressionEvaluator はA,Bの2枚のラスタが同じサイズでないとエラーになります。

1、2の問題点の解決策あるいは別の方法があれば教えていただきたいです。

TJ

unread,
Sep 20, 2017, 12:07:09 AM9/20/17
to fm...@googlegroups.com
以下の記事を参考して、ソート用の属性を追加し、 RasterMosaicker に入力する前に、その属性でソートをすれば、ソートした順(一番先に入力した画像が一番下になります)で処理するようになりました。再度処理したところ、何故か先より処理が速くなりました。とりあえずこの方法で処理してみます。
https://knowledge.safe.com/articles/1247/raster-mosaicking-scenario.html

Takashi Iijima

unread,
Sep 20, 2017, 1:13:35 AM9/20/17
to FMEユーザーフォーラム
> 1の方法では、メッシュサイズの画像が作成されましたが、とても時間がかかりるのと入力ラスタの順序はどのようにコントロールするのが分かりません。
リンクされた記事にも書かれているように、入力ラスターの順番を指定するための属性を設定して Sorter でソートするのが常套手段です。

> 2の方法では、RasterExpressionEvaluator はA,Bの2枚のラスタが同じサイズでないとエラーになります。
これは無理ですね。

3. 次の Q&A で回答した方法も応用できるかも知れません。

TJ

unread,
Sep 20, 2017, 2:07:12 AM9/20/17
to FMEユーザーフォーラム
早速なご回答ありがとうございます。

>リンクされた記事にも書かれているように、入力ラスターの順番を指定するための属性を設定して Sorter でソートするのが常套手段です。
これからそうします。

>3. 次の Q&A で回答した方法も応用できるかも知れません。
MapnikRasterizer の Ground Extents はラスタの全体範囲を決める役割ですね。以前あまり気にしたことがないので、とても勉強になりました。
今回画像のないところを白にしたいので、MapnikRasterizer → Background → Color を白(1,1,1)に設定することでできました。
更に、今回もう1つのやりたいことがあって、画像の切り出しと同時に、ラスタの解像度も落としたいのです。それも MapnikRasterizer → Raster Properties → Number of Columns(cells),Number of Rows(cells) を設定することで実現しました。

結果的に、MapnikRasterizer 1つでやりたいことを全て実現できました。本当に便利なトランスフォーマーですね。

Takashi Iijima

unread,
Sep 23, 2017, 9:43:56 PM9/23/17
to FMEユーザーフォーラム
>>リンクされた記事にも書かれているように、入力ラスターの順番を指定するための属性を設定して Sorter でソートするのが常套手段です。
>これからそうします。

FME 2017 では RasterMosaicker に "Overlapping Values" パラメーターが追加され、複数のラスターが重なった区域のセル値の決定方法について、次のどれかひとつを選択できるようになりました。
  • Last: 入力順で再度のラスターのセル値(従来どおり。デフォルト)
  • Minimum: 最小値
  • Maximum: 最大値
  • Average: 平均値
  • Sum: 合計
  • Composite Using Alpha Blend: アルファブレンドによる混合
今回の問題の解決策にはなりませんが、入力順を調整しなくても良いケースもあると思います。

>MapnikRasterizer 1つでやりたいことを全て実現できました。本当に便利なトランスフォーマーですね。

同感です。私は最近、ベクターデータに基づいてウェブマップタイルを作成するワークスペースで使いました。

TJ

unread,
Sep 25, 2017, 12:23:13 AM9/25/17
to fm...@googlegroups.com
>FME 2017 では RasterMosaicker に "Overlapping Values" パラメーターが追加され、複数のラスターが重なった区域のセル値の決定方法について、次のどれかひとつを選択できるようになりました。
これをヒントに白い背景のラスタとクリップ後のラスタ RasterMoszaicker で統合する際、"Overlapping Values" パラメーターの値を Minimum(最小値)に設定することで、入力順番を設定しなくても、クリップ画像のないところは白色で塗りつぶすことができるじゃないかと思って試してみたところ、モザイク後のラスタはなぜかクリップラスタの両側だけが黒くなってしまいます。これはどのような原因が考えられますでしょうか。

また、今回のような個々のラスタの順番ではなく、ラスタのグループで順番を決めたい場合が結構あると思います。
もしRasterMosaicker は複数の入力ポートを受入が可能(FeatureReader のようなイメージ)であれば、入力ポートの順番を変更することで、モザイクの順番を制御できるようになったら便利かなと思いました。時間があるとき Ideas に提案してみます。

1.クリップ後のラスタと白いラスタをそのままData Inspector で重なって表示した状態


2.考えた案で両者をモザイクしたラスタ


Auto Generated Inline Image 1
Auto Generated Inline Image 2

Takashi Iijima

unread,
Sep 25, 2017, 1:36:42 AM9/25/17
to FMEユーザーフォーラム
> これはどのような原因が考えられますでしょうか。

どうやらバグのようです。Safe社に調査と改善を要請します。

TJ

unread,
Sep 26, 2017, 1:47:24 AM9/26/17
to FMEユーザーフォーラム
>どうやらバグのようです。Safe社に調査と改善を要請します。

そうですか、調査していただいてありがとうございます。
Reply all
Reply to author
Forward
0 new messages