ラインの単純化(Simplify Line) (カートグラフィ)
図
使用法
単純化する方法には 2 つあります。
- ポイント削除は、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)