如何在 QGIS 中下载 Sentinel-2 影像
Published

要把 Sentinel-2 影像导入 QGIS 3.42 或更新版本,请打开 Layer > Data Source Manager,选择 STAC 选项卡,并添加一个指向 Earth Search 的连接:https://earth-search.aws.element84.com/v1。按范围、日期和 Sentinel-2 Level-2A 集合进行筛选,然后右键点击某个场景并选择 Add Layer > True color image。影像会直接流式加载,无需账号,也无需下载。
当你确实想要文件本身,也就是 .SAFE 格式的完整产品时,Copernicus Browser 是官方来源,但需要免费的账号。我在 2026 年 9 月 23 日于 QGIS 3.44.7 中运行了下文所有方法,地点是巴西戈亚斯州 Cristalina 周边的中心支轴式喷灌农场,并记录下了每一种方法的耗时。
简要回答
| 你想要 | 方法 | 在 Cristalina 的实测结果 |
|---|---|---|
| 磁盘上的完整产品,包含每个波段和元数据 | 方法 1:Copernicus Browser | 每个场景约 1.1 GB,需要免费账号 |
| 在一条消息里得到云量最少的场景和一个 NDVI layer | 方法 2:QGIS 中的 AI Agent | 2 分 47 秒,35 个操作 |
| 立刻在地图上看到影像,随后得到真彩色和 NDVI | 方法 3:Data Source Manager 中的 STAC | 10 m 分辨率下绘制 133 km² 用时 5.4 秒,无需账号 |
| 用于在 SCP 中分类的场景 | 方法 4:Semi-Automatic Classification Plugin | 搜索用时 26 秒,需额外安装 Python 包 |
我默认使用方法 3。在 2026 年,仅仅为了查看某个场景或在几块田地上计算指数,你几乎不需要下载 Sentinel-2 场景。当你需要离线使用全部 13 个波段,或需要一个自己掌控的存档时,再下载完整产品。
开始之前
Sentinel-2 是欧洲 Copernicus 的光学任务。2026 年 7 月,Sentinel-2A、2B 和 2C 三颗卫星都在采集数据:该月目录中 Cristalina 上空有 9 个日期。每个场景按 UTM 划分为 109.8 km × 109.8 km 的瓦片,命名为类似 22KHG 的形式,靠近瓦片边缘的地点会同时落在两块瓦片上。Cristalina 位于 22KHG 和 23KKB 上。
有两个处理级别很重要。Level-1C 是大气层顶反射率。Level-2A 经过大气校正,转为地表反射率,并附带一个场景分类波段(SCL),用于标记云和阴影。凡是要跨日期比较的内容,包括 NDVI,都应选择 L2A。
你最常用到的波段是 10 m 的:B2 蓝、B3 绿、B4 红和 B8 近红外。真彩色是 B4、B3、B2 分别对应红、绿、蓝,NDVI 是 (B8 − B4) / (B8 + B4),这两个定义 Copernicus Browser 会在自己的 layer 下给出。多光谱与高光谱对比文章 解释了其余波段测量的是什么。
Browser 面板中的 STAC 需要 QGIS 3.40 或更新版本,Data Source Manager 中的搜索需要 3.42 或更新版本,详见 3.40 和 3.42 更新日志。
网络上的常见错误说法
“必须先把产品下载下来。” 大多数教程仍然从 1 GB 的 zip 开始。Earth Search 和其他 STAC 目录以 Cloud-Optimized GeoTIFF 形式提供每一个 Sentinel-2 L2A 波段,而 QGIS 只读取它需要绘制的那部分文件。Cristalina 瓦片的真彩色文件为 297 MB。QGIS 在冷启动状态下,用 5.4 秒从该文件以全分辨率绘制了我 133 km² 的窗口,没有保存任何内容。
“NDVI 就是对原始值套用 (B8 − B4) / (B8 + B4)。” 自 2022 年 1 月 25 日启用的处理基线 04.00 起,L2A 的数值带有偏移:反射率为 (数值 − 1000) / 10000,MTD_MSIL2A.xml 中的 BOA_ADD_OFFSET -1000 正是这么写的。对原始值直接套用该公式是错误的。在同一块喷灌圆的某个窗口上,我用原始数值算得 0.517,去除偏移后算得 0.768。
问题在于,有些来源会替你修正偏移。.SAFE 的 JP2 波段不会,QGIS 会把它们当作原始数值读取。Earth Search Collection 1 的 COG 带有缩放和偏移,QGIS 会在加载时应用,因此在那里直接套用公式是正确的。先用 Identify 工具点选一个像素:数值达到数千表示原始数值,介于 0 到约 1 之间的数值表示反射率。
“云量百分比就是你田地上空的云量。” 它其实是整块瓦片上空的云量。2026 年 7 月 29 日,同一卫星轨道经过 Cristalina 时,22KHG 瓦片读数为 22% 云量,23KKB 瓦片为 2.6%。一个 20% 云量的场景在你农场上方可能是晴朗的,而一个 3% 的场景唯一的一朵云可能就压在它上面。请查看你自己区域上方的影像,或 SCL 波段。
方法 1:从 Copernicus Browser 下载 L2A 产品
Copernicus Browser 是访问该档案库的官方入口。你无需账号即可搜索。下载时会要求你登录,注册是免费的。
搜索
打开 Search 选项卡。勾选 SENTINEL-2,再勾选 L2A,把云量滑块拖到 10%。设置时间范围,并在地图上标记一个兴趣点或绘制一个区域。点击 Search。选择场景
对于 2026 年 7 月的 Cristalina,Browser 在那一个月的 18 个 L2A 产品中列出了 9 个云量低于 10% 的产品。每个都是约 1,090 MB 的.SAFE 产品,每块瓦片每个日期一个。用缩略图判断你区域上空的云量。下载
点击下载箭头。匿名状态下,Browser 会提示 “You need to log in to use this function.” 登录后 zip 即开始下载。在 QGIS 中加载波段
解压它。10 m 波段位于GRANULE/<granule>/IMG_DATA/R10m/,为 JPEG 2000 文件,每个波段一个,每个约 105 到 130 MB。TCI_10m.jp2 是现成的 8 位真彩色影像:把它拖到地图上即可。构建你自己的合成影像
若要自定义拉伸,对B04、B03 和 B02 按该顺序运行 Raster > Miscellaneous > Build Virtual Raster…,并勾选 “Place each input file into a separate band”。若要计算 NDVI,在 Raster Calculator 中应用偏移:("B08" - "B04") / ("B08" + "B04" - 2000)。
适用场景: 你需要离线使用每一个波段、元数据和质量掩膜,或需要一个不依赖他人服务器的存档。
不适用场景: 你只需要查看某个地点,或在几块田地上计算指数。否则你会为了用到的几兆字节而下载 1.1 GB。
方法 2:在 QGIS 中询问 AI Agent
我们构建了这类工具之一 AI Agent,它是 QGIS 内的一个聊天面板,会在你打开的项目中执行这些步骤。本节介绍的是我们自己的工具。
在一个空项目中,我输入了:
找出 2026 年 7 月巴西 Cristalina 周边中心支轴式喷灌圆云量最少的 Sentinel-2 影像,用真彩色显示,然后添加一个 NDVI layer。
2:47min
从发送到给出答案
35
一条消息中的操作数
0.00068%
它所选场景的云量
133km²
10 m NDVI 覆盖面积
它对 Cristalina 进行了地理编码,在 Earth Search 中搜索 2026 年 7 月,并选中了 7 月 7 日来自 Sentinel-2C、瓦片 22KHG、云量 0.00068% 的场景。这是该镇上空的 18 个 7 月场景中云量最低的,与方法 1 和方法 3 手工得到的答案相同。它流式加载了真彩色、红和近红外的 COG,在添加前询问了一次,在喷灌圆周边 133 km² 的范围内以 10 m 计算 NDVI,并将其样式设为从红到绿。

NDVI 是磁盘上的 GeoTIFF,而影像保持流式加载,与方法 3 一样。限制在于范围:它是在它围绕喷灌圆选定的框内计算 NDVI,而不是整块 110 km 的瓦片,所以当你需要更大区域时要明确指定。
用户紧接着会问的问题是什么发生了变化。在同一个聊天中,我发送了:
现在把它与 2025 年 7 月同一区域云量最少的影像对比,显示哪些田地植被增加或减少。
在 2 分 43 秒内,它选取了 2025 年 7 月 17 日来自 Sentinel-2B 的场景(云量 0.0006%),在相同的 10 m 网格上计算 NDVI,并以 0.10 为阈值绘制差异。在 133 km² 中,39.14 km² 植被增加,14.52 km² 植被减少。它还补充了自己的提醒:这两幅影像在季节上相隔十天,因此作物生育期解释了一部分变化。它的检查点可以用一次点击撤销任意一条消息。

适用场景: 你希望一步完成场景选取、流式加载并生成指数或对比,或者你不想去查波段名称和偏移。
不适用场景: 你需要将完整产品离线归档。那是方法 1。免费套餐每月 10 条消息,这两次运行用了两条。
方法 3:在 QGIS 中用 STAC 流式加载
STAC 是如今大多数卫星档案库发布的目录标准。QGIS 可原生读取它,Element 84 的 Earth Search 从 AWS 开放数据桶提供 Sentinel-2 L2A,无需密钥。
Microsoft Planetary Computer 拥有相同的档案库,但它的文件需要签名 token:对 7 月 7 日影像的未签名请求返回了 HTTP 409,而我的 QGIS 3.44.7 构建版本没有针对它的身份验证方法。所以我用了 Earth Search。
添加连接
Layer > Data Source Manager,STAC 选项卡,New。为其命名,粘贴 https://earth-search.aws.element84.com/v1,OK,然后 Connect。
设置筛选条件
点击Filters…。勾选 Spatial Extent 并从地图画布或某个 layer 获取范围,勾选 Temporal Extent 并设置日期,然后在集合列表中只保留 “Sentinel-2 Collection 1 Level-2A”。点击 OK 运行搜索。
搜索返回了与 Copernicus 目录相同的 18 个场景。每一行都带有缩略图,缩略图就是你的云量筛选器:第一行是 7 月 29 日的 22KHG 瓦片,在你打开它之前就能看到云。双击某一行会打开 Details…,其中的 eo:cloud_cover 给出该瓦片的云量百分比。

只添加你需要的波段
右键点击场景,选择Add Layer,然后选择 True color image。如果你想要 NDVI,对 Red - 10m 和 NIR 1 - 10m 重复操作。底部的 Add 按钮会一次性加载该场景所有可流式加载的资源,这很少是你想要的。
这些 layer 以指向 COG 文件的 /vsicurl/ 链接加载。平移和缩放时,QGIS 会按所需的细节层级获取它需要的瓦片。图例告诉你第二件值得了解的事:红波段的读数大约在 0 到 1.6 之间,而不是以千计,因为 QGIS 应用了文件的缩放和偏移。

计算 NDVI
Raster > Raster Calculator…,表达式为 ("NIR 1 - 10m@1" - "Red - 10m@1") / ("NIR 1 - 10m@1" + "Red - 10m@1")。把范围设置为你自己的区域,而不是整块瓦片:我在喷灌圆周边使用了 11.4 × 11.6 km 的范围,10 m 分辨率下为 1,140 × 1,163 像素。它在不到一秒内写出了 GeoTIFF。
我的 NDVI 从农场池塘上方的 −0.65 到灌溉圆上的 0.94,平均值为 0.48。它与方法 2 中 AI Agent 的 layer 逐像素一致。7 月是这个高原的旱季:正在生长的喷灌圆读数在 0.85 到 0.93,裸露田地为 0.2 到 0.3。在真彩色下,正在生长的喷灌圆与溪流边深色的廊道林看起来相似。NDVI 能把它们区分开,也能把休耕的喷灌圆区分出来。


若要保存一份副本,右键点击该 layer,选择 Export > Save As…,写出裁剪到你范围的 GeoTIFF。你只会得到你区域的 10 m 像素,别无其他。
适用场景: 你想查看某个日期某个地点的影像、构建合成影像或计算指数,并且 QGIS 为 3.42 或更新版本。
不适用场景: 你需要离线工作,或需要数百个场景来做时间序列。针对同一个 STAC API 编写脚本才是合适的工具。
方法 4:Semi-Automatic Classification Plugin
Semi-Automatic Classification Plugin(SCP)有一个 Download products 选项卡,在 2026 年它仍可用于 Sentinel-2。SCP 8.5 是适用于 QGIS 3 的版本,plugin 仓库中的 9.0 系列适用于 QGIS 4。它基于 Remotior Sensus 库构建,其 plugin 页面写着它 “requires the installation of additional dependencies”。
我在同一区域测试了它的搜索引擎 Remotior Sensus 0.7.7。“Sentinel-2” 来源查询 Copernicus 目录,用 26 秒列出了 7 月 7 日和 7 月 17 日的场景。在没有 Copernicus 凭据的情况下,SCP 会从 Google Cloud 的公共 Sentinel-2 桶下载产品,而该桶中存有 7 月 7 日的 L2A 产品。“Sentinel-2_MPC” 来源查询 Planetary Computer,在 0.2 秒内给出了结果。
耗费我时间的是安装环节。SCP 需要在 QGIS 自带的 Python 中安装 Remotior Sensus 和 SciPy。在 macOS 的 QGIS 3.44.7 应用中,用 pip 安装的 SciPy 无法加载,所以我在 plugin 之外运行了搜索。在 Windows 和 Linux 上,请遵循 SCP 手册的安装章节。
适用场景: 你反正都要在 SCP 中对该影像进行分类。它在一个地方完成下载、转换为反射率并构建波段集。
不适用场景: 你只需要一张影像或一个指数。方法 3 无需安装任何东西。
记住这些要点
- 对大多数工作,通过 STAC 流式加载 Sentinel-2:
Layer > Data Source Manager,STAC 选项卡,Earth Search,然后右键点击场景,选择Add Layer。无需账号,也不下载 1.1 GB。 - 当你需要离线使用每一个波段时,用免费账号从 Copernicus Browser 下载 L2A
.SAFE产品。 - 真彩色是 B4、B3、B2,NDVI 是 (B8 − B4) / (B8 + B4),两者都是 10 m,跨日期比较的任何内容都要用 Level-2A。
- 自处理基线 04.00(2022 年 1 月)起,L2A 原始数值带有 1,000 的偏移:在计算 NDVI 前要去除它,除非你的数据源已经处理过,并先用 Identify 检查一个像素。
- 场景的云量百分比覆盖的是它的 110 km 瓦片,而不是你的田地。同一轨道经过 Cristalina 时,一块瓦片读数为 22%,另一块为 2.6%。
常见问题
获取 Sentinel-2 影像需要 Copernicus 账号吗?
流式加载不需要。AI Agent、通过 STAC 的 Earth Search 和 SCP 的 Google Cloud 途径都在没有账号的情况下正常工作。若要从 Copernicus Browser 下载产品,以及使用 Sentinel Hub plugin,则需要一个免费的 Copernicus Data Space Ecosystem 账号。
L1C 还是 L2A:应该下载哪一个?
几乎所有情况都选 L2A。它经过大气校正,因此在有霾的日子和晴朗的日子,同一块田地的读数一致,并且它带有标记云和阴影的 SCL 波段。L1C 是大气层顶反射率,体积更小(同一轨道经过 Cristalina 时约 760 MB,而 L2A 为 1,090 MB),适合你自己运行大气校正的情况。
哪些 Sentinel-2 波段构成真彩色,哪些用于 NDVI?
真彩色是 B4 红、B3 绿和 B2 蓝,每个 L2A 产品还以 TCI 的形式附带现成的真彩色影像。NDVI 使用 B8(近红外)和 B4:(B8 − B4) / (B8 + B4)。这四个波段都是 10 m。对于处理基线 04.00 及之后的 L2A 原始数值,要先从每个波段中减去 1,000。
如何按云量筛选 Sentinel-2 影像?
在 Copernicus Browser 中,使用 Search 选项卡里 Sentinel-2 下方的云量滑块。QGIS 3.44 的 STAC 搜索没有云量筛选器,所以要查看缩略图,或 Details… 中的 eo:cloud_cover。无论哪种方式,该数字覆盖的都是整块瓦片。对于你田地范围内的像素,L2A 的 SCL 波段将云阴影标记为 3,将云标记为 8 和 9。
我可以把 Sentinel-2 流式加载到 QGIS 而不下载吗?
可以,从 QGIS 3.40 起可在 Browser 面板中操作,从 3.42 起可在 Data Source Manager 中搜索。这些波段是 Cloud-Optimized GeoTIFF,QGIS 只读取它需要绘制的瓦片:在我的测试中,10 m 分辨率下的 133 km² 视图用时 5.4 秒。当你需要离线使用时,用 Export > Save As… 保存一份裁剪副本。
Sentinel Hub plugin 还能用吗?
它仍在维护:2.0.8 版本于 2026 年 6 月 9 日发布在 QGIS plugin 仓库。它需要一个 Copernicus Data Space 或 Sentinel Hub 账号,外加一个 OAuth 客户端,其页面警告说 Copernicus endpoint 在 macOS 上可能无法工作。Copernicus 自己的文档将它描述为一个查看器,并将单次下载引导到 Copernicus Browser。本文没有对它进行测试。
想了解更多关于聊天面板在 QGIS 中能做什么,AI Agent 指南 还有十多个真实运行案例,QGIS AI 中心 汇集了其余内容。若要把上面的 NDVI 转换为田块多边形,raster 转矢量文章 从这里接着讲。两篇配套教程分别介绍 下载 OpenStreetMap 数据 和 对扫描地图进行地理配准。
3.42 或更新版本,请打开 

