ピクセル値が約3000〜-0.0003のDEMラスターがあります。値が0で、より小さな(<= 0)のすべてのピクセルを「nodata」に設定する必要があります(後のラスター計算とファイルサイズの削減のため)。
これは、ラスター計算機(ピクセルの値を0未満に「nodata」に設定)または再分類(ピクセルの値を0未満に「nodata」に設定し、他のすべての値を保持)のタスクのようですノーハウ。
ピクセル値が約3000〜-0.0003のDEMラスターがあります。値が0で、より小さな(<= 0)のすべてのピクセルを「nodata」に設定する必要があります(後のラスター計算とファイルサイズの削減のため)。
これは、ラスター計算機(ピクセルの値を0未満に「nodata」に設定)または再分類(ピクセルの値を0未満に「nodata」に設定し、他のすべての値を保持)のタスクのようですノーハウ。
回答:
ラスター計算機のQGISで1ステップで実行できます。
QGIS3では、「x」という名前のラスターレイヤーに対して、次の式を使用します。
(("x">0)*"x") / (("x">0)*1 + ("x"<=0)*0)
このトリックは、ラスター値x> 0を比率x / 1 = xにマッピングし、ラスター値x <= 0を比率0/0 = NaNにマッピングします。このNaNは、ラスターが4バイトのfloatの場合、FLOAT_MIN(別名-3.402832 ... e + 38)としてレンダリングされます。
奇妙なことに、この質問はしばらく前に行われたようで、ほとんどの回答者は(今日のGoogleのクイック検索からわかるように)単一のステップで行うことはできないと言っています。もちろん、このようにハッキングする必要はありません。QGISのドキュメントの方が良いかもしれません。
ドミニクに感謝します。私の最初の答えは、(式QGIS 2.8.3のための正しくない"myraster@1" > 0
戻り0または非1 NODATAの入力、NODATAが返す入力NODATA)。
次QGIS ラスタ演算 QGISので、式は、十分な(「myraster」という名前のラスターレイヤー)でなければなりませんラスタ演算を
する条件を満たさないすべてのピクセルに設定NODATAを:
( "myraster @ 1"> 0)* "myraster @ 1"
以下のソリューションはhttps://docs.qgis.org/2.8/en/docs/training_manual/processing/no_data.htmlに基づいており、QGIS 2.8.3 with SAGA 2.1.2で動作します。
QGIS Processingで、SAGA Raster計算機を使用し、Formulaに以下を入力します。
ifelse(g1=0, 0/0, ifelse(g1<0, 0/0, g1))
または
ifelse(a=0, 0/0, ifelse(a<0, 0/0, a))
これにより、0以下のすべての値がnodata(0/0)に変わります。
レイヤーを保存し(右クリックして、名前を付けて保存...)、nodataの範囲を指定することもできます。これにより、元のnodataが保持され、指定された値の範囲に対して新しいnodataが作成されます。
同様の問題がありましたが、両方の値がラスター内のデータなしと既存のデータなしの値に変換したかったのです。
私は助けを求めてこのページに来ましたが、ここでのアプローチには注意点があると思います。@underdarkおよび@Michaのメソッドは、ラスターに既存のデータなしの値がない場合にのみ機能するようです。
これを回避するには、データなしの値と、データなしに変換する値の両方を一貫した数値に変換する必要があります。その後、@ underdarkの2番目のステップを使用してもかまいません。
これを行うには、Processing Toolbox> Reclassify Grid Values(SAGA)を使用して、値とデータなしの値を共通の数値(-999など)に同時に変換します。具体的には、メソッド「range」を使用して範囲を指定します。次に、データなしの値を置換する際に、この同じ値(たとえば-999)を選択します。他の値のチェックを外します。これは、単一の値の変更またはより複雑な変更に対しても機能します。
次に、@ underdarkの方法に従い、Raster> Conversion> Translateを使用してラスターを保存し、no-dataにチェックマークを付けて、使用した値(例:-999)を入力します。