关于 network-accessibility-analysis
面向地理空间分析人员的网络可达性分析技能,指导按尺度与出行方式选择路网工具,并计算和核验路线、服务区及可达性指标。强调记录速度、连通性和数据假设。
主要功能
- 01按分析尺度选择路由工具
- 02构建并核验出行网络
- 03计算等时圈与 OD 矩阵
- 04评估多种可达性指标
- 05检查路线与结果假设
适用场景
- 01比较不同地点的网络出行成本
- 02绘制指定时间内的服务区域
- 03评估群体间服务可达性差异
- 04基于 OD 成本分析设施选址
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ muend/ geoai-skills --skill network-accessibility-analysis安装后在 Claude Code 中输入/network-accessibility-analysis确认已加载。
附带文件agents/openai.yamlreferences/authoritative-sources.md
详细介绍
网络与可达性分析
目的:用符合实际路网的出行成本取代直线距离的臆测,同时选择合适的分析尺度,并如实说明对速度和出行方式的假设。每项任务首先要做出的判断:只有明确声明是近似值时,才可以使用欧氏距离——凡是看到有人用它代替可达性分析,都要指出这一点。
按尺度选择工具
| 尺度 | 工具 |
|---|---|
| 邻里到城市尺度,研究灵活性高 | OSMnx + NetworkX |
| 城市区域尺度,海量 OD 对(>10⁴×10⁴) | r5py(多模式 + 使用 GTFS 的公共交通)或 pandana(收缩层次结构带来的速度优势) |
| 生产级路径规划服务 | Valhalla / OSRM / OpenRouteService API |
| 专有技术栈 | ArcGIS Network Analyst(以无界面方式编写脚本) |
NetworkX 处理都市区尺度的海量多对多计算时会不堪重负——不要对数千个起点循环调用 shortest_path;应改用其他工具。
图构建(OSMnx)
import osmnx as ox
G = ox.graph_from_place("City, Country", network_type="drive") # walk/bike/all
G = ox.add_edge_speeds(G) # imputes from highway tags where maxspeed missing
G = ox.add_edge_travel_times(G) # edge attr: travel_time (s)
G = ox.project_graph(G) # metric CRS before any distance work
- network_type 很重要:在
drive图上进行步行分析会遗漏小径、楼梯和广场;在all图上进行驾车分析则会使用人行道。选择与出行方式匹配的图。 - 插补速度是按道路等级计算的平均值——这是系统性偏差,不是噪声。应明确说明;如果决策影响重大,应使用已知行程进行校准。
- 路径规划时保留强连通分量(
ox.truncate.largest_component(G, strongly=True));孤立的小片区会造成不合理的无穷大值。 - 吸附:将起点和目的地映射到最近的节点或边(
ox.distance.nearest_nodes)。报告吸附距离的分布;设施若被吸附到 2 km 外(例如河岸或封闭区域),会在不知不觉中扭曲结果。
核心成果
- 等时圈 / 服务区:按出行时间阈值截取自我子图 → 对已到达的边使用 alpha 形状或缓冲边并集。基于节点的凸包会夸大跨越河流或高速公路的覆盖范围——优先使用基于边的多边形。务必标明假设:出行方式、速度模型和阈值。
- OD 矩阵:多对多出行成本;这是可达性分析和选址分配的基础。处理大型矩阵时使用 pandana/r5py;以 Parquet 格式存储,并包含起点/目的地 ID。
- 最近设施:按路网成本(而非欧氏距离)选取 k 个最近设施;报告分配到的设施和成本。
- 中心性:基于 travel_time 计算中介中心性(大型图使用抽样
k——精确计算的复杂度为 O(nm));边介数 ≈ 潜在的过境流量。应将其解读为路网结构,而非实际观测到的交通量。
可达性指标——审慎选择
| 指标 | 回答的问题 | 弱点 |
|---|---|---|
| 累积机会(T 分钟内的工作岗位/兴趣点数量) | 简单易懂 | 在 T 处出现断崖式变化;非此即彼 |
| 基于重力的指标(经距离衰减的总和) | 平滑地衡量可达性 | 衰减参数必须有依据 |
| 2SFCA / E2SFCA | 供需比可达性(医疗卫生领域的标准) | 结果受服务范围大小的选择影响 |
| 最近设施时间 | 最不利情况下的需求 | 忽略容量/拥堵 |
进行公平性分析时,将指标与人口/人口统计多边形关联(按面积加权或使用 dasymetric 方法——见 geo-data-engineering),并报告各群体的分布,而不只是城市平均值。有关差异的路由统计检验,请参阅 spatial-statistics。
选址分配
基于 OD 矩阵进行最优选址(p-median、最大覆盖):使用 PuLP/OR-Tools 建立模型;输入包括 OD 矩阵 + 需求权重 + 候选地点。明确说明目标——最小化平均出行时间(p-median)与最大化 T 时间内的覆盖需求(最大覆盖)会得出不同答案,而利益相关方往往也不清楚自己要求的是哪一种。如果选址需要综合考虑路网可达性和其他标准,将结果反馈给 mcda-suitability-analysis。
公共交通(GTFS)
使用 r5py 和 OSM + GTFS 数据源;结果会随出发时间而变化——应在一个时间窗口内计算(例如 07:00-09:00 的百分位数),切勿只计算单一出发时间。验证数据源(尤其是分析日期是否在服务日历覆盖范围内!)——过期的 GTFS 日历会产生仅步行时间,看起来却很合理。
验证流程
- 选取 3 条路线,与外部路线规划器(Google/OSRM)进行抽查——结果应在约 20% 的误差范围内,否则请说明原因。
- 绘制不可达或成本无限的起终点组合——这通常是吸附或连通性伪象,并非实际不可达。
- 目视检查等时圈:是否遵循河流、高速公路和单行道?
注意事项清单
- 将欧几里得缓冲区标为“服务范围”。
- 为出行模式选择了错误的 network_type。
- 等时圈凸包跨越了障碍物。
- 未检查吸附距离。
- 用单一出发时间评估公共交通可达性。
- 将介数中心性说成交通流量。
- 在经纬度坐标系中使用 OD 矩阵计算出行“距离”。
执行约定
- 工作流: 定义出行模式、时间、阻抗、起点、目的地和公平性问题;构建并验证网络;吸附输入点;计算路线或矩阵;汇总可达性;进行验证。
- 决策规则: 对受限出行使用网络成本;对观测轨迹使用移动分析;只有当可达性成为更广泛偏好模型中的一项标准时,才使用 MCDA。
- 验证流程: 审核连通性和吸附情况,抽查路线,绘制不可达的起终点组合,测试出发时间或阻抗敏感性,并核对 OD 维度和单位。
- 失效模式: 如果图不连通、出行模式或转向规则错误、GTFS 服务已过期、吸附距离过大、以欧几里得距离替代,或出发时间变化导致结果不稳定,则不得声称具有可达性。
- 交付物: 网络来源、假设和成本函数、路线或 OD 矩阵、等时圈或可达性指标、不可达案例报告、验证证据以及公平性注意事项。
- 来源时效性: 使用网络、GTFS 或路线规划 API 前,请查阅权威来源注册表,并记录来源日期。