Spatial Analyst のライセンスで利用可能。
概要
ラスター内のセルを、隣接範囲内の最頻値セルに基づいて置換します。
図
使用法
[大多数フィルター (Majority Filter)] ツールは、置換を行うために、2 つの条件を満たす必要があります。1 つは、似た値を持つ隣接セルの数が十分に多いこと (すべてのセルの多数または半数) で、もう 1 つは、それらのセルがフィルター カーネルの中心の周りに隣接していることです。セルの空間接続性に関する 2 番目の条件により、セルによる空間パターンの改変が最小になります。
隣接数に 4 を使用すると、矩形の範囲のコーナーは維持されます。8 を使用すると、矩形の範囲のコーナーが滑らかになります。
隣接数に 8 を設定すると、隣接はエッジの共有として定義されます。隣接数に 4 を設定すると、隣接はコーナーの共有として定義されます。
[閾値の変更] に [HALF] が指定され、2 つの値が同数ある場合、処理セルの値がその一方と同じならば置換は行われません。[HALF] オプションでは、[MAJORITY] オプションよりも広範なフィルタリングが行われます。
隣接条件はエッジとコーナーのラスター セルで同じですが、[MAJORITY] と [HALF] のルールは異なっています。使用される隣接数が 4 の場合、置換するには、エッジまたはコーナーのセルには一致する隣接セルが必ず 2 つ必要です。隣接数が 8 の場合、コーナーのセルが変化するためには、隣接セルがすべて同じ値である必要があり、エッジのセルが変化するためには、エッジ沿いの 1 つのセルを含む 3 つの隣接セルが同じ値である必要があります。
[大多数フィルター (Majority Filter)] を数回実行すると、出力ラスターは安定化します (変化しなくなります)。
このツールに適用されるジオプロセシング環境の詳細については、「解析環境と Spatial Analyst」をご参照ください。
構文
MajorityFilter(in_raster, {number_neighbors}, {majority_definition})
パラメーター | 説明 | データ タイプ |
in_raster | 隣接範囲内の最頻値セルに基づいてフィルター処理される入力ラスター。 整数タイプでなければいけません。 | Raster Layer |
number_neighbors (オプション) | フィルターのカーネルで使用する近傍セルの数を決定します。
| String |
majority_definition (オプション) | 置換を行うために、同じ値を持つ必要のある隣接 (空間接続) セルの数を指定します。
| String |
戻り値
名前 | 説明 | データ タイプ |
out_raster | フィルター処理後の出力ラスター。 出力は常に整数型になります。 | Raster |
コードのサンプル
MajorityFilter (大多数フィルター) の例 1 (Python ウィンドウ)
次の例では、8 つの近傍セルすべてを使用して入力ラスターをフィルタリングしており、半数のセルが同じ値の場合に置換されるよう指定することで、より滑らかな結果を得ます。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outMajFilt = MajorityFilter("land", "EIGHT", "HALF")
outMajFilt.save("c:/sapyexamples/output/outmajfilt")
MajorityFilter (大多数フィルター) の例 2 (スタンドアロン スクリプト)
次の例では、8 つの近傍セルすべてを使用して入力ラスターをフィルタリングしており、半数のセルが同じ値の場合に置換されるよう指定することで、より滑らかな結果を得ます。
# Name: MajorityFilter_Ex_02.py
# Description: Replaces cells in a raster based on the
# majority of their contiguous neighboring cells.
# 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 = "land"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute MajorityFilter
outMajFilt = MajorityFilter(inRaster, "EIGHT", "HALF")
# Save the output
outMajFilt.save("c:/sapyexamples/output/majfilter")
環境
ライセンス情報
- Basic: 次のものが必要 Spatial Analyst
- Standard: 次のものが必要 Spatial Analyst
- Advanced: 次のものが必要 Spatial Analyst