関数によるリスケール (Rescale by Function) (Spatial Analyst)

Spatial Analyst のライセンスで利用可能。

概要

選択された変換関数を適用し、得られた値を指定された連続的評価スケールに変換することによって、入力ラスター値のスケールを変更します。

関数によるリスケール (Rescale by Function) の詳細

使用法

  • このツールを使用する主なメリットは、以下に挙げるように、入力値の再分類を他の再分類方法よりも高度に制御できることです。

    • このツールは、連続的な入力値をカテゴリにグループ化する必要がなく、それらの値を受け取って直接処理できます。
    • 連続的な非線形および線形関数を入力データに適用できます。
    • 入力値を、連続的な浮動小数点数の評価スケールに変換します。

  • このツールの基本用語を確認しておくと、以下の説明の理解に役立ちます。

  • 入力データの連続的なスケールへの変換は、概念的には以下の 2 つのステップで処理されます。

    1. 指定された関数を入力ラスター値に適用します。
    2. 関数値を、指定された評価スケールに線形変換します。上昇する評価スケールでは、関数の最小値と最大値は、指定した評価スケールの最小値 ([起点スケール]) と最大値 ([終点スケール]) にそれぞれ設定されます。ただし、評価スケールを反転し、下降するスケールに変更することもできます。

  • 以下の図で、Power 関数のグラフの例を示し、変換関数の適用に関連する一般的な概念と用語を紹介します。

    指数を 2、評価スケールを 1 〜 10 に設定した Power 関数のプロットの例
    指数を 2、評価スケールを 1 ~ 10 に設定した Power 関数のプロットの例

    この例の入力データの範囲は、3,000 ~ 5,000 です。入力ラスターの最小値を [下限] に設定し、最大値を [上限] に設定しています (X 軸に示しています)。Power 関数は、各閾値の間に制約され (合わせられ) ます。形状制御パラメーター ([入力シフト][指数] など) は、関数の形状を定義します。これによって、関数が開始する位置および上昇する傾きを制御できます。Power 関数から得られた関数値は、その後、評価スケールに線形変換され、出力値に割り当てられます。上のグラフでは、[起点スケール] パラメーターと [終点スケール] パラメーターを使用して、1 〜 10 の評価スケールが定義されています (Y 軸に示しています)。

  • デフォルトでは、[入力ラスター] の最小値は [最小閾値] に割り当てられ、最大値は [最大閾値] に割り当てられます。

  • デフォルトでは、指定した関数は、可能であれば [入力ラスター] を使用して最小閾値と最大閾値の間に制約され (合わせられ) ます。関数を最小閾値と最大閾値の間に合わせる方法は、以下の方法で使用される特定の変換関数に応じて変わります。

    • Linear 関数と Symmetrical Linear 関数は、これらの関数の最小値と最大値が、[入力ラスター] の最小値 (最小閾値) と最大値 (最大閾値) に設定されるため、定義に従って合わせられます。
    • 合わせられた Exponential 関数と Logarithm 関数が、[入力ラスター] の値に適用されます。
    • Gaussian、Near、Small、MS Small、Large、MS Large、Power、Logistic Growth、および Logistic Decay の各関数を最適に合わせるために、できるだけ多くのパラメーター (たとえば、[中点][ファクター][入力シフト]) が [入力ラスター] から生成されます。

  • [最小閾値][最大閾値] の値を変更すると、以下の相互関係が適用されます。

    1. 入力セルが [最小閾値] よりも小さい値を持つ場合、このセルは、[最小閾値に満たない場合の出力スケール] パラメーターに設定した値に割り当てられます。
    2. 入力セルが [最大閾値] よりも大きい値を持つ場合、このセルは、[最大閾値を超える場合の出力スケール] パラメーターに設定した値に割り当てられます。
    3. すべてのセルの値 ([最小閾値][最大閾値] を含む) は、関数値 (f(x)) に基づいて、対応する評価スケールに割り当てられます。状況によっては、形状制御パラメーター (たとえば、[拡散][指数]) を変更した場合、出力ラスターのどのセルも [起点スケール][終点スケール] の値に割り当てることができません。

  • デフォルトでは、関数の形状を定義するパラメーター (たとえば、[拡散][ベース ファクター]) は、関数が [入力ラスター] の最小値と最大値に最もよく合う (制約される) ように計算されます。ただし、形状制御パラメーターを変更して、関数が基準値と現象の優先度との相互関係に合うように、調整することができます。最大閾値値および最小閾値値と共に、形状制御パラメーターに値を指定した場合、それによって得られた関数が、[入力ラスター] の値のリスケールに使用されます。合わせられた関数は、使用されません。

  • [起点スケール][終点スケール] は、連続的な評価スケールの最小値と最大値を定義します。関数の最小値は、[起点スケール] に設定した値に割り当てられ、関数の最大値は [終点スケール] に設定した値に割り当てられます。中間のすべての関数値は、適切な評価値に割り当てられます。

  • 評価スケールは、小さい値から大きい値まで (たとえば、1 〜 10)、または大きい値から小さい値まで (たとえば、10 〜 1) の範囲に設定できます。

  • [最小閾値に満たない場合の出力スケール] の値は、閾値に満たない入力値を持つすべてのセルに割り当てられ、[最大閾値を超える場合の出力スケール] の値は、閾値を超える入力値を持つすべてのセルに割り当てられます。これらの値は、最終的な出力ラスターに直接割り当てられ、これらのセルは、変換関数の処理で考慮されません。

  • ツール ダイアログ ボックスでは、通常、[最小閾値] または [最大閾値] を変更した場合、形状制御パラメーター (関数の形状を定義するパラメーター。たとえば、[拡散][ベース ファクター]) が自動的に再計算されます。ただし、形状制御パラメーターを変更した場合、[最小閾値][最大閾値] の値は自動的に変更されません。その後、[最小閾値] または [最大閾値] を変更しても、変更した形状制御パラメーター (および、関連する他の形状制御パラメーター) の設定は値を維持し、再計算されません。

  • 関数の形状制御パラメーター (たとえば、[拡散][ベース ファクター])、および最小閾値と最大閾値は、現在の処理の範囲セル サイズ、およびスナップ対象ラスターの各環境設定に対して計算された統計情報に基づきます。これらが何も設定されていない場合、入力ラスターの全範囲に関連する統計情報が使用されます。

  • ツール ダイアログ ボックスでは、入力ラスターに、形状制御パラメーターを計算するため、または閾値を決定するための有効な統計情報がない場合、これらのパラメーターは空になり、警告メッセージが表示されます。現在の環境設定に対する統計情報を再計算してパラメーターを設定するには、[統計情報の計算] ボタンをクリックする必要があります。デフォルトでは、[最小閾値] は処理範囲内の最小値に設定され、[最大閾値] は最大値に設定され、形状制御パラメーターの値は適切に決定されます。以下の条件では、有効な統計情報がない場合があります。

    • 環境の処理範囲、セルサイズ、またはスナップ対象ラスターが、ツール ダイアログ ボックスを起動する前に設定されている。
    • 入力ラスターに統計情報がない。

  • ツール ダイアログ ボックスで、入力ラスターを入力して関数を指定した後に、環境の処理範囲、セルサイズ、またはスナップ対象ラスターを変更した場合、関数パラメーターが空 (パラメーターに値がない) に設定されることがあります。パラメーターを再設定して新しい範囲の値を表示するには、[統計情報の計算] ボタンをクリックします。[最小閾値][最大閾値]、または形状制御パラメーターを、値を入力して変更した場合、ツールは、これらのパラメーターが変更された状態に従います。処理範囲を変更した場合、[統計情報の計算] ボタンのクリック後、これらのパラメーターは指定した値のままになります。

  • 複数の関数を、入力ラスターの異なる範囲に適用できます。これを行うには、[関数によるリスケール (Rescale by Function)] ツールを複数回実行して各関数を連結します。まず、ある変換関数を指定して、入力値の特定の範囲に対して実行し、次に、別の変換関数を指定して、入力値の別の範囲に対して再実行します。その後、得られた出力ラスターを結合します。以下に例を示します。

    1. Liner 関数を 1,500 〜 3,200 の範囲の入力値に適用して [関数によるリスケール (Rescale by Function)] を実行し、閾値を超えるか下回る値を 0 に設定します。
    2. 同じ入力ラスターに対してもう一度ツールを実行します。このとき、3,200 よりも大きい 5,000 までの値に Exponential 関数を適用し、閾値を超えるか下回る値を 0 に設定します。
    3. 得られた 2 つの出力ラスターを、[Plus] ツールを使用して足し合わせます。

  • このツールに適用されるジオプロセシング環境の詳細については、「解析環境と Spatial Analyst」をご参照ください。

構文

RescaleByFunction(in_raster, {transformation_function}, {from_scale}, {to_scale})
パラメーター説明データ タイプ
in_raster

リスケール対象の入力ラスター。

Raster Layer
transformation_function
(オプション)

入力ラスターを変換する連続的な関数を指定します。

変換関数クラスを使用して変換関数のタイプを指定します。

変換関数クラスのタイプは次のとおりです。

どの変換関数を使用するかは、どの関数が、入力値と現象の優先度の相互関係を最もよく表すかによって決まります。最小閾値と最大閾値が出力値にどう影響するかをよく理解するために、閾値を制御するパラメーターの詳細について、「出力値に対する最大閾値と最小閾値の相互関係」をご参照ください。

変換関数クラスの形式は以下のとおりです。

  • TfExponential({shift}, {baseFactor}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfGaussian({midpoint}, {spread}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfLarge({midpoint}, {spread}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfLinear({minimum}, {maximum}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfLogarithm({shift}, {factor}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfLogisticDecay({minimum}, {maximum}, {yInterceptPercent}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfLogisticGrowth({minimum}, {maximum}, {yInterceptPercent}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfMSLarge({meanMultiplier}, {STDMultiplier}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfMSSmall({meanMultiplier}, {STDMultiplier}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfNear({midpoint}, {spread}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfPower({shift}, {exponent}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfSmall({midpoint}, {spread}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})
  • TfSymmetricLinear({minimum}, {maximum}, {lowerThreshold}, {valueBelowThreshold}, {upperThreshold}, {valueAboveThreshold})

デフォルトの変換関数は、TfMSSmall です。

各変換関数のパラメーターのデフォルトは、以下のとおりです。

  • baseFactor (TfExponential 用) は、入力ラスターから生成されます。
  • exponent (TfPower 用) は、入力ラスターから生成されます。
  • factor (TfLogarithm 用) は、入力ラスターから生成されます。
  • lowerThreshold (すべての関数用) は、入力ラスターの最小値に設定されます。
  • maximum (TfLinear、TfLogisticDecay、TfLogisticGrowth、および TfSymmetricLinear 用) は、入力ラスターの最大値に設定されます。
  • meanMultiplier (TfMSLarge および TfMSSmall 用) は 1 です。
  • midpoint (TfGaussian および TfNear 用) は、入力ラスターの値の範囲の中点に設定されます。
  • midpoint (TfLarge および TfSmall 用) は、入力ラスターの平均に設定されます。
  • minimum (TfLinear、TfLogisticDecay、TfLogisticGrowth、および TfSymmetricLinear 用) は、入力ラスターの最小値に設定されます。
  • shift (TfExponential、TfLogarithm、および TfPower 用) は、入力ラスターから生成されます。
  • spread (TfGaussian および TfNear 用) は、入力ラスターから生成されます。
  • spread (TfLarge および TfSmall 用) は 5 です。
  • STDMultiplier (TfMSLarge および TFMSSmall 用) は 1 です。
  • upperThreshold (すべての関数用) は、入力ラスターの最大値に設定されます。
  • valueAboveThreshold (すべての関数用) は、to_scale の値に設定されます。
  • valueBelowThreshold (すべての関数用) は、from_scale の値に設定されます。
  • yInterceptPercent (TfLogisticDecay 用) は、99.0000 です。
  • yInterceptPercent (TfLogisticGrowth 用) は、1.0000 です。

Transformation function
from_scale
(オプション)

出力評価スケールの開始値。

from_scale の値を、to_scale の値と同じにすることはできません。from_scale は、to_scale よりも小さい値または大きい値にすることができます (たとえば、1 〜 10 または 10 〜 1)。

この値は正の値でなければならず、整数または倍精度にすることができます。

デフォルトは 1 です。

Double
to_scale
(オプション)

出力評価スケールの終了値。

to_scale の値を、from_scale の値と同じにすることはできません。to_scale は、from_scale よりも小さい値または大きい値にすることができます (たとえば、1 〜 10 または 10 〜 1)。

この値は正の値でなければならず、整数または倍精度にすることができます。

デフォルトは 10 です。

Double

戻り値

名前説明データ タイプ
out_raster

リスケールされた出力ラスター。

出力は、評価値の範囲が from_scaleto_scale の浮動小数点ラスターになります。

Raster

コードのサンプル

RescaleByFunction (関数によるリスケール) の例 1 (Python ウィンドウ)

この例では、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")
RescaleByFunction (関数によるリスケール) の例 2 (スタンドアロン スクリプト)

標高の低い位置が標高の高い位置よりも非常に優先度が高い標高データに対して、このツールを使用する方法を示します。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

# Execute RescaleByFunction
outRescale = RescaleByFunction(inRaster, myTfFunction, fromscale, toscale)

# Save the output
outRescale.save("c:/sapyexamples/rescaletfms2")

ライセンス情報

  • Basic: 次のものが必要 Spatial Analyst
  • Standard: 次のものが必要 Spatial Analyst
  • Advanced: 次のものが必要 Spatial Analyst

関連トピック