提取中心线 (制图)

摘要

基于指定的宽度容差从双线要素(道路轮廓)提取中心线。

插图

提取中心线工具图示

使用情况

  • 该工具用于处理规则且接近平行的线对,例如大比例的道路轮廓。 中心线仅在末端开口的线之间创建,而不会在可能是街区的封闭线内创建。 该工具不能对包含立交桥、斜坡、天桥和地下通道的多车道公路进行简化,也不能对带有多个合并轨道的铁路进行简化。 对于这些情况,请使用合并分开的道路工具

  • 输出要素类不具有输入线的地理属性,但将包含以下新字段:

    • LnType - 包含以下线类型值:
      • 使用值 1 表示提取的中心线。
      • 使用值 2 表示相对复杂的交点(未生成中心线的位置)周围的轮廓线、所表示的道路的宽度超过指定范围的线,以及其他断开或不成对的线。
      • 使用值 3 表示源轮廓不清晰的线(它们通常连接两个紧邻的交点,这两个交叉点可能属于一个大交点。)
    • LeftLn_FID - 包含提取的中心线左侧的输入线的对象 ID。 对于 LnType 等于 2 和 3 的线,该字段值将为零。
    • RightLn_FID - 包含提取的中心线右侧的输入线的对象 ID。 对于 LnType 等于 2 和 3 的线,该字段值将为零。

    可以使用 LnType 值进一步检查未解决的交点和较宽的道路;还可以根据需要将 LeftLn_FIDRightLn_FID 字段与连接字段工具结合使用,以将源线的属性传递给中心线。

参数

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

将用于提取中心线的输入双线要素(如道路轮廓)。

Feature Layer
输出要素类

将创建的输出要素类。

Feature Class
最大宽度

将用于提取中心线的双线要素的最大宽度。 必须指定一个值,且该值必须大于零。 可以指定单位;默认为要素单位。

Linear Unit
最小宽度
(可选)

将用于提取中心线的双线要素的最小宽度。 最小宽度必须大于或等于零,且必须小于最大宽度。 默认值为零。 可以指定单位;默认为要素单位。

Linear Unit

arcpy.cartography.CollapseDualLinesToCenterline(in_features, out_feature_class, maximum_width, {minimum_width})
名称说明数据类型
in_features

将用于提取中心线的输入双线要素(如道路轮廓)。

Feature Layer
out_feature_class

将创建的输出要素类。

Feature Class
maximum_width

将用于提取中心线的双线要素的最大宽度。 必须指定一个值,且该值必须大于零。 可以指定单位;默认为要素单位。

Linear Unit
minimum_width
(可选)

将用于提取中心线的双线要素的最小宽度。 最小宽度必须大于或等于零,且必须小于最大宽度。 默认值为零。 可以指定单位;默认为要素单位。

Linear Unit

代码示例

CollapseDualLinesToCenterline 示例(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 CollapseDualLinesToCenterline 函数。

import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.CollapseDualLinesToCenterline("dual_line_roads.shp",
                                 "C:/output/output.gdb/road_centerlines",
                                 50)
CollapseDualLinesToCenterline 示例 2(独立脚本)

以下独立脚本演示了如何使用 CollapseDualLinesToCenterline 函数。

# Name: CollapseDualLinesToCenterline_Example2.py
# Description: Create road centerlines and find buildings within a given distance
 
# Import system modules
import arcpy
from arcpy import env
import arcpy.cartography as CA
import arcpy.management as DM
import arcpy.analysis as AN
 
# Set environment settings
env.workspace = "C:/data/Portland.gdb"
 
# Set local variables
inRoadCasingsFeatures = "road_casings"
inHouseFeatures = "houses"

centerlineFeatures = "C:/data/PortlandOutput.gdb/road_centerlines"
bufferFeatures = "C:/data/PortlandOutput.gdb/road_buffers"

# Create centerlines for road casings.
CA.CollapseDualLinesToCenterline(inRoadCasingsFeatures, centerlineFeatures, 80)
 
# Create buffers 100 units from around centerlines.
AN.Buffer(centerlineFeatures, bufferFeatures, 100)

# Select houses by buffers.
DM.SelectLayerByLocation(inHouseFeatures, "intersect", bufferFeatures, 100)

许可信息

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

相关主题