如何详细解析网络分析的第十一章步骤?
摘要:layout: default title: "第十一章:网络分析步骤详解" 第十一章:网络分析步骤详解 网络分析步骤(network.*)提供基于图论的路网分析和地理编码功能,共 3 个
第十一章:网络分析步骤详解
网络分析步骤(network.*)提供基于图论的路网分析和地理编码功能,共 3 个步骤,需要安装 [network] 可选依赖(networkx、geopy)。
11.1 安装依赖
pip install -e ".[network]"
11.2 步骤总览
步骤 ID
名称
功能
依赖
network.shortest_path
最短路径
计算两点间最短路径
networkx
network.service_area
服务区分析
计算可达服务区
networkx
network.geocode
地理编码
地址列表→坐标点
geopy
11.3 network.shortest_path:最短路径
在线矢量网络(道路、管线等)中计算两点之间的最短路径,使用 networkx 构建图论模型。
参数
参数
类型
必填
默认值
说明
input
geodataframe
✅
—
输入线矢量网络(道路、管线等)
origin
list
✅
—
起点坐标 [x, y]
destination
list
✅
—
终点坐标 [x, y]
weight
string
❌
—
权重字段名(如 "travel_time", "length");不指定则使用几何长度
输出
属性
类型
说明
output
GeoDataFrame
最短路径线(LineString),含 path_cost、node_count 属性
stats.path_cost
float
路径总代价(权重之和或几何长度)
stats.node_count
int
路径经过的节点数量
stats.path_length
float
路径几何长度
实现原理
将线矢量网络的每条线段端点作为图节点,线段作为边
边权重默认为几何长度,也可使用指定属性字段
找到最近的图节点作为起终点
使用 networkx.shortest_path(Dijkstra 算法)计算最短路径
将路径节点序列构建为 LineString
示例
pipeline:
name: "最短路径分析"
steps:
- id: load-network
use: io.read_vector
params: { path: "data/road_network.shp" }
- id: reproject
use: vector.reproject
params:
input: "$load-network"
target_crs: "EPSG:3857"
- id: find-path
use: network.shortest_path
params:
input: "$reproject"
origin: [12952000, 4835000] # EPSG:3857 坐标
destination: [12960000, 4840000]
weight: "travel_time" # 按行驶时间最短
on_error: fail
- id: save-path
use: io.write_vector
params:
input: "$find-path"
path: "output/shortest_path.geojson"
format: "GeoJSON"
outputs:
path_cost: "$find-path.path_cost"
path_length: "$find-path.path_length"
注意:若起终点之间没有连通路径,步骤会抛出 ValueError: No path found。建议配合 on_error: fail 快速发现网络连通性问题。
11.4 network.service_area:服务区分析
从指定起点出发,计算在给定代价限制内能到达的所有节点,并构建服务区多边形(等时圈或等距圈)。
