境界のスムージング (Boundary Clean) (Spatial Analyst)

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

サマリー

ラスター内のゾーン間の境界を滑らかにします。

[境界のスムージング (Boundary Clean)] ツールの詳細

[境界のスムージング (Boundary Clean)] ツールの図
OutRas = BoundaryClean(InRas1)

使用法

  • [境界のスムージング (Boundary Clean)] ツールは、ゾーン間の境界をスムージングすることによってラスターをジェネラライズ (または単純化) します。このツールには、入力内のゾーンのセルがスムージングおよび適用されるスムージングの量にどのように影響するかを制御するためのオプションがあります。

  • このツールは、境界をスムージングするときに拡張 (ディレーション) と縮小 (エロージョン) の数理形態学的手法を適用します (Serra, 1982)。各入力セルは、直近の直交および対角の近傍セルを使用して評価されます。

  • スムージング処理では、最初に特定の優先度で近傍セルをソートします。この優先度により、近傍セルのどのゾーンが出力内の処理セルの値を置き換えるかが決まります。

  • 優先度は、ゾーンの値またはゾーンのサイズに基づくことができます。[並べ替えタイプ] パラメーター (Python では sort_type) は、使用するソート タイプを決定します。

    デフォルトの方法 [ソートなし] (Python では NO_SORT) は、ゾーンの値に基づく優先度を評価します。ゾーンのセルの値が大きいほど、小さい値を持つゾーンに拡大する優先度が高くなります。ゾーンのサイズは考慮されません。

    ゾーンのサイズ (または総面積) を使用して、優先度をソートできます。サイズは、各ゾーンを構成するセルの数によって決まります。[降順] 設定 (Python では DESCEND) では、ゾーンがサイズで降順にソートされます。ゾーンの総面積が大きいほど、総面積が小さいゾーンに拡大する優先度が高くなります。[昇順] 設定 (Python では ASCEND) では、その逆になります。ゾーンの総面積が小さいほど、総面積が大きいゾーンに拡大する優先度が高くなります。

  • スムージングの量は [拡張と縮小を 2 度実行する] パラメーター (Python では number_of_runs) により制御されます。これは、拡張と縮小の処理を実行する回数を指定します。

    設定がオフ (Python では ONE_WAY) の場合、拡張と縮小の処理が 1 回実行されます。設定がオン (Python では TWO_WAY) の場合、拡張と縮小の処理が 2 回実行され、ゾーン境界のスムージングの度合いが大きくなります。

    アルゴリズムの詳細については、「境界のスムージング (Boundary Clean) および大多数フィルター (Majority Filter) を使用したゾーン エッジのスムージング」の境界のスムージング セクションをご参照ください。

  • 8 つの近傍セルすべての値が処理セルと同じ場合、出力セルは入力セルの値を保持します。

  • 参考文献:

    • Serra, J. Image Analysis and Mathematical Morphology, Academic Press, London 1982.
  • このツールに適用されるジオプロセシング環境の詳細については、「解析環境と Spatial Analyst」をご参照ください。

パラメーター

ラベル説明データ タイプ
入力ラスター

ゾーン間の境界を滑らかにする入力ラスター。

整数タイプでなければなりません。

Raster Layer
並べ替えタイプ
(オプション)

スムージング処理に使用するソートのタイプを指定します。ソートは、セルを近傍に拡大する優先度を決定します。

ソートは、ゾーンの値またはゾーンのサイズに基づくことができます。

  • ソートなし優先度はゾーンの値によって決まります。ゾーンのサイズは考慮されません。ゾーンの値が大きいほど、スムージングされた出力で、小さい値を持つゾーンに拡大する優先度が高くなります。これがデフォルトです。
  • 降順ゾーンがサイズで降順にソートされます。ゾーンの総面積が大きいほど、総面積が小さいゾーンに拡大する優先度が高くなります。このオプションは、スムージングされた出力で、小さいゾーンのセルの広がりを排除または抑制する傾向にあります。
  • 昇順ゾーンがサイズで昇順にソートされます。ゾーンの総面積が小さいほど、総面積が大きいゾーンに拡大する優先度が高くなります。このオプションは、スムージングされた出力で、小さいゾーンのセルの広がりを維持または増大する傾向にあります。
String
拡張と縮小を 2 度実行する
(オプション)

スムージング処理の実行回数を指定します (2 回または 1 回)。

  • [オン] - 拡張と縮小の操作が 2 回実行されます。最初は、指定したソート タイプに従って操作が実行されます。2 回目は、逆の優先度で拡張と縮小の操作がさらに実行されます。これがデフォルトです。
  • [オフ] - ソート タイプに従って、拡張と縮小の操作が 1 回実行されます。
Boolean

戻り値

ラベル説明データ タイプ
出力ラスター

ジェネラライズされた出力ラスター。

入力内のゾーン間の境界が滑らかになります。

出力は常に整数型になります。

Raster

BoundaryClean(in_raster, {sort_type}, {number_of_runs})
名前説明データ タイプ
in_raster

ゾーン間の境界を滑らかにする入力ラスター。

整数タイプでなければなりません。

Raster Layer
sort_type
(オプション)

スムージング処理に使用するソートのタイプを指定します。ソートは、セルを近傍に拡大する優先度を決定します。

ソートは、ゾーンの値またはゾーンのサイズに基づくことができます。

  • NO_SORT優先度はゾーンの値によって決まります。ゾーンのサイズは考慮されません。ゾーンの値が大きいほど、スムージングされた出力で、小さい値を持つゾーンに拡大する優先度が高くなります。これがデフォルトです。
  • DESCENDゾーンがサイズで降順にソートされます。ゾーンの総面積が大きいほど、総面積が小さいゾーンに拡大する優先度が高くなります。このオプションは、スムージングされた出力で、小さいゾーンのセルの広がりを排除または抑制する傾向にあります。
  • ASCENDゾーンがサイズで昇順にソートされます。ゾーンの総面積が小さいほど、総面積が大きいゾーンに拡大する優先度が高くなります。このオプションは、スムージングされた出力で、小さいゾーンのセルの広がりを維持または増大する傾向にあります。
String
number_of_runs
(オプション)

スムージング処理の実行回数を指定します (2 回または 1 回)。

  • TWO_WAY拡張と縮小の操作が 2 回実行されます。最初は、指定したソート タイプに従って操作が実行されます。2 回目は、逆の優先度で拡張と縮小の操作がさらに実行されます。これがデフォルトです。
  • ONE_WAYソート タイプに従って、拡張と縮小の操作が 1 回実行されます。
Boolean

戻り値

名前説明データ タイプ
out_raster

ジェネラライズされた出力ラスター。

入力内のゾーン間の境界が滑らかになります。

出力は常に整数型になります。

Raster

コードのサンプル

BoundaryClean (境界のスムージング) の例 1 (Python ウィンドウ)

次の例では、ゾーン間の境界を、降順で双方向に実行して滑らかにしています。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
OutBndCln = BoundaryClean("land", "DESCEND", "TWO_WAY")
OutBndCln.save("c:/sapyexamples/output/bndcln_des2")
BoundaryClean (境界のスムージング) の例 2 (スタンドアロン スクリプト)

次の例では、ゾーン間の境界を、降順で双方向に実行して滑らかにしています。

# Name: BoundaryClean_Ex_02.py
# Description: Smoothes the boundary between zones 
#              by expanding and shrinking it.
# 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"

# Execute BoundaryClean
OutBndCln = BoundaryClean(inRaster, "ASCEND", "TWO_WAY")

# Save the output 
OutBndCln.save("c:/sapyexamples/output/bndcln_asc2")

関連トピック