适用版本:QGIS 3.x(LTR 及以上)
涉及工具:缓冲区(native:buffer)、多环缓冲区(固定距离)(native:multiringconstantbuffer)
前置要求:一个点图层(起点),并已明确其坐标系
1. 什么是等时线
等时线(Isochrone) 是指在地图上,把从同一个起点出发、在相同时间内能够到达的所有位置连接起来所形成的线。它回答的核心问题是:"从这里出发,N 分钟之内我能走多远?"
等时线最典型的用途是交通可达性分析,例如:
- 从某个购物中心出发,步行 15 分钟内能覆盖哪些居民区?
- 新址选址时,开车 10 分钟范围内覆盖了多少潜在客户?
- 应急救援场景下,消防站或医院 5 分钟内能辐射多大区域?
如果按时间等级绘制出多条嵌套的等时线(如 5 分钟、10 分钟、15 分钟),就可以直观地看到可达范围随时间推移的扩张过程,这在可达性评价、服务区划分、选址分析中非常常用。
2. 两种技术路线:路网等时线 vs. 简化版等时线
在开始动手之前,需要先明确一个前提:本文制作的是简化版等时线。
在专业 GIS 分析中,真正的等时线需要基于路网数据(Network Analysis) 计算——它考虑真实道路的走向、等级、限速,甚至单行道、禁转规则,沿路网逐点计算从起点出发各位置的最早到达时间,最终得到的等时线通常是不规则的、沿路网延伸的曲线。
但如果你的分析场景允许一个合理的简化假设——移动在所有方向上的速度恒定,即不考虑道路网络的约束——那么等时线在形状上就近似于一组以起点为圆心的等距离圆环。这种简化在以下场景中完全够用:
- 粗粒度的可达范围示意(如项目汇报中的概念图);
- 没有可用的路网数据,或路网数据质量不佳;
- 分析对象沿开阔空间移动(如步行穿越公园、绿地、广场等)。
在 QGIS 中,简化版等时线可以直接用工具箱(Processing Toolbox) 中现成的缓冲区类工具实现,不需要任何插件,也不需要写代码。
3. 准备工作:把时间换算成距离
缓冲区工具接受的输入是距离,而不是时间。因此第一步是把目标时间换算成缓冲距离,核心公式为:
d = v * t
其中 d 为缓冲距离(米),v 为移动速度(米/分钟),t 为时间(分钟)。
不同出行方式可参考以下经验速度:
- 步行:约 80 m/min(≈4.8 km/h),10 分钟约可到达 800 米,15 分钟约可到达 1200 米;
- 骑行:约 200 m/min(≈12 km/h),10 分钟约可到达 2000 米,15 分钟约可到达 3000 米;
- 驾车(城市道路):约 500 m/min(≈30 km/h),10 分钟约可到达 5000 米,15 分钟约可到达 7500 米。
提示:速度的取值会显著影响结果。做正式分析时,建议依据研究对象所在地实际情况(调查数据、经验值或相关规范)取值,而不是直接套用上述数字。
除了换算距离之外,还有一个必须检查的坐标系问题:缓冲区工具中的"距离"默认按图层坐标系的地图单位计算。要得到以"米"为单位的缓冲半径,请确保点图层(或工程)使用投影坐标系(单位为米),例如 CGCS2000 / 3-degree Gauss-Kruger CM xxxE(EPSG:45xx 系列)、UTM 投影等。若图层当前是地理坐标系(如 EPSG:4326 / WGS 84),请先用重投影工具将其转换到合适的投影坐标系后再做缓冲区。
4. 方法一:缓冲区——制作单一时间带
如果只需要一个特定时间点的范围(例如"10 分钟可达区"),使用缓冲区(Buffer)工具即可。
- 算法名称:缓冲区
- 算法 ID:
native:buffer
操作步骤:
- 确保工作区中已加载一个点图层(起点),且该图层使用投影坐标系。
- 在处理工具箱中搜索"缓冲区"。
- 输入图层:选择起点点图层。
- 距离:填入换算后的数值。例如按 500 m/min 的车速计算 10 分钟可达范围,则填
5000。
- 线段数:控制圆弧的平滑程度,保持默认
5 即可;对圆弧平滑度要求较高时可增大(如 20 以上)。
- 运行,即可得到一个圆形的多边形图层,即该时间点的可达范围。
参数说明:
- 距离(
DISTANCE,默认 10.0):缓冲半径,等于"速度 × 时间";
- 线段数(
SEGMENTS,默认 5):用于逼近四分之一圆弧的线段数,值越大圆越平滑;
- 融合结果(
DISSOLVE,默认否):起点有多个时,勾选后重叠的缓冲区会合并为一个整体;
- 缓冲区(
OUTPUT,默认临时图层):输出图层,可选保存为文件、GeoPackage 等。
如果起点不止一个,缓冲区工具会为每个点分别生成一个圆;勾选"合并结果"可把它们融合为一个面要素。
如果希望在脚本或模型中批量执行,可以调用 Python 接口:
import processing
params = {
"INPUT": "起点.shp", # 起点点图层
"DISTANCE": 5000, # 缓冲距离(米)= 500 m/min × 10 min
"SEGMENTS": 20, # 线段数,越大越圆滑
"DISSOLVE": False,
"OUTPUT": "10分钟可达区.shp",
}
processing.run("native:buffer", params)
5. 方法二:多环缓冲区——制作多级等时线
如果需要制作一系列递增的时间带(如"5 分钟、10 分钟、15 分钟"三级可达范围),推荐使用环集缓冲区(固定距离)工具——它一次运行就能生成一组同心圆环,避免重复运行普通缓冲区再手动叠加。
- 算法名称:环集缓冲区(固定距离)(英文界面为 Multi-ring buffer (constant distance))
- 算法 ID:
native:multiringconstantbuffer
操作步骤:
- 在处理工具箱中搜索"多环"或"环集缓冲区",打开该工具。
- 输入图层:选择起点点图层。
- 环数:设置时间等级的数量。例如要生成 5、10、15 分钟三个等级,就设为
3。
- 环间距离:设置相邻两个环之间的距离。例如步行(80 m/min)每隔 5 分钟一个环,就填
400;骑行每 5 分钟一个环则填 1000。
- 运行,即可生成一组嵌套的圆环多边形。
参数说明:
- 输入图层(
INPUT):起点点图层;
- 环数(
RINGS,默认 1):时间等级的数量,例如 3 代表三个时间等级;
- 环间距离(
DISTANCE,默认 1.0):相邻环之间的间隔,例如每隔 500 米一个环;
- 多环缓冲区(
OUTPUT,默认临时图层):输出图层,建议保存为文件或 GeoPackage。
一个实用的细节:该工具的输出图层会自动附加两个属性字段——ringId(环序号,从 1 开始)和 distance(该环的累计距离)。基于这两个字段可以快速完成后续操作:
- 换算时间标签:用字段计算器新建一个字段,表达式
distance / 80 即得到以"分钟"为单位的可达时间(速度按步行 80 m/min 计);
- 分级设色:在图层属性中按
ringId 设置分类渲染,即可得到经典的多级等时线专题图效果。
同样地,多环缓冲区也支持脚本调用:
import processing
params = {
"INPUT": "起点.shp",
"RINGS": 3, # 3 个时间等级(5/10/15 分钟)
"DISTANCE": 400, # 步行 80 m/min × 5 min = 400 m 一个环
"OUTPUT": "多级等时线.shp",
}
processing.run("native:multiringconstantbuffer", params)
6. 成果应用与可视化建议
得到等时线图层后,常见的后续分析包括:
- 覆盖统计:用"按位置选择"或"相交"工具,统计落在各时间带内的兴趣点(POI)、居住地块或人口网格数量,量化各时间带的可达规模;
- 选址对比:对多个候选起点分别生成等时线,对比同一时间等级下的覆盖差异;
- 专题制图:按
ringId 做分类渲染,配合透明度叠加在底图上,即可输出汇报用的可达性示意图。
需要强调的是:简化版等时线的结果只能作为可达范围的示意,不能作为精确的交通可达性结论。由于它假设各方向移动速度恒定,遇到河流、铁路、封闭高速等真实屏障时,实际可达范围会与圆形结果有明显偏差。在正式研究中,请基于路网数据使用网络分析(如 QGIS 的网络分析工具集、GRASS 模块,或 OpenRouteService / OSRM 等路网服务)制作真正的等时线。
7. 小结
- 等时线连接从同一起点出发、相同时间内可达的所有点,是交通可达性分析的基本工具;
- 在"各方向移动速度恒定"的简化假设下,等时线近似于以起点为圆心的等距离圆环,可以用 QGIS 自带的缓冲区工具直接制作;
- 制作单一时间带:用缓冲区(
native:buffer),距离 = 速度 × 时间;
- 制作多级等时线:用环集缓冲区(固定距离)(
native:multiringconstantbuffer),一次生成嵌套同心圆环,输出自带的 ringId 与 distance 字段便于分级渲染与时间换算;
- 两个关键注意事项:先把时间换算成距离($d = v \times t$),并确保图层使用以米为单位的投影坐标系;
- 需要精确结果时,请转向基于路网的网络分析。
更多 QGIS 问题,欢迎留言。转载须注明出处。