面转线 (数据管理)

摘要

创建从面边界转换而来的线要素类。 您可以设置工具参数,以便分析共享线段及其相邻的面要素 ID。 或者,您可以设置工具参数,以便为每个输入面创建一个闭合的线要素。

插图

“面转线”工具图示

使用情况

  • 如果选中识别和存储面邻域信息参数,则会分析面邻域关系。 边界将转换为线,同时考虑交叉线段或共享线段。 以下字段将添加到输出中:

    • LEFT_FID- 输出线左侧输入面的要素 ID。
    • RIGHT_FID- 输出线右侧输入面的要素 ID。
    输入要素的属性将不会保留在输出中。

    下列情景更详细地描述了过程和输出:

    • 在面几何中,外边界始终以顺时针方向存储。 如果面内含有孔洞,那么将始终以逆时针方向存储孔洞(或内部)边界。 因此,如果某面的外边界左侧(外部)和孔洞边界左侧(内部)均没有相邻点,则生成线的 LEFT_FID 字段值为 -1,而 RIGHT_FID 字段值则设为面要素 ID。
    • 当面内包含另一个面时,系统会生成一条顺时针方向的输出线来表示共享边界,且该线的 LEFT_FID 字段值将为外部面要素 ID,而 RIGHT_FID 字段值将为内部面要素 ID。
    • 当两个面共用一部分边界时,系统将生成一条输出线表示该共享线段。 该线的方向可以是任意方向,且 LEFT_FIDRIGHT_FID 字段值将相应地设置为左侧或右侧面要素 ID。
    • 当一个面与另一个面重叠时,系统将生成两条输出线以便分别表示每个相交边界。 第一条线将表示其中一个重叠面的外边界,其 LEFT_FID 字段值将为与其相交的面的要素 ID,且其 RIGHT_FID 字段值将为它自己的面要素 ID。 第二条线呈反方向,并会分割另一个面,且其 LEFT_FIDRIGHT_FID 字段值将与这第二个面的要素 ID 相同。
    • 系统不会保留输入多部件要素;输出线将均为单部件。

    对于任何作为参数(真)曲线的输入要素,即使真曲线被分割,输出线都将保留这些真曲线。

    此参数通过切片的方式处理庞大的数据集以便提高性能和可扩展性。

  • 如果未选中识别和存储面邻域信息参数,则每个输入面都将转换为封闭线要素。 任何多部件面都将转换为多部件线。

    ORIG_FID 字段将添加到输出中,其中包含每个输入线的要素 ID。 输入要素的属性将保留在输出中。

参数

标注说明数据类型
输入要素

输入面要素。

Feature Layer
输出要素类

输出线要素类。

Feature Class
识别和存储面邻域信息
(可选)

指定是否识别面邻域关系并将该关系存储在输出中。

  • 选中 - 识别面邻域关系并将该关系存储在输出中。 如果某个面的不同线段与其他面共用边界,那么该边界将被分割成各个唯一公用的线段,这些线段的两个邻近面要素 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识别面邻域关系并将该关系存储在输出中。 如果某个面的不同线段与其他面共用边界,那么该边界将被分割成各个唯一公用的线段,这些线段的两个邻近面要素 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.")

许可信息

  • Basic: 否
  • Standard: 否
  • Advanced: 是

相关主题