コンテンツへスキップ
AI Agent
QGIS
チュートリアル

QGISラスタ計算機の使い方:検証済みの計算式と気づきにくい4つの落とし穴

公開日

QGIS のラスタ計算機は Raster > Raster Calculator(日本語版では ラスタ > ラスタ計算機)から開きます(Processing Toolbox からも開けます)。Sentinel-2 のNDVIには ("B08@1" - "B04@1") / ("B08@1" + "B04@1") を使います。メニューの計算機は自動的に Float32 で計算します。注意したいのは、GDAL の計算機で符号なし整数が折り返されること、* によるマスクが nodata ではなく 0 を書き込むこと、そして度単位のグリッドで傾斜ツールが破綻することです。

2026年11月7日、QGIS 3.44.15 を使って、これらをすべて検証しました。対象はブラジル、ミナスジェライス州マシャードの南にある丘陵の農地で、5 km × 5 km の範囲です(2,500 ha、10 m 解像度で250,000ピクセル、UTM 23S、EPSG:32723)。2026年11月3日の Sentinel-2 L2A シーンと 30 m の Copernicus GLO-30 DEM を使い、すべての出力を QGIS の外で 64ビット浮動小数点の numpy による参照値と比較しました。

QGISのラスタ計算機とは? どの計算機を開いているのか

ラスタ計算機は、1つまたは複数のラスタバンドに対して、数式や論理式をピクセルごとに評価し、新しいグリッドを書き出すツールです。QGIS では、バンドを "layername@band" の形で指定します(たとえば "B08@1" はレイヤ B08 のバンド1)。バンドは +、-、*、/、<、>、AND、OR、if(condition, true, false) で組み合わせ、出力は GeoTIFF かメモリ上の仮想レイヤに書き出します。

つまずきやすいのは、QGIS に「Raster calculator」という名前のツールが5つあり、すべてが同じエンジンで動くわけではないという点です。4つは QGIS ネイティブの式パーサを使い、浮動小数点で計算します。GDAL のもの(内部では gdal_calc.py)は A/B/C の文字変数を使い、入力バンド自身のデータ型で numpy の式を評価します。

QGIS 3.44 のツールバンドの書き方出力の型uint16 のNDVIで 0.01 を超えてずれたピクセル(250,000中)
Raster > Raster Calculator (QgsRasterCalculator)"B08@1"Float320
Processing: Raster calculator (native:rastercalc)"B08@1"Float320
Processing: Raster calculator (virtual) (native:virtualrastercalc)"B08@1"Float64(メモリ上)0
Processing: Raster calculator (legacy) (qgis:rastercalculator)"B08@1"Float320
Processing: GDAL Raster calculator (gdal:rastercalculator)A、BFloat32 のファイル、計算は入力の型703(0.28%、値は最大126.7)

型変換を気にせず使える式がほしいなら、上部メニューの Raster > Raster Calculator か、Processing の QGIS ネイティブグループにある最初の Raster calculator を使ってください。

手順:QGISのラスタ計算機でNDVIを計算する

まず Sentinel-2 のバンドが必要なら、QGIS で Sentinel-2 画像をダウンロードする方法のガイドで STAC カタログを使う手順を説明しています。バンド B04(赤、10 m)と B08(近赤外、10 m)がレイヤパネルに入っていれば、NDVI が何を測るのかの計算は4つのステップで終わります。

出力グリッドの基準になるレイヤを選ぶ

ダイアログを開く前に、レイヤパネルで B08 をクリックします。Raster > Raster Calculator は、開いた時点でレイヤパネルで選ばれているラスタレイヤから、出力の範囲、座標参照系(CRS)、幅と高さを読み取ります。見出しに Extent (current: B08) と表示されていることを確認してください。

NDVIの式を入力する

Raster > Raster Calculator で、Raster Bands の一覧から B08@1 と B04@1 をダブルクリックして(またはダブルクォートで囲んで入力して)、次の式を作ります。

("B08@1" - "B04@1") / ("B08@1" + "B04@1")

式の入力欄のすぐ下に Expression valid と表示されていることを確認します。このダイアログでは、符号なし16ビットの Sentinel-2 バンドを float に変換する必要はありません。

出力ファイルか仮想レイヤを選ぶ

Output layer に .tif のパスを指定し、Output format は GeoTIFF のままにします。手早くプレビューしたいだけで、ディスクにファイルを残したくない場合は Create on-the-fly raster instead of writing layer to disk にチェックを入れます(プロジェクトファイルには入力への絶対パスを含む式の URI が保存され、書き出したファイルとの差は 3e-8 に収まります)。

実行して結果をスタイル設定する

OK をクリックします。500 × 500 ピクセルの検証範囲では計算は0.12秒で終わり、値は -0.5507 から 0.9547、64ビットの numpy との最大差は 2.98e-8 でした。Layer Properties > Symbology を開き、Singleband pseudocolor に切り替えて RdYlGn のカラーランプを選び、最小値を 0、最大値を 0.9 にします。

次の画像は OK をクリックする直前のダイアログで、範囲は B08 から取られています。

QGISのラスタ計算機ダイアログ。Raster Bands の一覧に B04@1 と B08@1、Output layer にパスが入力され、Extent (current: B08) は EPSG:32723 で500列500行、NDVIの式の下に Expression valid と表示されている。
Raster > Raster Calculator のダイアログは、範囲、CRS、ピクセル数の初期値をレイヤパネルで選ばれているレイヤから取ります。

RdYlGn でスタイルを設定すると、マシャード周辺の密な植生は濃い緑、裸地や道路は赤で表示され、赤が近赤外を上回る703ピクセル(水域や暗い部分)は負の値になります。範囲全体のNDVIの平均は 0.727 です。樹冠が密でNDVIが飽和する場合や、列の間に裸地が見える場合は、NDVI vs EVI、SAVI、NDRE の比較で式がどう変わるかを確認してください。

QGISのマップキャンバスに、5 km × 5 km のマシャードの農地のNDVIラスタを0から0.9の赤・黄・緑のランプで表示し、左側にレイヤパネルがある画面。
マシャードの Float32 NDVI 出力を0(赤)から0.9(緑)で表示したもの。すべてのピクセルが外部の64ビット参照値と3e-8以内で一致します。

QGISラスタ計算機の計算式集

以下の式はすべて QGIS 3.44.15(QgsRasterCalculator)でマシャードのデータに対して実行し、numpy とピクセルごとに比較しました。"layer@band" をダブルクォートで囲む書き方のままコピーしてください。

用途検証済みの式(Raster > Raster Calculator)マシャードの検証範囲での結果
NDVI(Sentinel-2 10 m)("B08@1" - "B04@1") / ("B08@1" + "B04@1")250,000ピクセルで -0.5507 から 0.9547 の Float32、最大誤差 2.98e-8。
NDWI(McFeeters の水指数)("B03@1" - "B08@1") / ("B03@1" + "B08@1")Float32。"ndwi@1" > 0 で水域の637ピクセル(池と小川で6.4 ha)を抽出。
しきい値未満を nodata にするマスク"ndvi@1" / ("ndvi@1" > 0.3)偽の箇所は 0 で割られ、本当の nodata になる(11,343 ピクセルを除外、平均 0.753)。
条件付き置換(if)if("ndvi@1" > 0.3, "ndvi@1", 0)式は通り、0.3 を超える値は残るが、それ以外には * マスクと同じく 0 が書き込まれる。
DEMを5クラスに再分類(論理値の和)("dem@1" < 800) * 1 + ("dem@1" >= 800 AND "dem@1" < 850) * 2 + ("dem@1" >= 850 AND "dem@1" < 900) * 3 + ("dem@1" >= 900 AND "dem@1" < 1000) * 4 + ("dem@1" >= 1000) * 5DEMの54,901ピクセルにコード1から5。native:reclassifybytable と全ピクセルで一致。
DEMを5クラスに再分類(入れ子の if)if("dem@1" < 800, 1, if("dem@1" < 850, 2, if("dem@1" < 900, 3, if("dem@1" < 1000, 4, 5))))同じ5クラス(96.9 ha、1,089.4 ha、1,323.1 ha、1,759.7 ha、582.7 ha)。
傾斜のしきい値"slope@1" > 1515度を超える箇所に 1、15度以下に 0 を書き込む(UTM の有効なDEMピクセル 52,979 のうち 17,327、32.61%)。
標高をメートルからフィートへ"dem@1" * 3.280843.28084 の代わりに QGIS マニュアルの 3.28 を使うと、最大誤差は 0.98 ft(1,168 m で 0.026%)。

誤った数値を出す4つの気づきにくい落とし穴(と見分け方)

以下の4つの失敗は、どれも QGIS で警告が出ません。処理は最後まで終わり、プロジェクトにレイヤが追加され、確認するまではもっともらしく見える数値が出てきます。

1. GDAL Raster Calculator は負のNDVIで符号なし整数を折り返す

QGIS ネイティブのラスタ計算機は Sentinel-2 のバンドで整数除算のバグに当たることはありません。しかし Processing の GDAL Raster calculator(gdal:rastercalculator)は (A-B)/(A+B) を入力ファイル自身の numpy データ型で評価するため、赤が近赤外より大きいピクセルをすべて壊してしまいます。

Sentinel-2 Level-2A のバンドは符号なし16ビット整数(uint16)で配布されています。250,000ピクセルの検証範囲では、703ピクセル(0.28%、水域や暗い部分)で B04 が B08 より大きくなっています。gdal:rastercalculator が uint16 のまま B08 から B04 を引くと、負の結果が65,536で折り返され、この703ピクセルには負のNDVIではなく 0 から 126.7 の値が Float32 のファイルに書き込まれます。

uint16 のバンドで GDAL ラスタ計算機が出力したNDVIを表示したQGISの地図。赤が近赤外を上回る箇所で1を超えた値がマゼンタのピクセルで示されている。
生の uint16 バンドに GDAL Raster Calculator を使った結果。マゼンタは1を超える値で、負になるはずのピクセルが65,536で折り返され、最大126.7になっています。

GDAL の計算機を使うなら、式の中で (A.astype(numpy.float32)-B)/(A+B) のように型を変換するか(検証では誤ったピクセルが 0 になりました)、QGIS ネイティブのラスタ計算機を使ってください。また、指数の出力型を GDAL で Int16 や Byte にしてはいけません。Int16 を指定すると、250,000ピクセル中249,973ピクセル(99.99%)が -1、0、1 のどれかに丸められました。

2. 条件を掛ける(*)と nodata ではなく 0 が書き込まれ、平均値が下がる

("ndvi@1" > 0.3) * "ndvi@1" のようにラスタに論理条件を掛けると、除外したピクセルはすべて nodata ではなく 0 になります。その結果、残した範囲のNDVIの平均は 0.753 から 0.719 に下がりました。

QGIS の公式マニュアルは、ラスタをマスクする標準的な方法として ("elevation@1" >= 0) * "elevation@1" を紹介しています。マシャードのNDVIレイヤでは、11,343 ピクセルが 0.3 以下です。("ndvi@1" > 0.3) を掛けると、この 11,343 ピクセルすべてに有効な数値 0.0 が書き込まれます。そのためレイヤの統計は250,000ピクセルすべてを数え続け、このあと実行する平均、ヒストグラム、ゾーン統計のすべてに 11,343 個のゼロが含まれます。

マスクの式除外したピクセルの値レイヤ統計で数えられるピクセル残した範囲のNDVIの平均
("ndvi@1" > 0.3) * "ndvi@1"0.0(データとして数えられる)250,0000.719(誤差 -0.034)
"ndvi@1" / ("ndvi@1" > 0.3)nodata(-3.40282e+38)238,6570.753(正確)

1ステップで本当の nodata を書き込むには、掛けるのではなく条件で割ります。"ndvi@1" / ("ndvi@1" > 0.3) です。条件が真(1)の箇所では値はそのまま、偽(0)の箇所ではゼロ除算により nodata になります。

3. 度単位のDEMで傾斜を計算してから計算機を使うと、地図の100%が急斜面になる

地理座標系のDEM(EPSG:4326 の Copernicus GLO-30 など)に QGIS の Slope ツールを既定の設定で実行してから "slope@1" > 15 でしきい値処理すると、丘陵の農地の100%が15度より急だと判定され、平均傾斜は 89.99 度になりました。UTM に変換したあとの正しい値は 32.61% です。

Copernicus GLO-30 などの無料の全球DEM(QGIS で無料のDEMをダウンロードするガイドを参照)は、標高はメートル、位置は地理座標の度(EPSG:4326)で提供されます。既定の Z 係数のままでは、Slope ツールはメートル単位の高低差を 0.000278(度で表したピクセル幅)という水平距離で割るため、どの斜面も垂直な崖に見えてしまいます。

"slope@1" > 15 の前の傾斜の計算方法15度を超えるピクセル平均傾斜
EPSG:4326 のDEMにネイティブの Slope、既定の Z 係数 1100.00%89.99°
EPSG:4326 のDEMに GDAL の Slope、scale 1100.00%89.99°
EPSG:4326 のDEMに GDAL の Slope、scale 11112031.61%12.54°
DEMを UTM 23S の 30 m に変換してからネイティブの Slope(参照値)32.61%12.68°
DEMを UTM 23S の 30 m に変換してから GDAL の Slope32.71%12.71°

1度あたり 111120 メートルという scale の近道を使っても、ちょうど1ポイント低くなります(31.61% 対 32.61%)。南緯22度では経度1度の長さが緯度1度より約7%短いためです(cos 22° = 0.93)。Slope とラスタ計算機を実行する前に、必ずDEMをその地域の UTM ゾーンに変換してください(Raster > Projections > Warp (Reproject)、リサンプリングは bilinear、端に偽の87°の傾斜が出ないように nodata 値を -9999 に設定)。

4. シーンを確認せずに Sentinel-2 の +1000 オフセットを引くと、90.6%のピクセルが壊れる

NDVIを計算する前に Sentinel-2 L2A のバンドから 1000 を引いたところ、250,000 ピクセル中 226,413 ピクセル(90.6%)が有効範囲 [-1, 1] の外に出ました。値は -1273 から 1217、平均は 0.727 ではなく 1.39 でした。

ESA の Sentinel-2 処理ベースライン 04.00 以降では、暗いピクセルがゼロで切り捨てられないように、デジタル値に +1000 のオフセットが加えられています。STAC のメタデータにも scale: 0.0001 と offset: -0.1 が記載されています。しかし Earth Search STAC API から Cloud-Optimized GeoTIFF を取得した場合(今回のシーン S2A_23KLR_20261103_0_L2A、ベースライン 05.13 がそうです)、提供元がすでに値をずらしてあり、アイテムのメタデータに earthsearch:boa_offset_applied: true が設定されています。

今回の B04 ファイルでは、250,000 ピクセル中 226,773 ピクセル(90.7%)の生のデジタル値が 1000 未満でした(最小 59、中央値 491)。式を変える前に、Layer Properties > Information で B04 の最小値を確認してください。暗いピクセルが 50 から 300 前後なら、オフセットはすでに除かれていて、生の (B08 - B04) / (B08 + B04) で正確な値になります(10,000 のスケール係数は比の中で打ち消し合います)。1000 を引くのは、晴天の最も暗いピクセルが 1000 を超えている場合だけです。

おまけ:「Expression valid」と汎用の赤いエラーバーが本当に意味すること

Raster > Raster Calculator には、デバッグの時間を大きく奪う挙動がほかに2つあります。

  • 解像度の異なるバンドを粗いグリッドで組み合わせても平均されません。 10 m のバンド(B08)と 20 m のバンド(B11)を組み合わせると、ネイティブの計算機は最近傍法でその場でリサンプリングします(GDAL の計算機は Error! Dimensions of file ... (250, 250) are different from other files (500, 500). Cannot proceed ですぐに止まります)。10 m の出力グリッドでは、20 m の各ピクセルを 2 × 2 で繰り返すだけなので問題ありません。20 m の出力グリッドでは、計算機は 10 m の4ピクセルを平均しません。62,500 セル中 62,250 セルで、各 2 × 2 ブロックの右上の 10 m ピクセルをそのまま選んでおり、(B08 - B11) / (B08 + B11) では4ピクセル平均との差が最大 0.71 になりました。
  • 「Expression valid」は構文を確認するだけで、バンド名は確認しません。 "B08@1" / のように演算子で終わる式なら、ダイアログが検出します(Expression invalid となり、OK がグレーアウトします)。
スラッシュで終わる不完全な式を入力したQGISのラスタ計算機ダイアログ。左下に Expression invalid と表示され、OK ボタンが無効になっている。
構文エラーがあると、OK ボタンはすぐに無効になります。

ところが、プロジェクトにないレイヤやバンド("B04@2" や、B02 を読み込んでいないときの "B02@1" など)を入力しても、ラベルは Expression valid のままです。OK をクリックすると、QGIS は100% nodata で埋まった 500 × 500 の GeoTIFF を書き出し、地図には何も追加せず、赤いバナーを1つだけ表示します。Raster calculator: An error occurred while performing the calculation. このバナーが出たら、すべての "layer@band" の名前を Raster Bands の一覧と照らし合わせてください。

QGISのマップキャンバス上部に表示された赤いエラーバー。Raster calculator: An error occurred while performing the calculation. と書かれている。
バンド名の打ち間違いは構文チェックを通り抜け、この汎用のバーで失敗し、ディスクにすべて nodata の GeoTIFF を残します。

ダイアログを使わない方法:QGISのAIエージェントに頼んでラスタ演算を実行する

私たちは AI Agent を開発しているので、このセクションは自社のプラグインについての話です。AI Agent は QGIS の中にチャットパネルを追加し、STAC カタログの検索、DEMの変換、Python や Processing によるラスタ演算、地図上での出力のスタイル設定を行えます。

上記の落とし穴をまったく同じマシャードのデータで避けられるかを確かめるため、空の OpenStreetMap プロジェクトの上に 120.07 ha の農地ポリゴン(UTM 23S で E 405300-406300, N 7594400-7595600)を描き、1回のメッセージで完結するプロンプトを3つ送りました。設定は Medium effort、Balanced permissions で、タスクごとに新しいチャットを使いました。

テスト1:NDVIを5クラスに分け、クラスごとの面積(ha)を出す

入力したのは次のプロンプトです。

Compute NDVI for this field from the latest cloud-free Sentinel-2 and class it in 5 classes with hectares per class

エージェントは STAC カタログを確認し、2026年11月6日のシーンもあるものの雲が多いことに触れたうえで、手作業の検証で使ったのと同じ2026年11月3日のシーン(タイルの雲量 1.65%)を選びました。10 m の B08 と B04 を取得してNDVIを計算し、5つの区間に分類してレイヤのスタイルを設定し、10 m のメートル単位のグリッドでクラスごとの面積を報告しました。

NDVIクラスAI Agent の報告私の独自の numpy 検証(同じ12,000ピクセル)差
-1 から < 00.76 ha0.76 ha0.0%
0 から < 0.223.85 ha23.84 ha< 0.1%
0.2 から < 0.49.27 ha9.27 ha0.0%
0.4 から < 0.68.70 ha8.69 ha0.1%
0.6 から 177.42 ha77.44 ha< 0.1%
有効面積の合計120.00 ha120.00 ha(ポリゴン 120.07 ha のうち)0.0%

エージェントが書き出したNDVIラスタをピクセルごとに比べると、参照値との平均絶対差は 5e-5 で、クラスラスタが私のものと異なったのは12,000ピクセル中4ピクセルでした。

120 ha の農地ポリゴンを赤から濃い緑までの5つのNDVIクラスで表示したQGISの画面。レイヤパネルにクラスごとの面積(ha)、右側の AI Agent パネルに2026年11月3日の Sentinel-2 の出典とクラスごとの面積が表示されている。
メッセージ1つで、エージェントは雲の多い11月6日の観測を避けて11月3日のシーンを使い、参照値の面積と0.1%以内で一致しました。

テスト2:15度を超える傾斜(プロジェクトにDEMがない状態で)

農地ポリゴンだけを読み込んだ新しいチャットで、次のように入力しました。

Show where slope is above 15 degrees on the farm layer

エージェントは Copernicus の 30 m DEM を取得し、度のまま傾斜を計算するのではなくメートル単位のグリッドに再投影して、2クラスのレイヤ(15 degrees or less を淡い黄色、above 15 degrees を赤)でスタイルを設定しました。報告は農地の 1,320 ピクセル中 331 ピクセルが15度超(25.08%、最大 29.15°)でした。同じ長方形で私が UTM に変換してネイティブの Slope で計算した参照値は、1,360 ピクセル中 341 ピクセル(25.07%、最大 29.29°)で、差は 0.01 ポイントでした。

OpenStreetMap の上に農地ポリゴンを表示し、15度を超える傾斜を赤いセルで示したQGISの地図。右側の AI Agent のチャットパネルが、30 m の Copernicus DEM から農地の1,320ピクセル中331ピクセルがしきい値を超え、最大29.1度であると報告している。
エージェントはしきい値処理の前に Copernicus DEM をメートル単位のグリッドに変換し、参照値との差を0.01ポイント以内に収めました。

テスト3:それでもエージェントを確認すべき点

3つ目のチャットでは、次のように頼みました。

Mask out everything with NDVI below 0.3 on the farm layer and tell me the mean NDVI of what is left

このプロンプトには「cloud-free」も「latest」も書いていない点に注意してください。エージェントは 0 マスクの落とし穴を避け、マスクしたピクセルすべてに nodata の -9999 を書き込み、残った 2,277 ピクセルでNDVIの平均 0.552 を返しました。出力ファイルの平均は 0.5515、同じシーンと同じ条件で私が計算した値は 0.5513 でした。

しかし、エージェントが取得したのは2026年10月27日の Sentinel-2 シーンで、この日は農地の 80.5%(Scene Classification バンドで 12,000 ピクセル中 9,656 ピクセル)が雲、雲の影、巻雲に覆われていました。回答の中で日付は示していましたが、0.552 が農地のうち晴れていた5分の1だけの値だとは一言も触れませんでした。晴れていた11月3日のシーンで同じ条件を使うと、8,785ピクセルで平均は 0.766 になります。

私の目安はこうです。ラスタ計算機を手で使う場合も、QGIS の AI エコシステムのエージェントに頼む場合も、集計値を信じる前に必ずシーンの日付を確認し、トゥルーカラーか SCL の雲バンドを読み込んでください。

測定方法 すべてのテストは2026年11月7日、macOS 上の QGIS 3.44.15-Solothurn(GDAL 3.13.3、numpy 2.5.2)で、ブラジル、ミナスジェライス州マシャードの南にある 5 km × 5 km の範囲(EPSG:32723、E 402000-407000、N 7591000-7596000)を対象に実施しました。使ったのは Earth Search の Sentinel-2 L2A シーン S2A_23KLR_20261103_0_L2A(テスト3では2026年10月27日のシーン)と、Copernicus GLO-30 のタイル S22_00_W046_00 です。手作業の検証と、エージェントのテスト1とテスト2の成功基準は、ラスタ計算を実行する前に書きました。テスト3の基準は、テスト1とテスト2の結果を見たあとに書きました。参照グリッドは QGIS の外で 64ビット浮動小数点の numpy により計算しました。AI Agent 1.9.4 は Medium effort と Balanced permissions で、チャットごとに1メッセージで使いました。1シーン1地点の検証は単一事例のベンチマークであり、複数のベースラインにわたる統計的な調査ではありません。

よくある質問

QGISでNDVIがすべて0、-1、1になるのはなぜですか?

GDAL ラスタ計算機で整数の出力型(Int16 または Byte)を指定したためです。-1 から 1 の間の小数がすべて -1、0、1 に丸められます(検証では99.99%のピクセル)。出力型を Float32 のままにするか、自動的に Float32 で出力する上部メニューの Raster > Raster Calculator を使ってください。

QGISのラスタ計算機が「An error occurred while performing the calculation」で失敗し、nodataを出力するのはなぜですか?

式の中の "layer@band" の名前が、読み込まれているレイヤやバンド番号と一致していません(たとえば単一バンドのファイルに "B04@2" と入力した場合や、削除したレイヤを参照している場合)。式の入力欄の下にある Expression valid は構文を確認するだけで、バンドが存在するかどうかは確認しません。Raster Bands の一覧で各バンドをダブルクリックして入れ直してください。

Raster > Raster Calculator と Processing の GDAL Raster Calculator の違いは何ですか?

Raster > Raster Calculator(と Processing のネイティブの Raster calculator)は、QGIS 独自のパーサで "layer@band" の名前を使い、常に浮動小数点で計算します。GDAL Raster calculator(gdal_calc.py)は文字変数(A、B)を使い、入力バンドのデータ型で numpy の計算を行います。そのため符号なし16ビット整数のバンドを引き算すると、A.astype(numpy.float32) で型を変換しない限り、負の数が 65,536 で折り返されます。

QGISのラスタ計算機でIF条件を書いたり、値をnodataにしたりするにはどうすればよいですか?

if("ndvi@1" > 0.3, "ndvi@1", 0) と書けば、0.3 以下の値を 0 に置き換えられます。除外したピクセルを本当の nodata にして、レイヤの平均を下げないようにしたい場合は、代わりに条件で割ります。"ndvi@1" / ("ndvi@1" > 0.3) です。条件が偽(0)の箇所では、ゼロ除算により nodata が書き込まれます。

AI Agentを無料で試す

QGISでの作業は、頼むだけで完了

AI Agentが、あなたのQGISプロジェクト上で、指示したタスクを実行します。無料、カード不要。

AI Agentを無料で試す
作成者Yvann Barbot
·8 min read