ポリゴン → ライン (Polygon To Line) (データ管理)

サマリー

ポリゴン フィーチャの境界からライン フィーチャクラスを作成します。隣接するポリゴンを考慮するオプションがあります。

ポリゴン → ライン ツールの図

使用法

  • [ポリゴン隣接情報を特定して格納] パラメーターがオンの場合、ポリゴンの隣接関係が解析されます。 境界は、交差セグメントや共有セグメントを考慮して、ラインに変換されます。 次のフィールドが出力に追加されます。

    • LEFT_FID- 出力ラインの左側の入力ポリゴンのフィーチャ ID。
    • RIGHT_FID- 出力ラインの右側の入力ポリゴンのフィーチャ ID。
    入力フィーチャの属性は、出力で保持されません。

    プロセスと出力の詳細については、以下のシナリオを参考にしてください。

    • ポリゴン ジオメトリ内では、外側境界が常に時計回りの方向に格納されます。 ポリゴンに穴がある場合、穴 (つまり、内側) の境界は常に反時計回りの方向に格納されます。 そのため、ポリゴンの外側境界の左側 (外側) および穴境界の左側 (内側) に隣接するポリゴンが存在しない場合、結果として生成されるラインの LEFT_FID 値が -1 に設定され、ポリゴン フィーチャ ID が RIGHT_FID として設定されます。
    • あるポリゴンに別のポリゴンが含まれている場合、共有の境界を表す 1 つの出力ラインが、時計回りの方向に生成されます。その LEFT_FID は外側ポリゴン フィーチャ ID になるのに対して、RIGHT_FID は内側ポリゴン フィーチャ ID になります。
    • 2 つのポリゴンがその境界の一部を共有している場合、共有セグメントを表す 1 つの出力ラインが生成されます。 ライン方向は任意です。LEFT_FID フィールド値と RIGHT_FID フィールド値は、左側または右側ポリゴン フィーチャ ID になります。
    • あるポリゴンが別のポリゴンと重なり合っている場合、各交差境界を 2 回表す 2 つの出力ラインが生成されます。 最初のラインは、重なり合うポリゴンのいずれか 1 つの外側境界線を表し、LEFT_FID フィールド値は交差するポリゴン フィーチャ ID、RIGHT_FID フィールド値は固有のポリゴン フィーチャ ID です。 2 番目のラインは逆方向に配向され、他のポリゴンを分割するため、その LEFT_FID フィールド値と RIGHT_FID フィールド値は他のポリゴン フィーチャ ID と同じになります。
    • 入力マルチパート フィーチャは維持されないため、出力ラインはシングル パートになります。

    入力フィーチャがパラメトリック カーブ (トゥルー カーブ) の場合、出力ラインはトゥルー カーブを維持します。出力ラインは、分割されてもトゥルー カーブのままです。

    このパラメーターは非常に大きなデータセットをタイル化し、パフォーマンスとスケーラビリティを向上します。

  • [ポリゴン隣接情報を特定して格納] パラメーターがオフの場合、各入力ポリゴンは内部を囲むライン フィーチャに変換されます。 マルチパート ポリゴンはマルチパート ラインに変換されます。

    ORIG_FID フィールドが、各入力ラインのフィーチャ ID とともに出力に追加されます。 入力フィーチャの属性は、出力で保持されます。

パラメーター

ラベル説明データ タイプ
入力フィーチャ

入力ポリゴン フィーチャ。

Feature Layer
出力フィーチャクラス

出力ライン フィーチャクラス。

Feature Class
ポリゴン隣接情報を特定して格納
(オプション)

ポリゴン隣接関係を特定し、出力に格納するかどうかを指定します。

  • オン - ポリゴン隣接関係を特定し、出力に格納します。 ポリゴンの各セグメントが別のポリゴンと境界を共有している場合、その境界は分割され、一意に共有される各セグメントがラインになり、2 つの隣接ポリゴン フィーチャ ID が出力に格納されます。 これがデフォルトです。
  • オフ - ポリゴン隣接関係を無視します。すべてのポリゴン境界がライン フィーチャになり、元のポリゴン フィーチャ ID が出力に格納されます。

Boolean

arcpy.management.PolygonToLine(in_features, out_feature_class, {neighbor_option})
名前説明データ タイプ
in_features

入力ポリゴン フィーチャ。

Feature Layer
out_feature_class

出力ライン フィーチャクラス。

Feature Class
neighbor_option
(オプション)

ポリゴン隣接関係を特定し、出力に格納するかどうかを指定します。

  • IDENTIFY_NEIGHBORSポリゴン隣接関係を特定し、出力に格納します。 ポリゴンの各セグメントが別のポリゴンと境界を共有している場合、その境界は分割され、一意に共有される各セグメントがラインになり、2 つの隣接ポリゴン フィーチャ ID が出力に格納されます。 これがデフォルトです。
  • IGNORE_NEIGHBORSポリゴン隣接関係を無視します。すべてのポリゴン境界がライン フィーチャになり、元のポリゴン フィーチャ ID が出力に格納されます。
Boolean

コードのサンプル

PolygonToLine の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで PolygonToLine 関数を使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.management.PolygonToLine("Habitat_Analysis.gdb/vegtype", 
                               "C:/output/Output.gdb/vegtype_lines",
                               "IGNORE_NEIGHBORS")
PolygonToLine の例 2 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトに、PolygonToLine 関数の使用例を示します。

# Name: PolygonToLine_Example2.py
# Description: Use the PolygonToLine function to convert polygons to lines,
#              and report how many shared or overlapping boundary lines
#              were found.

# Import system modules 
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data/landcovers.gdb"
 
# Create variables for the input and output feature classes
inFeatureClass = "bldgs"
outFeatureClass = "bldgs_lines"
 
# Run PolygonToLine to convert polygons to lines using default neighbor_option
arcpy.management.PolygonToLine(inFeatureClass, outFeatureClass)

# Select lines that have LEFT_FID values greater than -1
arcpy.management.MakeFeatureLayer(outFeatureClass, "selection_lyr", 
                                  "\"LEFT_FID\" > -1")
result = arcpy.management.GetCount("selection_lyr")

if result[0] == "0":
    print("No overlapping or shared boundary lines were found.")
else:
    print(f"{result[0]} overlapping or shared boundary lines were found.")

関連トピック