在 QGIS 中,主要依赖 v.net.components(GRASS GIS)工具判断道路图层是否连通(即整个网络是否构成同一个联通体)。在执行之前,需要对道路图层进行预处理,主要包括将线段的端点,移动到距离最近的线段上,从而解决T形交叉问题。
数据预处理
使用v.clean的snap算法,将道路的端点,均移动到最近的道路上。
点击这里,了解如何使用v.clean工具。

将道路打断
在 QGIS 工具箱中,找到用线分割算法(算法ID:native:splitwithlines)。如下图所示,将输入图层和分割图层都选为上一步处理后的图层。

处理后结果如下图。

计算道路联通性
在 QGIS 工具箱中,找到 v.net.components 工具。将输入矢量线图层设置为道路打断后的结果,点击运行。
组成类型(判断原则)
- weak(弱连通):判断“无向意义下是否全连通”(最常用,对应日常道路是否能开车到达任意位置);
- strong(强连通): 要求双向路径(仅适用于严格单向路网建模,一般道路不适用)
可选参数说明
arc_layer,类型str(默认 "1"):
指定 弧段(线)所在的 layer 编号。GRASS 网络中,线要素默认存于 layer 1;若你自定义了其他 layer,需修改此值。
node_layer,类型str(默认 "2"):
指定 节点(点)所在的 layer 编号。GRASS 网络中,节点默认存于 layer 2;若 v.net 运行时指定了 node_layer=3,则此处需同步。
arc_column:
弧段正向/双向通行成本列(如 length_m, time_min)。若设此字段,则 method=strong 时,该值作为正向通行代价;若未设,模块按无权图处理(所有弧段权重=1)。
arc_backward_column:
弧段反向通行成本列(用于单向路)。若某路段禁止反向通行,可在该字段设 -1;若未设,反向通行默认允许(权重同 arc_column 或 1))。
node_column:
节点通行成本列(如红绿灯等待时间)。若某节点设为 -1,则视为不可通行节点(如封闭路口); 影响 weak 和 strong 两种模式。
points:
额外的中心点图层(如学校、医院),用于将其强制加入网络连通性分析。若不提供,模块仅分析网络自身连通性;若提供,会先将这些点以 threshold 距离连接到最近弧段上(类似 v.net connect)。
threshold:
配合 points 使用:点到网络的最大连接距离(地图单位)。使用投影坐标系,若设 threshold=50,则 50 米内点会被连接;• 若 points 为空,此参数被忽略。
输出参数说明
output
输出线图层(Network_Components_Line),即原网络线要素,附加 comp 字段标识所属连通分量。
output_point
输出点图层(Network_Components_Point),仅当启用 -a 时有效,存放所有节点位置及 comp 值。若未启用 -a,此输出为空。

判断联通性
查看生成图层的属性表,按 comp 字段排序或统计唯一值。
- 若 只有 1 一个值 → 整个道路网络是弱连通的(Weakly Connected),即任意两点间存在无向路径(可通行);
- 若出现 comp = 1, 2, 3, ... 多个值 → 存在 多个孤立子网(如断头路、未连接的支路、数据缺失区域)。

更多QGIS使用问题,欢迎留言或联系我们。转载须注明出处。