等时圈地图是一种多边形,用来回答一个看似简单的问题:从这里出发,X 分钟内能到哪里?围绕一家咖啡店绘制 15 分钟驾车等时圈,就得到了它真实的客流覆盖范围。围绕一个地铁站绘制 30 分钟步行等时圈,就得到了它的步行可达范围。每一个「附近」功能、每一项门店辐射研究、每一个按通勤时间筛选的房产工具,背后都是这个理念。
本文解释等时圈究竟是什么,它如何在道路网络上被计算出来,在生产系统中出现在哪里,以及哪些坑会让团队付出时间和金钱代价。
等时圈的本质
这个词源自希腊语 isos(相等)和 chronos(时间):在同一条曲线上,通行时间相同。在现代地图技术里,等时圈是一个多边形(或一组嵌套多边形),表示在选定的出行方式下,从起点在指定时间预算内可到达的所有位置。
等时圈与简单缓冲区有两点根本不同。第一,它在道路网络上计算,而不是在平面上。河流、高速公路、山脉、单行道都会扭曲形状。第二,它与出行方式相关:从同一起点出发,20 分钟驾车、20 分钟骑行、20 分钟步行得到的是三个完全不同的多边形。
输出几乎总是 GeoJSON,包含 Polygon 或 MultiPolygon 几何,属性中携带通行时间阈值和出行方式。这就是前端地图渲染的对象,也是空间数据库查询的对象。
等时圈如何计算
最朴素的做法是从起点跑一次最短路径搜索,累计通行时间达到阈值时停止。在大规模场景下这种做法太慢,所以生产系统使用预先计算好的路网图和加速搜索算法。
道路图通常基于 OpenStreetMap 或商业道路数据集一次性构建:每个交叉口是一个节点,每条路段是一条边,按各种出行方式的通行时间加权。从起点出发,图搜索(Dijkstra、A* 或双向变体)向外扩展,每次先扩展代价最小的未访问节点,直到时间预算耗尽。已到达节点加上部分到达边,构成边界。
现代引擎使用 contraction hierarchies(收缩层次)等技术来提升速度。图被预处理成一种层次结构,捷径边可以跳过次要节点,原本要遍历数百万条边的查询可以在毫秒级完成。可达节点随后被包络成多边形,通常使用凹包或 Alpha 形状,让轮廓贴合真实路网范围,而不是膨胀进空旷地带。
得到的 GeoJSON 多边形可以直接传给 Leaflet、Mapbox GL 或 MapLibre 渲染,也可以加载到 PostGIS 进行空间联合查询。
等时圈出现在哪里
等时圈悄悄支撑着大量与位置相关的产品功能。
- 门店与场所辐射圈:零售商围绕每家门店绘制驾车等时圈,估算其合理服务的人口规模,再叠加人口普查或消费数据来测算市场规模
- EV 续航规划:基于电量的等时圈展示电动车在剩余电量下能开到的范围,并考虑海拔、车速和能耗
- 房产通勤过滤:「显示距这个办公室 30 分钟通勤范围内的所有公寓」其实是等时圈与房源表的相交查询
- 医疗资源可达性分析:规划者将医院和诊所周围的等时圈与人口网格对比,找出服务薄弱区域
- 物流服务区:快递、上门服务团队和即时配送平台用等时圈定义某个仓站可承接的订单范围
- 城市规划与公共交通:「15 分钟城市」研究、车站辐射规划、可达性审计都依赖多模态等时圈
在以上每一种场景里,等时圈都是空间过滤器。它把一个模糊的问题(「多近算够近?」)变成一个可以求交、渲染、推理的多边形。
生产环境中的坑
等时圈在演示里看起来简单,到了生产环境就会变难。
出行方式不匹配。 驾车等时圈使用高速公路速度,并忽略行人无关的单行道限制。步行等时圈使用人行道和行人捷径,而汽车无法走这些路段。两者混用是「这个多边形看起来不对」类问题最常见的来源。永远显式传入出行方式,并在界面上展示出来。
时间与交通因素。 凌晨 3 点的 15 分钟驾车比下午 5 点半的 15 分钟驾车覆盖大得多。如果使用场景与通勤相关(房产筛选、营业时间、调度),就要传入 departure_time 并使用支持交通的引擎。静态等时圈在高峰期是会撒谎的。
多模态拼接。 真实出行往往组合多种方式:步行到地铁、坐两站、再走到目的地。朴素的单模态等时圈完全无法表达这一点。真正的多模态等时圈需要公交时刻表,以及把行人和公交边连接起来的图,复杂度远超纯驾车。
覆盖被过度平滑。 一些引擎会激进地平滑多边形让形状好看,但会悄悄高估覆盖范围,把根本没有道路通达的区域也包进去。对于关系到业务决策(开店、接受配送区域)的场景,应当查看原始边界,而不是相信渲染后的形状。
多边形规模过大。 时长较长的等时圈(60、90 分钟)顶点可能多达数万个。要么在发送给浏览器前简化,要么在服务端渲染,否则地图就会卡顿。
等时圈在 MapAtlas 中
MapAtlas Isochrone API 以 GeoJSON 形式返回驾车、步行、骑行以及考虑交通的驾车等时圈多边形,单次请求支持多个时间阈值,并支持出发时间输入以获取交通感知结果。多边形基于持续更新的道路图计算,输出形态可被地图库直接渲染,无需额外处理。
如果工作流既需要可达区域多边形,又需要两两通行时间,Isochrone API 可与 Distance Matrix API 搭配使用,让一条流水线既能回答「20 分钟内能到哪里?」,又能回答「按驾车时间给这些候选点排序」。
归根结底,等时圈只是一个多边形。但正是这个多边形把通行时间转化为应用可以过滤、渲染、推理的形状,也正是它让真正具备通勤感知能力的功能与「在图钉周围画个圆」之间,划出了清晰的界线。
常见问题
什么是等时圈地图?
等时圈地图是一个多边形或一组嵌套多边形,表示从起点在指定通行时间内可到达的所有位置。比如,围绕一家门店绘制 15 分钟驾车等时圈,得到的形状就涵盖了顾客在 15 分钟以内能到达的所有道路段。这个形状几乎从不是圆形,因为真实路网中存在河流、高速公路、断头路和单行道。
等时圈和半径范围有什么区别?
半径范围是用圆规画出的直线缓冲区:圆内每一点到圆心的直线距离都相同。等时圈则是基于真实道路网络计算出的通行时间缓冲区:圈内每一点都能在相同分钟数内到达。10 公里的半径和 10 分钟的驾车等时圈几乎从不重合,因为地形、高速公路和交通会扭曲形状。
等时圈 API 返回什么?
等时圈 API 返回一个或多个 GeoJSON 多边形,每个都标注其代表的通行时间阈值(例如 5、10、15 分钟)。多边形基于道路图针对所选出行方式(驾车、步行、骑行、公交)计算,在考虑交通的情况下还可针对特定出发时间返回结果。可以直接将 GeoJSON 投到地图上,也可以在 PostGIS 中作为空间过滤器使用。
等时圈为什么看起来这么参差不齐?
等时圈来自路段构成的图,而不是一个连续的曲面。多边形边界由时间预算内最远可达节点插值而来,因此边缘会沿道路几何走向。可以通过凹包或 Alpha 形状产生更平滑的轮廓,但稍显锯齿的边界其实更诚实:它显示了路网真实终止的位置,而不是平滑函数想象出来的位置。

