⏱ 4 步速查(跟着做即可,详细步骤见下文):

  1. 裁矢量(SHP/GeoJSON):菜单「矢量」→「地理处理工具」→「裁剪(Clip)」,输入层填要裁的数据,叠加层填行政区面
  2. 裁栅格(Tif/DEM):菜单「栅格」→「提取」→「按掩膜图层裁剪栅格」,掩膜填行政区面
  3. 只想要矩形范围:栅格用「按范围裁剪栅格」,框选或输入坐标即可
  4. 出现黑边:勾选「添加 Alpha 波段」,裁剪区外自动变透明

裁剪是 GIS 数据处理中最常用的操作之一:把全国数据按你研究的行政区切出来、把一景影像按研究区范围截取、把 DEM 按流域边界裁剪……本教程把 QGIS 中与裁剪相关的工具整理成一条清晰的路线:矢量数据用哪个工具、栅格数据用哪个工具、参数怎么填、结果不对怎么排查。

1. 裁剪工具怎么选:先分清矢量与栅格

QGIS 中与「裁剪」相关的算法分散在两个菜单位置,分别对应两类数据。选错位置是新手最常见的困惑:

数据类型菜单位置工具典型场景
矢量(SHP/GeoJSON/GeoPackage)「矢量」→「地理处理工具」裁剪(Clip)按行政区面提取 POI 点、道路线、地块面
栅格(Tif/DEM/影像)「栅格」→「提取」按范围裁剪栅格只想要某个矩形范围内的影像
栅格(Tif/DEM/影像)「栅格」→「提取」按掩膜图层裁剪栅格按行政区/流域等不规则边界裁 DEM
提示:以上工具均来自 QGIS 内置的处理工具箱(Processing Toolbox),在 安装 QGIS 后即可使用,无需额外安装插件。如果菜单里找不到,可在「处理」→「工具箱」中搜索工具名称。

2. 矢量裁剪:用行政区面提取目标数据

矢量裁剪的原生工具是「裁剪(Clip)」,官方定义是:用一个多边形图层的要素来裁剪另一个矢量图层,只有落在多边形范围内的要素部分会被保留到结果中。

2.1 操作步骤

  1. 加载两个图层:输入图层(要被裁剪的数据,如全国道路 SHP)和叠加图层(用作裁剪边界的面数据,如某市行政区 SHP)
  2. 打开菜单「矢量」→「地理处理工具」→「裁剪」
  3. 「输入图层」选择道路图层;「叠加图层」选择行政区图层
  4. 在「裁剪后要素」处指定输出文件路径(可选 GeoPackage、SHP、GeoJSON 等格式),点击「运行」

运行完成后,结果图层会自动加载到地图中——所有落在行政区范围内的道路被保留,范围外的被丢弃。线要素和面要素在边界处会被真实地"切断",点要素则是按"落点是否在面内"筛选。

2.2 两个实用细节

  • 坐标系不一致也能跑:Clip 工具会自动处理输入层与叠加层坐标系不同的情况,但为了结果精度和后续计算方便,建议先把两个图层统一到同一坐标系(如 CGCS2000)再裁剪
  • 想要"反过来裁":如果要保留行政区"以外"的部分,用的是「差集(Difference)」工具,位置同样在「地理处理工具」菜单下——它是用叠加层去"擦除"输入层
常见误区:「按位置选择(Select by Location)」也能实现类似效果,但它只是"选中"落在面内的要素,需要你手动另存为新图层;而「裁剪」一步直接输出结果文件。批量、自动化场景优先用「裁剪」。

3. 栅格裁剪:Tif 影像与 DEM 的两种裁法

栅格裁剪在「栅格」→「提取」菜单下,有两个工具,区别在于"边界怎么给":

3.1 按范围裁剪栅格(Clip Raster by Extent)

适合"我只要一个矩形区域"的场景:

  1. 打开「栅格」→「提取」→「按范围裁剪栅格」
  2. 「输入图层」选择要裁的 Tif 或 DEM
  3. 在「范围」处点击 ... 按钮选择范围来源——可以直接「在地图上画框」,也可以选择「使用图层范围」或手动输入坐标
  4. 指定输出路径,点击「运行」

3.2 按掩膜图层裁剪栅格(Clip Raster by Mask Layer)

这是裁 DEM、卫星影像最常用的工具——按不规则边界(行政区、流域面)裁剪:

  1. 打开「栅格」→「提取」→「按掩膜图层裁剪栅格」
  2. 「输入图层」选择 DEM/Tif;「掩膜图层」选择行政区面
  3. 按需勾选以下关键参数:
    • 「为结果指定 NoData 值」:给裁剪区外指定一个无意义值(常用 -9999),避免外区被填成 0
    • 「创建输出 Alpha 波段」:勾选后裁剪区外自动透明,叠加显示时不会出现黑边
    • 「将范围裁剪到 CUTLINE」:让输出范围收紧到掩膜边界,而不是掩膜的外接矩形
    • 「保持源分辨率」:不重采样、保持原始像元大小,输出结果与源数据精度一致
  4. 指定输出路径,点击「运行」
提示:掩膜图层与栅格坐标系不一致时,工具会自动将掩膜重投影到栅格坐标系再执行裁剪,一般无需手动转换。但如果掩膜边界与栅格不在同一地理范围内(例如填错了行政区),输出会是空白——这是"输出为空"问题最常见的原因。

4. 裁剪结果不对:三种高频现象的排查

4.1 裁剪后出现黑边或白色区域

这是 NoData 未正确设置的表现。裁剪区外的像元被填成了 0(在影像上显示为黑,在高程图上显示为低值)。解决办法:重新运行「按掩膜图层裁剪栅格」,勾选「创建输出 Alpha 波段」,或指定合理的 NoData 值(如 -9999)。

4.2 输出结果为空白

按顺序检查三点:

  1. 掩膜与栅格的范围是否重叠:在地图上目视检查两个图层是否在同一地理区域
  2. 掩膜图层是否有有效要素:打开掩膜图层的属性表确认要素非空;如果掩膜自带选择集,工具默认只使用选中的要素
  3. 坐标系是否标注正确:个别数据"坐标对但坐标系错标",需要先在图层属性中指派正确的坐标系

4.3 输出文件体积异常大或像元值变化

默认情况下工具可能对输出进行重采样或改变数据类型。DEM 等需要保持精度一致的场景,勾选「保持源分辨率」,并在输出设置中确认数据类型与源数据一致(如 Float32)。

5. 批量裁剪:一次处理多个图层

如果有多个县的数据需要分别裁剪,逐个运行太低效。QGIS 的处理工具箱支持批处理模式:

  1. 在「处理工具箱」中搜索并右键点击「按掩膜图层裁剪栅格」
  2. 选择「作为批处理执行」
  3. 在批量表格中逐行(或通过「自动填充」)填入各行的输入图层、掩膜图层与输出路径
  4. 点击「运行」,所有行依次执行

更复杂的批量场景(如按字段值循环裁剪)可以通过「处理建模器」搭建模型,或用 PyQGIS 脚本实现,属于进阶用法,这里不展开。

下一步:裁剪得到的行政区数据可以直接用于后续分析,推荐继续阅读 QGIS 空间分析教程;如果还没有安装 QGIS,请先看 QGIS 中文版下载安装指南