要素转线 (数据管理)
摘要
创建包含通过以下方式生成的线的要素类:将面边界转换为线,或者分割线、面或在两要素的相交处对两要素进行分割。
插图
用法
-
输入属性可以选择性地保留在输出要素类中,这由对话框上的保留属性选项(脚本中的 attributes 参数)决定。
-
在输入要素列表中指定了多个要素类或图层时,列表中这些条目的顺序并不影响输出要素类型,但是,在处理过程中将使用工具对话框中此列表最顶部的条目(脚本中的第一个条目)的空间参考,并将其作为输出空间参考。
-
如果输入线或面边界在除起始折点和结束折点之外的其他位置相接、相交或重叠,则它们将在相交处分割;每条分割线都会变成一个输出线要素。如果输入线或面边界未与另一个要素相交,则仍将以完整形状写出为线要素。
-
对于多部件输入要素,输出线将为单部件。
-
对于参数(真)曲线的输入要素,即使被分割,输出线也仍将是真曲线。但这一点不适用于 shapefile 数据。
-
如果选中对话框中的保留属性选项(脚本中的 attributes 参数设置为 ATTRIBUTES),则所有输入条目中的属性都将以输入列表中的顺序保留在输出中。一个新字段 FID_xxx(其中 xxx 是特定输入条目的源要素类名称)将会添加到每个输入条目的输出中,并被设置为源要素 ID。输出线将以如下方式与其属性相关联:
- 对于同一输入要素集内重合的线或面边界,例如,分隔具有相同几何的两个面、两条线要素的边界会写入到输出:它们中的每一个都具有源要素的属性。
- 对于两个不同输入要素集中重合的线或面边界,例如,与面边界重叠的一条线,只有同时具有两个源要素属性的那个线要素会写入到输出。
- 如果某条输出线未与特定输入要素集中的任何要素重叠,则它在 FID_xxx 字段中的值将为 -1,在该要素集的其他字段中的值将为零或空值。
如果未选中对话框上的保留属性选项(脚本中的 attributes 参数设置为 NO_ATTRIBUTES),所有输入属性都不会保留在输出要素类中;对于每组重合的线或面边界,将有一个线要素写入到输出。
-
当输入要素包含相邻面时,要在输出中将具有左右面要素 ID 的共享边界线作为属性,需使用面转线工具替代。
-
此工具通过切片的方式处理庞大的数据集以便提高性能和可扩展性。有关详细信息,请参阅对大型数据集进行地理处理。
语法
参数 | 说明 | 数据类型 |
in_features [in_features,...] |
输入要素可以是线或面,或是两者兼而有之。 | Feature Layer |
out_feature_class |
输出线要素类。 | Feature Class |
cluster_tolerance (可选) |
进行空间计算时所有要素坐标之间的最小距离以及坐标可以沿 X 和/或 Y 方向移动的距离。默认 XY 容差设定值为 0.001 米,或者为其等效值(以要素单位表示)。 | Linear unit |
attributes (可选) |
指定是在输出要素类中保留还是忽略输入属性。
| Boolean |
代码实例
下面的 Python 窗口脚本演示了如何在即时模式下使用 FeatureToLine 函数。
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.FeatureToLine_management(["majorrds.shp", "habitat_analysis.gdb/futrds"],
"c:/output/output.gdb/allroads",
"0.001 Meters", "ATTRIBUTES")
下面的独立脚本是如何在脚本环境中应用 FeatureToLine 函数的简单示例。
# Name: FeatureToLine_Example2.py
# Description: Use FeatureToLine function to combine features from two
# street feature classes into a single feature class,
# then determine an area of impact around all streets
# by buffering
# import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variables
oldStreets = "majorrds.shp"
newStreets = "habitat_analysis.gdb/futrds"
uptodateStreets = "c:/output/output.gdb/allroads"
# Use FeatureToLine function to combine features into single feature class
arcpy.FeatureToLine_management([oldStreets, newStreets], uptodateStreets,
"0.001 Meters", "ATTRIBUTES")
# Use Buffer function to determine area of impact around streets
roadsBuffer = "c:/output/output.gdb/buffer_output"
arcpy.Buffer_analysis(uptodateStreets, roadsBuffer, "50 Feet",
"FULL", "ROUND", "ALL")