ファジー メンバーシップ(Fuzzy Membership) (Spatial Analyst)
サマリ
指定したファジー アルゴリズムに基づいて、入力ラスタの集合におけるメンバーシップの強さを表す 0 ~ 1 のスケールに変換します。
1 の値はファジー セット内での完全なメンバーシップを示し、メンバーシップが 0 に下がると、ファジー セットのメンバーでないことを示します。
使用法
-
このツールは、カテゴリー分類されたデータに対して評価値を与えません。分類データをファジー オーバーレイ解析に含めるには、事前処理が必要です。モデルを作成するか、次のジオプロセシング ツールを実行できます。最初に、[再分類(Reclassify)] ツールを使用して、値の新しい範囲(1 ~ 100 など)を提供します。次に、[Divide] を使用して、結果をファクタ(100 など)で除算し、出力値が 0.0 ~ 1.0 になるように正規化します。
拡散は、ファジー メンバーシップ値が 1 から 0 に減少する速さを決定します。値が大きいほど、中間値点付近のファジー化が急激になります。あるいは、拡散が小さくなるほど、ファジー メンバーシップはゆっくりと 0 に近づきます。適切な拡散値を選択するのは、どこまでの範囲の値が明瞭かによって変わる主観的なプロセスです。[Gaussian] と [近] の場合、デフォルト値 0.1 が適切な開始点です。通常、値はそれぞれ 0.01 ~ 1 と 0.001 ~ 1 の範囲内で変化します。[小] および [大] の場合、デフォルト値 5 が適切な開始点です。通常、値は 1 ~ 10 で変化します。
-
指定した集合のメンバーに確実に属する入力値がない場合があります。言い換えると、いずれの入力値もファジー メンバーシップが 1 ではない場合です。この場合、新しいスケールを反映するように、ファジー メンバーシップの値を再スケールすることができます。たとえば、入力値の最も高いメンバーシップが .75 の場合、ファジー メンバーシップの各値に 0.75 を乗算して、新しいスケールを設定できます。
-
実装されているヘッジは、[大(Very)] と [中(Somewhat)] です。[大(Very)] は濃度としても知られており、ファジー メンバーシップ関数の二乗として定義されます。[中(Somewhat)] はディレーションあるいは「多少」として知られており、ファジー メンバーシップ関数の平方根です。[大(Very)] および [中(Somewhat)] のヘッジによって、ファジー メンバーシップ関数はそれぞれ減少および増加します。
-
[小] および [大] のメンバーシップ関数では、負の値は使用できません。
-
[リニア] のメンバーシップ関数の場合、入力ラスタは順序付きデータである必要があります。変換のために、最小値を最大値より小さくして傾斜角を正にしたり、最小値を最大値より大きくして傾斜角を負にしたりできます。
最小値が最大値より小さい場合、正の傾斜角の関数が変換に使用されます。最小値が最大値より大きい場合、負の傾斜角の関数が使用されます。
構文
パラメータ | 説明 | データ タイプ |
in_raster |
値が 0 ~ 1 にスケーリングされる入力ラスタ。 | Raster Layer |
fuzzy_function (オプション) |
入力ラスタのファジー化に使用するアルゴリズムを指定します。 ファジー クラスは、メンバーシップのタイプを指定するために使用されます。 メンバーシップ クラスのタイプ: メンバーシップ クラスの形式は以下のとおりです。
| Fuzzy function |
hedge (オプション) |
ヘッジを定義すると、ファジー セットの意味を変更するファジー メンバーシップの値が増加または減少します。ヘッジは、条件または重要な属性を制御するのに役立ちます。
| String |
戻り値
名前 | 説明 | データ タイプ |
out_raster |
出力は、値が 0 ~ 1 の浮動小数点ラスタになります。 | Raster |
コードのサンプル
次の例では、[Gaussian] の関数を使用して、ファジー メンバーシップ ラスタを作成しています。中間点(1,200 フィート)に近い標高値には、高いメンバーシップ値が与えられています。
import arcpy
from arcpy.sa import *
from arcpy import env
env.workspace = "c:/sapyexamples/data"
outFzyMember = FuzzyMembership("elevation", FuzzyGaussian(1200, 0.06))
outFzyMember.save("c:/sapyexamples/fzymemb")
次の例では、[Gaussian] の関数と拡散 0.4 を使用して、ファジー メンバーシップ ラスタを作成しています。中間点(1,000 フィート)に近い標高値には、高いメンバーシップ値が与えられています。
# Name: FuzzyMembership_Ex_02.py
# Description: Scales input raster data into values ranging from zero to one
# indicating the strength of a membership in a set.
# Requirements: Spatial Analyst Extension
# 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 FuzzyGaussian algorithm object
midpoint = 1000
spread = 0.4
myFuzzyAlgorithm = FuzzyGaussian(midpoint, spread)
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute FuzzyMembership
outFuzzyMember = FuzzyMembership(inRaster, myFuzzyAlgorithm)
# Save the output
outFuzzyMember.save("c:/sapyexamples/fzymemb2")