geotifの加工について

219 views
Skip to first unread message

たく

unread,
Jun 25, 2024, 5:09:02 PMJun 25
to QGIS初心者質問グループ
基盤地図情報5mメッシュをラスタで取り込んで、さらに必要範囲をポリゴンで切り抜いたのですが、qgis上ではポリゴン範囲のみ表示されますが、エクスポートしたgeotifは範囲外が黒くなります。黒い部分を透過表示にできる方法があれば教えてもらえないでしょうか。

卵ボーロ

unread,
Jun 25, 2024, 8:20:25 PMJun 25
to QGIS初心者質問グループ
こんにちは.
ポリゴンでラスタデータを切り抜く際に,「マスクレイヤで切り抜く」という機能を使用されていると思います.
その機能を使用する際に,アルファバンドを作るというチェックボックスがあるので,そこにチェックを入れて切り抜きを実行すると,透過表示が可能になると思います.
詳細については,以下のサイトを参考にしていただければ幸いです.

参考
2024年6月26日水曜日 6:09:02 UTC+9 たく:

たく

unread,
Jun 25, 2024, 11:50:59 PMJun 25
to QGIS初心者質問グループ
回答頂き、ありがとうございます。
できそうです。

2024年6月26日水曜日 9:20:25 UTC+9 卵ボーロ:

ありた

unread,
Jun 26, 2024, 7:20:44 AMJun 26
to QGIS初心者質問グループ
こんにちは

まず大前提として、ラスタデータは画像データのように小さなセルが、長方形状に
並び敷き詰められたデータ構造になっており、任意の形状をとることができません。
そのため、切り取って不必要となったセルに対し、無効フラグを立てることで対応します。

実際にはフラグではなく、当該ラスタとして無効値とみなす NODATA 値の設定と、
各セル値にその NODATA 値が含まれているかどうかで判断します。

プロセシングツールの「ラスタ抽出」ツール内の「マスクレイヤで切り抜く」の
オプションで NODATA 値を指定することができます。
設定する NODATA 値は、そのデータで通常発生しない値にする必要があり、
たとえば標高データだと例えば -9999.0 を設定したりします。



一応、アルファバンドの作成でも見た目上はほぼ同等の結果となりますが、アルファバンドは
切り抜いたセルを 0 としたうえで、別途、透過する領域を示すデータ(バンド)を
付与したものとなります。

このため実データ上の扱いは「無効セルではなく 0 が入った有効セル」となり、ラスタの
セル統計情報や、シンボロジの色グラデーション設定( min/max 値)で不都合がでたり、
切り抜いたラスタを、更に地形分析したりする際に悪影響がでる場合もありますのでご注意ください。 




2024年6月26日水曜日 12:50:59 UTC+9 たく:

卵ボーロ

unread,
Jun 26, 2024, 10:53:40 AMJun 26
to QGIS初心者質問グループ
>ありた さま

お恥ずかしながら,今まで切り抜き範囲外の処理はアルファバンドでやっていたので,NODATA値の使い方をはじめて知りました.
(不確かな回答をしてしまい,申し訳ございません...)
ラスタ分析の際に影響が出るとのことで,使い分けに注意しようと思います.
ふと思ったのですが,アルファバンドを作成する機能というのは,どんな場合に使われるのか 気になりました.

この度はご回答いただきありがとうございました,一つ知識が増えてうれしいです.

2024年6月26日水曜日 20:20:44 UTC+9 ありた:

たく

unread,
Jun 26, 2024, 7:19:34 PMJun 26
to QGIS初心者質問グループ
いろいろ回答頂き、ありがとうございます。nodataでマイナス数値で設定したいと思いますが、マイナス数値を透過する設定は可能でしょうか。

2024年6月26日水曜日 23:53:40 UTC+9 卵ボーロ:

ありた

unread,
Jun 27, 2024, 8:53:42 AMJun 27
to QGIS初心者質問グループ
> アルファバンド
一般的な使い分けはよくわかりませんが、たとえばカラー画像などは R, G, B の
各バンドは 0-255 の整数値しかとれないので、 NODATA の設定自体は可能ですが、
抜き色を作ることが難しい場合もあると思います。
単なる見た目上の切り取りでよければアルファバンドでもよいと思います。



> NODATA
「マスクレイヤによる切り抜き」で NODATA 値を設定すると、自動的にその値が
NODATA として設定されます。
またレイヤプロパティでその当該レイヤに対して NODATA 値を設定することもできます。
ただし NODATA 値はラスタデータに書き込まれていませんので、 QGIS に再度読み込んだり、
他ツールで利用する場合には、その値は自動的には NODATA とみなされません。
ラスタデータに書き込むには「形式変換 (gdal_translate)」などを利用します。

特定の値ではなく、負数全般を NODATA として扱いたい場合は、先に「ラスタ計算機」で

("DEM@1" >= 0) * "DEM@1" + ("DEM@1" < 0) * -9999.0

といった式で、非負数ならばそのままで負数ならば一律 -9999.0 に変換したうえで
NODATA 値の設定処理を行うとよいと思います。
(上記式はラスタ名を「DEM」としたときのもの)

2024年6月27日木曜日 8:19:34 UTC+9 たく:

卵ボーロ

unread,
Jun 27, 2024, 10:33:04 AMJun 27
to QGIS初心者質問グループ
>ありた さま
ご回答いただきありがとうございます.
基本的にはNODATA値を使って処理する という方針が良さそうですね
今度実践してみようと思います.
ご丁寧に回答いただき,ありがとうございました.

2024年6月27日木曜日 21:53:42 UTC+9 ありた:

たく

unread,
Jun 27, 2024, 1:54:00 PMJun 27
to QGIS初心者質問グループ
みなさま、回答いただき、ありがとうございます。
これでいろいろ試してみます。

2024年6月27日木曜日 23:33:04 UTC+9 卵ボーロ:
Reply all
Reply to author
Forward
0 new messages