标注 | 说明 | 数据类型 |
输入要素 | 输入面要素。 | Feature Layer |
输出要素类 | 输出线要素类。 | Feature Class |
识别和存储面邻域信息 (可选) | 指定是否识别面邻域关系并将该关系存储在输出中。
| Boolean |
摘要
创建从面边界转换而来的线要素类。 您可以设置工具参数,以便分析共享线段及其相邻的面要素 ID。 或者,您可以设置工具参数,以便为每个输入面创建一个闭合的线要素。
插图

使用情况
如果选中识别和存储面邻域信息参数,则会分析面邻域关系。 边界将转换为线,同时考虑交叉线段或共享线段。 以下字段将添加到输出中:
- LEFT_FID- 输出线左侧输入面的要素 ID。
- RIGHT_FID- 输出线右侧输入面的要素 ID。
下列情景更详细地描述了过程和输出:
- 在面几何中,外边界始终以顺时针方向存储。 如果面内含有孔洞,那么将始终以逆时针方向存储孔洞(或内部)边界。 因此,如果某面的外边界左侧(外部)和孔洞边界左侧(内部)均没有相邻点,则生成线的 LEFT_FID 字段值为 -1,而 RIGHT_FID 字段值则设为面要素 ID。
- 当面内包含另一个面时,系统会生成一条顺时针方向的输出线来表示共享边界,且该线的 LEFT_FID 字段值将为外部面要素 ID,而 RIGHT_FID 字段值将为内部面要素 ID。
- 当两个面共用一部分边界时,系统将生成一条输出线表示该共享线段。 该线的方向可以是任意方向,且 LEFT_FID 和 RIGHT_FID 字段值将相应地设置为左侧或右侧面要素 ID。
- 当一个面与另一个面重叠时,系统将生成两条输出线以便分别表示每个相交边界。 第一条线将表示其中一个重叠面的外边界,其 LEFT_FID 字段值将为与其相交的面的要素 ID,且其 RIGHT_FID 字段值将为它自己的面要素 ID。 第二条线呈反方向,并会分割另一个面,且其 LEFT_FID 和 RIGHT_FID 字段值将与这第二个面的要素 ID 相同。
- 系统不会保留输入多部件要素;输出线将均为单部件。
对于任何作为参数(真)曲线的输入要素,即使真曲线被分割,输出线都将保留这些真曲线。
此参数通过切片的方式处理庞大的数据集以便提高性能和可扩展性。
如果未选中识别和存储面邻域信息参数,则每个输入面都将转换为封闭线要素。 任何多部件面都将转换为多部件线。
ORIG_FID 字段将添加到输出中,其中包含每个输入线的要素 ID。 输入要素的属性将保留在输出中。
参数
arcpy.management.PolygonToLine(in_features, out_feature_class, {neighbor_option})
名称 | 说明 | 数据类型 |
in_features | 输入面要素。 | Feature Layer |
out_feature_class | 输出线要素类。 | Feature Class |
neighbor_option (可选) | 指定是否识别面邻域关系并将该关系存储在输出中。
| Boolean |
代码示例
以下 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 函数的示例。
# 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.")
环境
许可信息
- Basic: 否
- Standard: 否
- Advanced: 是