ポリゴン → ライン(Polygon To Line) (データ管理)
サマリ
隣接するポリゴンを考慮または無視してポリゴン境界をラインに変換し、変換されたラインを格納するフィーチャクラスを作成します。
図
使用法
[個別属性を表示してポリゴン隣接情報を格納] チェックボックスがオンの場合(スクリプト中の neighbor_option が IDENTIFY_NEIGHBORS に設定されている場合)、ポリゴンの隣接関係が解析されます。上の図に示すように、交差セグメントまたは共有セグメントを考慮して、境界をラインに変換します。2 つの新しいフィールド LEFT_FID と 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 と同じになります。
- 入力ポリゴン内にはマルチパートが維持されないため、出力ラインはすべてシングルパートになります。
-
[個別属性を表示してポリゴン隣接情報を格納] がオフの場合(スクリプト中の neighbor_option が IGNORE_NEIGHBORS に設定されている場合)、ポリゴンの隣接関係が無視されます。各入力ポリゴン境界は、内部を囲むライン フィーチャとして書き出されます。マルチパート ポリゴンは、出力ではマルチパート ラインになります。入力フィーチャの属性は、出力フィーチャクラス内に保持されます。その出力に追加された新しいフィールド ORIG_FID は、各ラインの入力フィーチャ ID に設定されます。
-
入力フィーチャがパラメトリック カーブ(トゥルー カーブ)の場合、出力ラインはトゥルー カーブを維持します。出力ラインは、分割されてもトゥルー カーブのままです。これは、シェープファイル データには適用されません。
-
このツールは非常に大きなデータセットをタイル化し、パフォーマンスとスケーラビリティを向上します。詳細については、「大きなデータセットのジオプロセシング」をご参照ください。
構文
パラメータ | 説明 | データ タイプ |
in_features |
入力フィーチャとしてポリゴンを指定する必要があります。 | Feature Layer |
out_feature_class |
出力ライン フィーチャクラス。 | Feature Class |
neighbor_option (オプション) |
個別属性を表示してポリゴン隣接情報を格納するかどうかを指定します。
| Boolean |
コードのサンプル
次の Python ウィンドウ スクリプトは、イミディエイト モードで PolygonToLine(ポリゴン → ライン)関数を使用する方法を示しています。
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.PolygonToLine_management("Habitat_Analysis.gdb/vegtype",
"C:/output/Output.gdb/vegtype_lines",
"IGNORE_NEIGHBORS")
次のスタンドアロン スクリプトは、スクリプト環境で 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.
# Author: ESRI
# import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data/landcovers.gdb"
# Create variables for the input and output feature classes
inFeatureClass = "bldgs"
outFeatureClass = "bldgs_lines"
# Use error trapping in case a problem occurs when running the tool
try:
# 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.getOutput(0) == "0"):
print "No overlapping or shared boundary lines were found."
else:
print result.getOutput(0) + " overlapping or shared " +\
"boundary lines were found."
except Exception, e:
# If an error occurred, print line number and error message
import traceback, sys
tb = sys.exc_info()[2]
print "Line %i" % tb.tb_lineno
print e.message