KMLのラスタの透過設定する方法

749 views
Skip to first unread message

TJ

unread,
May 20, 2016, 12:34:46 AM5/20/16
to FMEユーザーフォーラム
FME 2016.1.0.0

主題図のラスタ画像(GeoTIFF形式)を KML 形式に変換し、GoogleEarth で表示したら、色塗っていない部分(NoData に該当する箇所)も白く表示されます。白い部分を透過表示することが可能でしょうか?

Takashi Iijima

unread,
May 20, 2016, 12:44:14 AM5/20/16
to FMEユーザーフォーラム
Nodata に相当するセルの Alpha バンドの値を 0 にすれば透過になると思います。
具体的な方法は、ラスターの Interpretation と Nodata 値の定義がどうなっているかが分かれば検討できます。

TJ

unread,
May 20, 2016, 1:03:39 AM5/20/16
to FMEユーザーフォーラム
GeoTIFF は ImageRasterizer で出力したものです。

ImageRasterizer は以下のように設定してあります。

Auto Generated Inline Image 1

Takashi Iijima

unread,
May 20, 2016, 1:30:16 AM5/20/16
to fm...@googlegroups.com
次の設定でいけると思います。

ImageRasteraizer パラメーター
----------
Interpretation Type: RGBA32
Alpha Value: 1.0
Background Color: 1,1,1
Background Alpha Value: 0.0
----------

KML ライターのパラメーター:  Raster Output Format: tiff (デフォルト) または png (jpeg は Alpha バンドをサポートしない) <-- 訂正済み

Alpha バンドは、0:透明~1:不透過の範囲で不透過度を示すので、例えば、Alpha Value = 0.5 として透過度50%の画像を作ることもできます。

Takashi Iijima

unread,
May 20, 2016, 1:34:26 AM5/20/16
to FMEユーザーフォーラム
おっと、GeoTIFF は作成済みなのですね。
ならば、GeoTIFF リーダーで読んだ後、RasterBandAdder で Alpha バンドを追加してみてください。

RasterBandAdderパラメーター
----------
Inerpretation Type: Alpha8
Cell Value: 255
Nodata Value: 0

TJ

unread,
May 20, 2016, 1:39:46 AM5/20/16
to FMEユーザーフォーラム
Alpha 値を設定すると、画像全体透過度が変わりますよね。

それではなく、下の図の白い部分だけ透過にしたいです。
ちなみに、色塗りの部分は別の質問で質問したメッシュから作成した部分に該当するところです。白の部分は元々メッシュの無いところです。

Auto Generated Inline Image 1

Takashi Iijima

unread,
May 20, 2016, 1:42:50 AM5/20/16
to FMEユーザーフォーラム
データがあるセルのAlpha値を255 にすれば、透明度は変わりません。
NodataセルのAlpha値を0にして透明にするという意味です。

TJ

unread,
May 20, 2016, 1:59:06 AM5/20/16
to FMEユーザーフォーラム
きちんと理解していなくて、失礼いたしました。

>データがあるセルのAlpha値を255 にすれば、透明度は変わりません。NodataセルのAlpha値を0にして透明にするという意味です。

----------
Interpretation Type: RGBA32
Alpha Value: 1.0
Background Color: 1,1,1
Background Alpha Value: 0.0
----------

Alpha Value: 1.0 はデータあるセル、Background Alpha Value: 0.0 はNodata セルに対応しているわけですね。この通り設定したら問題なく透過表示ができました。

Takashi Iijima

unread,
May 20, 2016, 1:59:50 AM5/20/16
to FMEユーザーフォーラム
Nodata定義を削除した後、RasterExpressionEvalulator の方が確実かも知れません。
Alphaバンドの式は、R, G, B がすべて 255 ならば 0 (透明)、そうでなければ 255 (不透過)にするという意味です。


Takashi Iijima

unread,
May 20, 2016, 2:03:55 AM5/20/16
to FMEユーザーフォーラム
入れ違いました。
ImageRasterizerでラスターを作るときからその設定していれば問題ありません。

訂正: TIFF/GeoTIFF も Alpha バンドをサポートしていました。KMLライターの Raster Output Format パラメーターはデフォルトの tiff のままでも大丈夫です。

TJ

unread,
May 20, 2016, 2:11:50 AM5/20/16
to FMEユーザーフォーラム
RasterExpressionEvalulator を使ったことがないのですが、バンドごと計算できるので、とても面白そうですね。

実は、先ほど、教えていただいた通り、 ImageRasteraizer 設定を変更し実行したら、下記の警告メッセージが表示されました。それで、「Fill Background with Nodata」パラメータを No に変更しました。今のデータにはNodata はないという認識で正しいでしょうか?

2016-05-20 15:05:08| 8.6| 0.0|WARN |GEOTIFF writer: The format does not support individual nodata values per band. The first nodata value found '255' will be used for the entire dataset. If this is undesirable, consider splitting bands into multiple datasets, adding a separate band for nodata values, or removing nodata values

Takashi Iijima

unread,
May 20, 2016, 2:37:34 AM5/20/16
to FMEユーザーフォーラム
仮訳: 「このフォーマットはバンドごとのNodata定義はサポートしていません。最初に見つかったNodata値'255'をデータセット全体のNodata値として使用します。もしこれが望ましくないならば、バンドごとに分解し、それぞれにNodata値を設定して複数のデータセットを作成するか、または、Nodata値の定義を削除することを検討してください。」

ImageRasterizer で定義されたNodataセルのRGB値は 1,1,1 (255, 255, 255)で、そのAlphaバンドは0です。つまり、バンドによってNodata値が異なります。
GeoTIFFはバンドごとに異なる Nodata値の定義をサポートしないので、最初に見つけたNodata値(255)を全体のNodata値として採用するよ、という警告ですね。

おっしゃるように、「Fill Background with Nodata」をNoにして、Nodata定義をしない方が良いかも知れません。
あるいは、もし、データとして黒色 (0,0,0) がないならば、Background Color を (0,0,0) すれば、全てのバンドのNodata値が 0 に統一されるので、「Fill Background with Nodata」をYesにしても、警告なしにNodata定義がGeoTIFFに反映されると思います。

(参考)基盤地図情報DEM --> 標高階層区分別に色分け(Nodata は透明) --> KML


Reply all
Reply to author
Forward
0 new messages