用途:把直线距离的猜测替换为基于路网的真实出行成本,并在合适尺度上明确速度与方式的假设。首个决策点:欧氏距离仅可作为已声明的近似,一旦它被用来代表可达性,必须标注。
工具按尺度选择:社区至城市、研究灵活场景用 OSMnx + NetworkX;城市至区域、大规模多对多 OD(大于10⁴×10⁴)用 r5py(多模式加 GTFS 公交)或 pandana;生产路由服务用 Valhalla/ OSRM/OpenRouteService API;商业栈用 ArcGIS Network Analyst 无头脚本。NetworkX 难以承受都市级多对多,不要把 shortest_path 循环用于数千起点。
建图(OSMnx):ox.graph_from_place 指定 network_type(drive/walk/bike/all),再用 add_edge_speeds 由 highway 标签填补缺失限速、add_edge_travel_times 生成 travel_time 秒属性,并用 project_graph 转到米制 CRS。network_type 必须与出行方式匹配;填补速度是道路等级平均值,属系统性偏差而非噪声,需声明并在高利害时校准。路由前保留强连通分量,避免孤岛造成无穷大。起终点吸附到最近节点/边,须报告吸附距离分布。
核心产物:等时圈/服务区按出行时间截断取 ego-graph,再以 alpha shape 或边并集缓冲成面;节点凸包会高估跨河、跨高速的覆盖,优先边基多边形,并标注方式、速度模型与截断值。OD 矩阵用于可达性与选址,大规模用 pandana/r5py,以 Parquet 存储起讫点 ID。最近设施按网络成本取 k 近邻并同时报告设施与成本。中心性用 travel_time 的介数(大图采样 k),边介数近似过境潜力,应解释为网络结构而非实测流量。
可达性指标需有意选择:累计机会(简单但 T 处断崖)、重力衰减(平缓但衰减参数需论证)、2SFCA/E2SFCA(供需比,医疗常用但 catchment 大小影响结果)、最近设施时间(最坏情形,忽略容量与拥堵)。公平性分析应把指标接人口/人口统计面,报告分组分布而非仅城市均值。
选址:在 OD 矩阵上用 PuLP/OR-Tools 做 p-median 或最大覆盖,须显式声明目标函数;结果可回流至 mcda-suitability-analysis。公交:r5py + OSM + GTFS,结果对出发时间敏感,应在时间窗(如 07:00-09:00 分位数)上计算,并验证 GTFS 日历在分析日期有效,否则会得到看似合理的纯步行时间。
核验:对 3 条路线与外部路由器比对(约 20% 以内或解释差异);绘制不可达/无穷成本对,通常源于吸附或连通性伪影;目视等时圈是否尊重河流、高速、单行道。陷阱清单:欧氏缓冲冒充服务区、方式与 network_type 不符、凸包等时圈跨越屏障、吸附距离未检查、公交只用单一出发时间、介数冒充交通量、OD 矩阵在度 CRS 下当距离。
执行契约:流程为定义方式、时间、阻抗、起点、终点与公平性问题,建网并验证,吸附输入,计算路径或矩阵,汇总可达性,核验。失败模式:图不连通、方式或转向规则错误、GTFS 过期、吸附过大、以欧氏替代、出发时间结果不稳定时,应拒绝给出可达性结论。交付物含网络来源、假设与成本函数、路径或 OD 矩阵、等时圈或可达指标、不可达报告、验证证据与公平性说明。使用网络、GTFS 或路由 API 前应查阅权威来源登记并归档来源日期。