関数によるリスケール(Rescale by Function) (Spatial Analyst)
サマリ
選択された変換関数を適用し、得られた値を指定された連続的評価スケールに変換することによって、入力ラスタ値のスケールを変更します。
使用法
-
このツールを使用する主なメリットは、以下に挙げるように、入力値の再分類を他の再分類方法よりも高度に制御できることです。
- このツールは、連続的な入力値をカテゴリにグループ化する必要がなく、それらの値を受け取って直接処理できます。
- 連続的な非線形および線形関数を入力データに適用できます。
- 入力値を、連続的な浮動小数点数の評価スケールに変換します。
-
このツールの基本用語を確認しておくと、以下の説明の理解に役立ちます。
-
入力データの連続的なスケールへの変換は、概念的には以下の 2 つのステップで処理されます。
- 指定された関数を入力ラスタ値に適用します。
- 関数値を、指定された評価スケールに線形変換します。上昇する評価スケールでは、関数の最小値と最大値は、指定した評価スケールの最小値([起点スケール])と最大値([終点スケール])にそれぞれ設定されます。ただし、評価スケールを反転し、下降するスケールに変更することもできます。
-
以下の図で、Power 関数のグラフの例を示し、変換関数の適用に関連する一般的な概念と用語を紹介します。
この例の入力データの範囲は、3,000 ~ 5,000 です。入力ラスタの最小値を [最小閾値] に設定しており、最大値を [最大閾値] に設定しています(X 軸に示されています)。Power 関数は、各閾値の間に制約され(合わせられ)ます。形状制御パラメータ([入力シフト]、[指数] など)は、関数の形状を定義します。これによって、関数が開始する位置および上昇する傾きを制御できます。Power 関数から得られた関数値は、その後、評価スケールに線形変換され、出力値に割り当てられます。上のグラフでは、[起点スケール] パラメータと [終点スケール] パラメータを使用して、1 〜 10 の評価スケールが定義されています(Y 軸に示しています)。
-
デフォルトでは、[入力ラスタ] の最小値は [最小閾値] に割り当てられ、最大値は [最大閾値] に割り当てられます。
-
デフォルトでは、指定した関数は、可能であれば [入力ラスタ] を使用して最小閾値と最大閾値の間に制約され(合わせられ)ます。関数を最小閾値と最大閾値の間に合わせる方法は、以下の方法で使用される特定の変換関数に応じて変わります。
- Linear 関数と Symmetrical Linear 関数は、これらの関数の最小値と最大値が、[入力ラスタ] の最小値(最小閾値)と最大値(最大閾値)に設定されるため、定義に従って合わせられます。
- 合わせられた Exponential 関数と Logarithm 関数が、[入力ラスタ] の値に適用されます。
- Gaussian、Near、Small、MSSmall、Large、MSLarge、Power、Logistic Growth、および Logistic Decay の各関数を最適に合わせるために、できるだけ多くのパラメータ(たとえば、[中点]、[ファクタ]、[入力シフト])が [入力ラスタ] から生成されます。
-
[最小閾値] と [最大閾値] の値を変更すると、以下の相互関係が適用されます。
- 入力セルが [最小閾値] よりも小さい値を持つ場合、このセルは、[最小閾値に満たない値] パラメータに設定した値に割り当てられます。
- 入力セルが [最大閾値] よりも大きい値を持つ場合、このセルは、[最大閾値を超える値] パラメータに設定した値に割り当てられます。
- すべてのセルの値([最小閾値] 〜 [最大閾値] を含む)は、関数値(f(x))に基づいて、対応する評価スケールに割り当てられます。状況によっては、形状制御パラメータ(たとえば、[拡散]、[指数])を変更した場合、出力ラスタのどのセルも [起点スケール] や [終点スケール] の値に割り当てることができません。
-
デフォルトでは、関数の形状を定義するパラメータ(たとえば、[拡散]、[ベース ファクタ])は、関数が [入力ラスタ] の最小値と最大値に最もよく合う(制約される)ように計算されます。ただし、形状制御パラメータを変更して、関数が基準値と現象の優先度との相互関係に合うように、調整することができます。最大閾値値および最小閾値値と共に、形状制御パラメータに値を指定した場合、それによって得られた関数が、[入力ラスタ] の値のリスケールに使用されます。合わせられた関数は、使用されません。
-
[起点スケール] と [終点スケール] は、連続的な評価スケールの最小値と最大値を定義します。関数の最小値は、[起点スケール] に設定した値に割り当てられ、関数の最大値は [終点スケール] に設定した値に割り当てられます。中間のすべての関数値は、適切な評価値に割り当てられます。
-
評価スケールは、小さい値から大きい値まで(たとえば、1 〜 10)、または大きい値から小さい値まで(たとえば、10 〜 1)の範囲に設定できます。
-
[最小閾値に満たない値] の値は、閾値に満たない入力値を持つすべてのセルに割り当てられ、[最大閾値を超える値] の値は、閾値を超える入力値を持つすべてのセルに割り当てられます。これらの値は、最終的な出力ラスタに直接割り当てられ、これらのセルは、変換関数の処理で考慮されません。
-
ツール ダイアログ ボックスでは、通常、[最小閾値] または [最大閾値] を変更した場合、形状制御パラメータ(関数の形状を定義するパラメータ。たとえば、[拡散] や [ベース ファクタ])が自動的に再計算されます。ただし、形状制御パラメータを変更した場合、[最小閾値] と [最大閾値] の値は自動的に変更されません。その後、[最小閾値] または [最大閾値] を変更しても、変更した形状制御パラメータ(および、関連する他の形状制御パラメータ)の設定は値を維持し、再計算されません。
-
関数の形状制御パラメータ(たとえば、[拡散] や [ベース ファクタ])、および最小閾値と最大閾値は、現在の処理の範囲、セル サイズ、およびスナップ対象ラスタの各環境設定に対して計算された統計情報に基づきます。これらが何も設定されていない場合、入力ラスタの全範囲に関連する統計情報が使用されます。
-
ツール ダイアログ ボックスでは、入力ラスタに、形状制御パラメータを計算するため、または閾値を決定するための有効な統計情報がない場合、これらのパラメータは空になり、警告メッセージが表示されます。現在の環境設定に対する統計情報を再計算してパラメータを設定するには、[統計情報の計算] ボタンをクリックする必要があります。デフォルトでは、[最小閾値] は処理範囲内の最小値に設定され、[最大閾値] は最大値に設定され、形状制御パラメータの値は適切に決定されます。以下の条件では、有効な統計情報がない場合があります。
- 環境の処理範囲、セルサイズ、またはスナップ対象ラスタが、ツール ダイアログ ボックスを起動する前に設定されている。
- 入力ラスタに統計情報がない。
-
ツール ダイアログ ボックスで、入力ラスタを入力して関数を指定した後に、環境の処理範囲、セルサイズ、またはスナップ対象ラスタを変更した場合、関数パラメータが空(パラメータに値がない)に設定されることがあります。パラメータを再設定して新しい範囲の値を表示するには、[統計情報の計算] ボタンをクリックします。[最小閾値]、[最大閾値]、または形状制御パラメータを、値を入力して変更した場合、ツールは、これらのパラメータが変更された状態に従います。処理範囲を変更した場合、[統計情報の計算] ボタンのクリック後、これらのパラメータは指定した値のままになります。
-
複数の関数を、入力ラスタの異なる範囲に適用できます。これを行うには、[関数によるリスケール(Rescale by Function)] ツールを複数回実行して各関数を連結します。まず、ある変換関数を指定して、入力値の特定の範囲に対して実行し、次に、別の変換関数を指定して、入力値の別の範囲に対して再実行します。その後、得られた出力ラスタを結合します。以下に例を示します。
- Liner 関数を 1,500 〜 3,200 の範囲の入力値に適用して [関数によるリスケール(Rescale by Function)] を実行し、閾値を超えるか下回る値を 0 に設定します。
- 同じ入力ラスタに対してもう一度ツールを実行します。このとき、3,200 よりも大きい 5,000 までの値に Exponential 関数を適用し、閾値を超えるか下回る値を 0 に設定します。
- 得られた 2 つの出力ラスタを、[Plus] ツールを使用して足し合わせます。
構文
パラメータ | 説明 | データ タイプ |
in_raster |
リスケール対象の入力ラスタ。 | Raster Layer |
transformation_function (オプション) |
入力ラスタを変換する連続的な関数を指定します。 変換関数クラスを使用して変換関数のタイプを指定します。 変換関数クラスのタイプは次のとおりです。
どの変換関数を使用するかは、どの関数が、入力値と現象の優先度の相互関係を最もよく表すかによって決まります。最小閾値と最大閾値が出力値にどう影響するかをよく理解するために、閾値を制御するパラメータの詳細について、「出力値に対する最大閾値と最小閾値の相互関係」をご参照ください。 変換関数クラスの形式は以下のとおりです。
デフォルトの変換関数は、TfMSSmall です。 各変換関数のパラメータのデフォルトは、以下のとおりです。
| Transformation function |
from_scale (オプション) |
出力評価スケールの開始値。 from_scale の値を to_scale の値と同じにすることはできません。from_scale は、to_scale よりも小さい値または大きい値にすることができます(たとえば、1 ~ 10 または 10 ~ 1)。 この値は正の値でなければならず、整数または倍精度にすることができます。 デフォルトは 1 です。 | Double |
to_scale (オプション) |
出力評価スケールの終了値。 終点スケールの値を起点スケールの値と同じにすることはできません。終点スケールは、起点スケールよりも小さい値または大きい値にすることができます(たとえば、1 ~ 10 または 10 ~ 1)。 この値は正の値でなければならず、整数または倍精度にすることができます。 デフォルトは 10 です。 | Double |
戻り値
名前 | 説明 | データ タイプ |
out_raster |
リスケールされた出力ラスタ。 出力は、評価値の範囲が起点スケール ~ 終点スケールの浮動小数点ラスタになります。 | Raster |
コードのサンプル
この例では、MSSmall 関数を使用してスケールを変更された値を持つラスタを作成します。
import arcpy
from arcpy.sa import *
from arcpy import env
env.workspace = "c:/sapyexamples/data"
outRescale = RescaleByFunction("elevation", TfMSSmall(1.25, 1.5, "#", "#", 4000, "NoData"), 1, 10)
outRescale.save("c:/sapyexamples/rescaletfms1")
標高の低い位置が標高の高い位置よりも非常に優先度が高い標高データに対して、このツールを使用する方法を示します。4,000 メートルを超える位置は、NoData に設定されます。
# Name: TfMSSmall_Ex_02.py
# Description: Rescales input raster data using a MSSmall function and
# transforms the function values onto a specified evaluation scale.
# Requirements: Spatial Analyst Extension
# Author: esri
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRaster = "elevation"
# Create the TfMSSmall object
meanmult = 1.25
stdmult = 1.5
lowerthresh = "#"
valbelowthresh = "10"
upperthresh = 4000
valabovethresh = "NoData"
myTfFunction = TfMSSmall(meanmult, stdmult, lowerthresh, valbelowthresh, upperthresh, valabovethresh)
# Set evaluation scale
fromscale = 1
toscale = 10
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute RescaleByFunction
outRescale = RescaleByFunction(inRaster, myTfFunction, fromscale, toscale)
# Save the output
outRescale.save("c:/sapyexamples/rescaletfms2")