Outdated version of the documentation. Find the latest one here.

17.10. ラスタ電卓。無データ値

ノート

このレッスンでは、ラスタレイヤの上にいくつかの操作を実行するために、ラスタ計算機を使用する方法について説明します。我々はまた、全く何を説明しません - データ値とどのように計算し、他のアルゴリズムは、それらに対処します

ラスタ電卓は、あなたが見つける最も強力なアルゴリズムの一つです。それはすぐにあなたのツールボックスの重要な一部となります多くの異なる計算、および1のために使用することができ、非常に柔軟で汎用性の高いアルゴリズムです。

このレッスンでは、それらのほとんどはかなり単純、ラスタ電卓で、いくつかの計算を実行します。これは、私たちはそれを使用する方法を見て、それはそれを見つけるかもしれないいくつかの特別な状況を扱う方法をできるようになります。それを理解することは、一般的にそれに適用される特定の技術を理解するためにも、電卓を使用して、いつ後で期待される結果を取得することが重要です。

このレッスンに対応するQGISプロジェクトを開き、あなたはそれがいくつかのラスタレイヤが含まれていることがわかります。

今すぐツールボックスを開き、ラスタ計算に対応するダイアログを開きます。

../../../_images/calculator_dialog.png

ノート

インターフェイスは、最近のバージョンで異なります。

ダイアログには、2つのパラメータが含まれています。

  • 層は、分析に使用します。これは、複数の入力、あなたが望むようあなたに多くの層を選択することができる意味です。右のボタンをクリックして - 手側と、あなたが表示されますダイアログで使用したいレイヤーを選択します。

  • 適用する式。式は、変数名として `` ...( ... 、B、C)アルファベット文字を使用して命名された上記パラメータで選択された層を使用するか、または G1、G2、G3。すなわち、式 ` A + 2 * b``が `` G1 + 2 * g2``と同じであり、第一層に第二層におけるプラス2倍の値を値の和を計算する、です。層の順序付けを使用すると、選択ダイアログに表示さと同じ順序です。

警告

電卓は、大文字と小文字が区別されます。

手始めに、メートルからフィートにDEMの単位を変更します。必要とする計算式は、次のいずれかです。

h' = h * 3.28084

式フィールド内のレイヤフィールドとタイプ `` * 3.28084``にDEMを選択します。

警告

英語以外のユーザーの場合:常に使用し、ありません「 『』。」。

アルゴリズムを実行するために*実行*をクリックしてください。あなたは、入力層の同じ外観を有する層を得るが、異なる値となります。私たちが使用した入力層は、そのすべてのセル内の有効な値を持っているので、最後のパラメータはまったく効果がありません。

それでは、* accflowの*層の上に、この時間を別の計算を実行してみましょう。この層は、積算流量、水文学的パラメータの値が含まれています。それの外部データ値 - それがないと、のみ所与流域の領域内でこれらの値を含んでいます。あなたが見ることができるように、レンダリングは、値が分散されている方法に起因する非常に有益ではありません。その流れの蓄積の対数を使用すると、はるかに有益な表現が得られます。私たちは、ラスタ計算機を使用していることを計算することができます。

のみ入力層として* accflow *レイヤーを選択し、再びアルゴリズムダイアログを開き、次の式を入力します。 ``ログ(a)の ``

ここであなたが得る層です。

../../../_images/log.png

データ - あなたは、与えられた点での層の価値を知っている私たちが作成したレイヤーを選択し、流域の外でポイントをクリックする* *特定するツールを選択した場合、あなたはそれがありません含まれていることがわかります値。

../../../_images/identify.png

次の演習のために我々は1つではなく、2つの層を使用しようとしている、と我々は唯一の第二の層で定義された流域内の有効な標高値とDEMを得ようとしています。電卓ダイアログを開き、入力層フィールドにプロジェクトの両方の層を選択します。対応するフィールドに次の式を入力します。

a/a * b

`` a``は、積算流量の層を意味する(リストに表示される最初のものであるため)と `` b``は、DEMを指します。外部データ値 - 私たちはここで、式の最初の部分にやっていると、流域内の1の値、およびなしで生じるであろう、それ自体で積算流量層を分割することです。データ値外部( DEM * NO_DATA = no_data`) - その後、我々は(` DEM * 1 = DEM`)なし流域内のそれらの細胞の上昇値を取得するために、DEMを掛け

結果のレイヤーはこれです。

../../../_images/masked.png

この技術は、ラスタレイヤ内*マスク*値に頻繁に使用される、あなたがラスタレイヤによって使用される任意の矩形領域を他の領域のための計算を実行したいときはいつでも有用です。例えば、ラスタレイヤの標高ヒストグラムはあまり意味を持ちません。それは代わりに(上記彼の場合のように)流域に対応する値のみを使用して計算される場合、我々が得た結果は、実際には流域の構成についての情報を与える意味のあるものです。

データ値とそれらがどのように処理されます - 私たちは離れていないから、実行してきたこのアルゴリズムについて他の興味深いものがあります。あなたは私たちが掛けている層のエクステントを見ている場合(あなたは二重のそれを行うことができます - 目次の層の自分の名前をクリックすると、そのプロパティを見て)、あなたはそうでないことがわかりますフロー蓄積層によって覆われた範囲が完全DEMの範囲ことが小さいので、同じ。

それは、これらの層が一致しないことを意味し、彼らは、1つのまたは両方の層をリサンプリングすることにより、それらのサイズとエクステントを均質化せずに直接掛けすることができません。しかし、我々は何もしませんでした。QGISは、このような状況の世話をし、必要なときに自動的に入力層をリサンプリング。出力範囲は、入力層から計算された最小の被覆範囲、およびそれらcellsizesの最小セルサイズです。

この場合、(そしてほとんどの場合)、これは、所望の結果を生成しますが、彼らは結果に影響を与える可能性があるので、あなたは常に、行われている追加の操作に注意する必要があります。この動作が希望されない場合があります場合には、手動のリサンプリングは、事前に適用されるべきです。複数のラスタレイヤを使用した場合、後の章では、我々は、アルゴリズムの動作の詳細が表示されます。

別のマスキングの練習でこのレッスンを終了してみましょう。当社は、1000年と1500メートルの間に標高とすべての分野での傾きを計算しようとしています。

この場合は、マスクとして使用するレイヤーはありませんが、電卓を使用して作成できます。

唯一の入力層と次式のようにDEMを使用して計算を実行します

ifelse(abs(a-1250) < 250, 1, 0/0)

見ることができるように、我々は簡単な代数演算を行うためだけでなく、計算機を使用することができ、また上記のような条件文を含むより複雑な計算を実行します。

結果は、我々が仕事をしたい範囲内の1の値、およびそれ以外の細胞で無データを持っています。

../../../_images/elevation_mask.png

無データ値が0/0の式から来ています。それは未定の値であるので、SAGAは、実際にはデータ値として扱うNaN(非数)の値を、追加します。セルのデータ値がある - この小さなトリックを使えば、ノー何を知らなくても、無データ値を設定することができます。

今、あなただけのプロジェクトに含まスロープ層を掛けする必要があり、あなたは望ましい結果を得るでしょう。

すべてのことは、電卓で、単一の操作で行うことができます。これは読者の練習として残しておきます。