ラインの単純化(Simplify Line) (カートグラフィ)
図
使用法
単純化する方法には 2 つあります。
- ポイント削除の方法が速いですが、あまり精密ではありません。これは、余分な頂点を取り除きます。データを圧縮する場合やより大まかに単純化する場合にこの方法を使用します。結果として生成されるラインの鋭角は、許容値が大きくなるにつれ大幅に鋭くなるため、見栄えが入力より悪くなることがあります。
- 屈曲の単純化は時間がかかる方法ですが、一般的に、元のフィーチャに忠実な結果が生成されます。これは、ラインの不要な屈曲を取り除きます。この方法は、より精密に単純化したい場合に使用します。
単純化の許容値は、単純化の度合いを決定します。許容値は、グラフィック エレメント間で許容される最短の距離以上に設定します。同じ許容値を使用した場合は、ポイント削除の方が屈曲の単純化よりも粗く単純な結果となります。
-
このツールは、2 つの出力フィーチャクラスを生成します。1 つは単純化されたラインを格納するためのライン フィーチャクラスであり、もう 1 つは長さゼロに単純化されたラインとして表されるポイントを格納するためのポイント フィーチャクラスです。出力ポイントの名前および場所は、_Pnt という接尾辞の付いた出力ライン名から自動的に生成されます。出力ライン フィーチャクラスには、入力フィーチャクラスにあるすべてのフィールドが含まれています。出力ポイント フィーチャクラスには、これらのフィールドは含まれません。
-
出力のトポロジ エラーを処理するためのオプションがあります。
- [トポロジ エラーの確認] パラメータを使用すると、単純化プロセスによって発生したトポロジ エラーが識別されます。このオプションをオンにすると、[トポロジ エラーを解決] パラメータも有効になります。トポロジ・エラーの確認を実行すると、処理速度が低下する場合があります。
- 出力ライン フィーチャクラスには、フィーチャにトポロジ エラーがあるかどうかを示す 2 つのフィールドが含まれます。InLine_FID には入力フィーチャの ID が含まれ、SimLnFlag にはトポロジ エラーが含まれます。値が 1 であればエラーが発生したことを示し、0 であればエラーは発生しなかったことを示します。
- フラグの値は、トポロジ エラーが解決された後も保持されます。SimLnFlag フィールドを使用して、トポロジ エラーが発生したフィーチャを調べます。
-
[トポロジ エラーの確認] パラメータと [トポロジ エラーを解決] パラメータは、編集セッション内では使用できません。編集セッション内でこのツールを実行するには、[トポロジ エラーの確認] パラメータを無効にします。
構文
パラメータ | 説明 | データ タイプ |
in_features |
単純化するライン フィーチャ。 | Feature Layer |
out_feature_class |
作成される出力ライン フィーチャクラス。 | Feature Class |
algorithm |
ラインの単純化アルゴリズムを指定します。
| String |
tolerance |
単純化の度合いを決定する許容値。許容値には、0(ゼロ)より大きい値を指定する必要があります。優先的に適用される単位を選択することができます。デフォルトはフィーチャ単位です。
| Linear unit |
error_resolving_option (オプション) |
ラインの交差、ラインの重なり、単純化された長さゼロのラインなどのプロセスで発生する可能性があるトポロジ エラーの処理方法を指定します。このパラメータは、[error_checking_option] が [CHECK] である(デフォルト)ときに使用できます。
| Boolean |
collapsed_point_option (オプション) |
プロセスで単純化された長さゼロのラインが検出された場合に、ポイントとして保持するかどうかを指定します。このオプションが適用されるのは、[NO_CHECK] が指定されている場合、または [FLAG_ERRORS] オプションと [CHECK] オプションの両方が指定されている場合のみです。
| Boolean |
error_checking_option (オプション) |
ラインの交差、ラインの重なり、単純化された長さゼロのラインなどのプロセスで発生する可能性があるトポロジ エラーの処理方法を指定します。
| Boolean |
コードのサンプル
次の Python ウィンドウ スクリプトは、SimplifyLine(ラインの単純化)ツールをイミディエイト モードで使用する方法を示しています。
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SimplifyLine("roads.shp",
"C:/output/output.gdb/simplified_roads",
"POINT_REMOVE",
20)
次のスタンドアロン スクリプトは、SimplifyLine(ラインの単純化)ツールの使用方法を示しています。
# Name: SimplifyLine_Example2.py
# Description: Simplify line features from two feature classes, rivers and coastlines,
# while maintaining their connections
# Import system modules
import arcpy
from arcpy import env
import arcpy.management as DM
import arcpy.cartography as CA
# Set environment settings
env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inRiverFeatures = "rivers"
inCoastlineFeatures = "coastlines"
mergedFeatures = "C:/data/PortlandOutput.gdb/merged_lines"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/merged_lines_simplified"
tempLayer = "tempLyr"
outRiverFeatureClass = "C:/data/PortlandOutput.gdb/rivers_final"
outCoastlineFeatureClass = "C:/data/PortlandOutput.gdb/coastlines_final"
# Merge rivers and coastlines into one feature class,
# assuming that they have a common f-code field
# with value 40 for rivers and 80 for coastlines.
DM.Merge(inRiverFeatures, inCoastlineFeatures, mergedFeatures)
# Simplify all lines.
CA.SimplifyLine(mergedFeatures,
simplifiedFeatures,
"BEND_SIMPLIFY",
100,
"RESOLVE_ERRORS",
"KEEP_COLLAPSED_POINTS",
"CHECK")
# Select rivers and coastlines by their f-code values
# and put them in separate feature classes.
DM.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 40")
DM.CopyFeatures(tempLayer, outRiverFeatureClass)
DM.MakeFeatureLayer(simplifiedFeatures, tempLayer, "f-code = 80")
DM.CopyFeatures(tempLayer, outCoastlineFeatureClass)