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

サマリー

隣接するポリゴンを考慮または無視してポリゴン境界をラインに変換し、変換されたラインを格納するフィーチャクラスを作成します。

[ポリゴン → ライン (Polygon To Line)] の図

使用法

  • [個別属性を表示してポリゴン隣接情報を格納] チェックボックスがオンの場合 (Python で neighbor_optionIDENTIFY_NEIGHBORS に設定されている場合)、ポリゴンの隣接関係が解析されます。上の図に示すように、交差セグメントまたは共有セグメントを考慮して、境界をラインに変換します。2 つの新しいフィールド LEFT_FIDRIGHT_FID はそれぞれ出力フィーチャクラスに追加された後、各出力ラインの左側と右側の入力ポリゴン フィーチャ ID に設定されます。入力フィーチャの属性は、出力フィーチャクラス内に保持されません。プロセスと出力の詳細をよく理解するために、以下のシナリオを参考にしてください。

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

    入力フィーチャがパラメトリック カーブ (トゥルー カーブ) の場合、出力ラインはトゥルー カーブを維持します。出力ラインは、分割されてもトゥルー カーブのままです。これは、シェープファイル データには適用されません。

    このオプションは非常に大きなデータセットをタイル化し、パフォーマンスとスケーラビリティを向上します。詳細については、「大きなデータセットのタイル化処理」をご参照ください。

  • [個別属性を表示してポリゴン隣接情報を格納] チェックボックスがオフの場合 (Python で neighbor_optionIGNORE_NEIGHBORS に設定されている場合)、ポリゴンの隣接関係は無視されます。各入力ポリゴン境界は、内部を囲むライン フィーチャとして書き出されます。マルチパート ポリゴンは、出力ではマルチパート ラインになります。入力フィーチャの属性は、出力フィーチャクラス内に保持されます。その出力に追加された新しいフィールド ORIG_FID は、各ラインの入力フィーチャ ID に設定されます。

パラメーター

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

入力フィーチャとしてポリゴンを指定する必要があります。

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

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

Feature Class
ポリゴン隣接情報を格納します。
(オプション)

個別属性を表示してポリゴン隣接情報を格納するかどうかを指定します。

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

コードのサンプル

PolygonToLine (ポリゴン → ライン) の例 1 (Python ウィンドウ)

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

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

次のスタンドアロン スクリプトは、スクリプト環境で PolygonToLine 関数を適用する方法を示した単純な例です。

# Name: PolygonToLine_Example2.py
# Description: Use 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.PolygonToLine_management(inFeatureClass, outFeatureClass)
# Select lines that have LEFT_FID values greater than -1
arcpy.MakeFeatureLayer_management(outFeatureClass, "selection_lyr", 
                                  "\"LEFT_FID\" > -1")
result = arcpy.GetCount_management("selection_lyr")
if result[0] == "0":
    print("No overlapping or shared boundary lines were found.")
else:
    print("{} overlapping or shared boundary lines were found.".format(result[0]))

関連トピック