描述
基于指定的宽度容差从双线要素(如道路轮廓)提取中心线。
插图
使用
该工具用于处理规则且接近平行的线对,例如大比例的道路轮廓。中心线仅在末端开口的线之间创建,而不会在可能是街区的封闭线内创建。该工具不能对包含立交桥、斜坡、天桥和地下通道的多车道公路进行简化,也不能对带有多个合并轨道的铁路进行简化。在这种情况下,可改为使用合并分开的道路工具。
该工具不能在编辑会话下执行。
输出要素类不具有输入线的地理属性,但会包含以下三个新字段:
- LnType - 包含以下线类型值:
- 值 1 表示提取的中心线
- 值 2 表示相对复杂的交点(未生成中心线的位置)周围的轮廓线、所表示的道路的宽度超过指定范围的线,以及其他断开或不成对的线。
- 值 3 表示源轮廓不清晰的线(它们通常连接两个紧邻的交点,事实上这两个交叉点可能属于一个大交点。)
- LeftLn_FID - 包含提取的中心线左侧的输入线的对象 ID。对于 LnType 等于 2 和 3 的线,该字段值将为零。
- RightLn_FID - 包含提取的中心线右侧的输入线的对象 ID。对于 LnType 等于 2 和 3 的线,该字段值将为零。
可以使用 LnType 值进一步检查未解决的交点和较宽的道路;还可以根据需要将 LeftLn_FID 和 RightLn_FID 字段与“连接字段”工具结合使用,以将源线的属性传递给中心线。
- LnType - 包含以下线类型值:
语法
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
# Author: ESRI
# 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: 是