标注 | 说明 | 数据类型 |
输入要素 | 几何必须为面的输入要素。 | Feature Layer |
输出要素类 | 输出线要素类。 | Feature Class |
识别和存储面邻域信息
(可选) | 指定是否识别并存储面邻域信息。
| Boolean |
摘要
创建的要素类中将包含由面边界转换而来的线(无论是否考虑邻近面)。
插图
使用情况
如果选中识别和存储面邻域信息复选框(在 Python 中将 neighbor_option 设置为 IDENTIFY_NEIGHBORS),则会分析面邻域关系。如上图所示,将边界转换为线时将考虑相交线段或公共线段;向输出要素类添加两个新字段 LEFT_FID 和 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 相同。
- 输入面中的多部分不会保留;输出线均为单部分。
对于参数(真)曲线输入要素,即使真曲线被分割,输出线仍将保留这些真曲线。但这一点不适用于 shapefile 数据。
此选项通过切片的方式处理庞大的数据集以便提高性能和可扩展性。有关详细信息,请参阅大型数据集的切片处理。
如果未选中识别和存储面邻域信息复选框(在 Python 中将 neighbor_option 设置为 IGNORE_NEIGHBORS),则会忽略面邻域关系。各输入面边界将写出为封闭线要素。多部分面在输出中将变为多部分线。输入要素的属性将保留在输出要素类中。向输出添加新字段 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.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.
# 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]))