mcpField
N
network-accessibility-analysis

network-accessibility-analysis

github.com/muend数据与数据库3756 次安装2 周前更新
代码仓库

关于 network-accessibility-analysis

面向地理空间分析人员的网络可达性分析技能,指导按尺度与出行方式选择路网工具,并计算和核验路线、服务区及可达性指标。强调记录速度、连通性和数据假设。

主要功能

  1. 01按分析尺度选择路由工具
  2. 02构建并核验出行网络
  3. 03计算等时圈与 OD 矩阵
  4. 04评估多种可达性指标
  5. 05检查路线与结果假设

适用场景

  1. 01比较不同地点的网络出行成本
  2. 02绘制指定时间内的服务区域
  3. 03评估群体间服务可达性差异
  4. 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 日历会产生仅步行时间,看起来却很合理。

验证流程

  1. 选取 3 条路线,与外部路线规划器(Google/OSRM)进行抽查——结果应在约 20% 的误差范围内,否则请说明原因。
  2. 绘制不可达或成本无限的起终点组合——这通常是吸附或连通性伪象,并非实际不可达。
  3. 目视检查等时圈:是否遵循河流、高速公路和单行道?

注意事项清单

  • 将欧几里得缓冲区标为“服务范围”。
  • 为出行模式选择了错误的 network_type。
  • 等时圈凸包跨越了障碍物。
  • 未检查吸附距离。
  • 用单一出发时间评估公共交通可达性。
  • 将介数中心性说成交通流量。
  • 在经纬度坐标系中使用 OD 矩阵计算出行“距离”。

执行约定

  • 工作流: 定义出行模式、时间、阻抗、起点、目的地和公平性问题;构建并验证网络;吸附输入点;计算路线或矩阵;汇总可达性;进行验证。
  • 决策规则: 对受限出行使用网络成本;对观测轨迹使用移动分析;只有当可达性成为更广泛偏好模型中的一项标准时,才使用 MCDA。
  • 验证流程: 审核连通性和吸附情况,抽查路线,绘制不可达的起终点组合,测试出发时间或阻抗敏感性,并核对 OD 维度和单位。
  • 失效模式: 如果图不连通、出行模式或转向规则错误、GTFS 服务已过期、吸附距离过大、以欧几里得距离替代,或出发时间变化导致结果不稳定,则不得声称具有可达性。
  • 交付物: 网络来源、假设和成本函数、路线或 OD 矩阵、等时圈或可达性指标、不可达案例报告、验证证据以及公平性注意事项。
  • 来源时效性: 使用网络、GTFS 或路线规划 API 前,请查阅权威来源注册表,并记录来源日期。

评论

支持 Markdown