細線化(Thin) (Spatial Analyst)
サマリ
フィーチャの幅を表すセルの数を減らすことでラスタの線形フィーチャを細線化します。
使用法
[細線化(Thin)] ツールの典型的な利用例は、スキャンした等高線マップの処理です。スキャナの解像度と元のマップのライン幅により、コンターは 5 ~ 10 セルの幅を持つライン エレメントとしてラスタで表されます。[細線化(Thin)] の実行後、各コンターは 1 セル幅の線形フィーチャとして表されます。
-
[フィルタ] オプションは、[境界のスムージング(Boundary Clean)] と同じフィルタ アルゴリズムを使用して、主要ブランチから伸びる短いライン フィーチャを削除します。また、3 セルより狭いフィーチャも削除します。
-
入力ライン フィーチャの最大幅を指定することは、ライン フィーチャの幅がデフォルトの最大幅を超えていたり、小さかったりするラスタの細線化に非常に重要です。最大幅が細線化される最も太いライン フィーチャと合うとき、最良の結果が期待できます。
[細線化(Thin)] ツールで使用される一般的なアルゴリズムの詳細は、以下をご参照ください。
『A Hybrid Line Thinning Approach』(Zhan, Cixiang 著、1993 年刊行)の 396 ~ 405 ページ「Proceedings Auto-Carto 11」
構文
パラメータ | 説明 | データ タイプ |
in_raster |
細線化対象の入力ラスタ。 整数タイプでなければいけません。 | Raster Layer |
background_value (オプション) |
背景セルを特定するセル値を指定します。ライン フィーチャは、前景セルから形成されます。
| String |
filter (オプション) |
細線化の最初のフェーズとしてフィルタを適用するかどうかを指定します。
| Boolean |
corners (オプション) |
ターンやジャンクションの角をシャープにするか丸みを付けるかを指定します。 これはベクタ変換プロセスでの曲線のスプライン化やコーナーのシャープ化にも使用されます。
| String |
maximum_thickness (オプション) |
入力ラスタのライン フィーチャの最大幅(マップ単位)。 デフォルトの幅は、セル サイズの 10 倍です。 | Double |
戻り値
名前 | 説明 | データ タイプ |
out_raster |
細線化された出力ラスタ。 | Raster |
コードのサンプル
次の例では、背景値が NoData のラスタを細線化し、コーナーとジャンクションの角をシャープにしたまま境界を滑らかにしています。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
thinOut = Thin("land","NODATA", "FILTER", "SHARP", 300)
thinOut.save("c:/sapyexamples/output/thinout")
次の例では、背景値が NoData のラスタを細線化し、コーナーとジャンクションの角をシャープにしたまま境界を滑らかにしています。
# Name: Thin_Ex_02.py
# Description: Thins rasterized linear features by
# reducing the number of cells
# representing the width of the features.
# 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"
tolerance = 300
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute Thin
thinOut = Thin(inRaster, "NODATA", "FILTER", "SHARP", tolerance)
# Save the output
thinOut.save("c:/sapyexamples/output/thinoutput")