跳转到内容
AI Agent
QGIS
教程

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

Published

巴西 Cristalina 附近的中心支轴式喷灌农场,2026 年 7 月 7 日,左侧为真彩色,右侧为 NDVI,两半在同一组圆上相接。
巴西 Cristalina 附近的中心支轴式喷灌圆,2026 年 7 月 7 日。左为真彩色。右为同一景 Sentinel-2 影像的 NDVI。包含 2026 年经修改的 Copernicus Sentinel 数据。

要把 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 Agent2 分 47 秒,35 个操作
立刻在地图上看到影像,随后得到真彩色和 NDVI方法 3:Data Source Manager 中的 STAC10 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 位于 22KHG23KKB 上。

有两个处理级别很重要。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.403.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 位真彩色影像:把它拖到地图上即可。

构建你自己的合成影像

若要自定义拉伸,对 B04B03B02 按该顺序运行 Raster > Miscellaneous > Build Virtual Raster…,并勾选 “Place each input file into a separate band”。若要计算 NDVI,在 Raster Calculator 中应用偏移:("B08" - "B04") / ("B08" + "B04" - 2000)
Copernicus Browser 中 2026 年 7 月 Cristalina 上空 Sentinel-2 L2A 的搜索结果,每个产品都显示名称、约 1,090 MB 的大小、成像时间和一个下载箭头。
Copernicus Browser v1.56.0,2026 年 9 月 23 日:2026 年 7 月有 9 个云量低于 10% 的 L2A 产品。大小从 1,088 到 1,101 MB,每块瓦片每个日期一个产品。

适用场景: 你需要离线使用每一个波段、元数据和质量掩膜,或需要一个不依赖他人服务器的存档。

不适用场景: 你只需要查看某个地点,或在几块田地上计算指数。否则你会为了用到的几兆字节而下载 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,并将其样式设为从红到绿。

QGIS 中在真彩色影像之上叠加了从红到绿的 Cristalina NDVI layer,Layers 面板显示 NDVI 图例从 -0.2 到 0.9,AI Agent 面板给出了日期、0.00068% 的云量和 NDVI 范围 -0.65 到 0.94。
答案就在结果旁边:场景日期、云量、10 m 像素大小和 NDVI 范围 −0.65 到 0.94。

NDVI 是磁盘上的 GeoTIFF,而影像保持流式加载,与方法 3 一样。限制在于范围:它是在它围绕喷灌圆选定的框内计算 NDVI,而不是整块 110 km 的瓦片,所以当你需要更大区域时要明确指定。

在 QGIS 中免费试用 AI Agent

用户紧接着会问的问题是什么发生了变化。在同一个聊天中,我发送了:

现在把它与 2025 年 7 月同一区域云量最少的影像对比,显示哪些田地植被增加或减少。

在 2 分 43 秒内,它选取了 2025 年 7 月 17 日来自 Sentinel-2B 的场景(云量 0.0006%),在相同的 10 m 网格上计算 NDVI,并以 0.10 为阈值绘制差异。在 133 km² 中,39.14 km² 植被增加,14.52 km² 植被减少。它还补充了自己的提醒:这两幅影像在季节上相隔十天,因此作物生育期解释了一部分变化。它的检查点可以用一次点击撤销任意一条消息。

QGIS 中显示 2025 年 7 月到 2026 年 7 月间 Cristalina 附近喷灌圆和田地以绿色表示 NDVI 增加、红色表示 NDVI 减少,AI Agent 的答案给出 39.14 km² 增加和 14.52 km² 减少。
2025 年 7 月到 2026 年 7 月:绿色表示 NDVI 至少增加 0.10,红色表示至少减少 0.10。整个圆从一年到下一年会发生符号变化。

适用场景: 你希望一步完成场景选取、流式加载并生成指数或对比,或者你不想去查波段名称和偏移。

不适用场景: 你需要将完整产品离线归档。那是方法 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。
QGIS 的 STAC Connection 对话框,名称为 Earth Search,URL 为 https://earth-search.aws.element84.com/v1,身份验证为 No Authentication。
一次连接,无需身份验证。它会保留在你的 QGIS 配置文件中,供下一个项目使用。

设置筛选条件

点击 Filters…。勾选 Spatial Extent 并从地图画布或某个 layer 获取范围,勾选 Temporal Extent 并设置日期,然后在集合列表中只保留 “Sentinel-2 Collection 1 Level-2A”。点击 OK 运行搜索。
QGIS 的 STAC Search Filters 对话框:围绕 Cristalina 的 EPSG:4326 空间范围,日期为 2026 年 7 月 1 日至 31 日,仅勾选了 Sentinel-2 Collection 1 Level-2A。
范围、日期、集合。QGIS 3.44 中没有云量筛选器。

搜索返回了与 Copernicus 目录相同的 18 个场景。每一行都带有缩略图,缩略图就是你的云量筛选器:第一行是 7 月 29 日的 22KHG 瓦片,在你打开它之前就能看到云。双击某一行会打开 Details…,其中的 eo:cloud_cover 给出该瓦片的云量百分比。

QGIS Data Source Manager 中的 STAC 搜索结果:2026 年 7 月的 Sentinel-2 Collection 1 Level-2A 场景,每一个都带有缩略图和 COG 标签。
结果按最新在前排列,带有缩略图和 COG 标签。第一张缩略图上的白色斑块就是云。

只添加你需要的波段

右键点击场景,选择 Add Layer,然后选择 True color image。如果你想要 NDVI,对 Red - 10mNIR 1 - 10m 重复操作。底部的 Add 按钮会一次性加载该场景所有可流式加载的资源,这很少是你想要的。
QGIS STAC 结果中 2026 年 7 月 7 日场景的右键菜单,Add Layer 展开显示资源列表,其中 True color image 被高亮。
右键,Add Layer:每个波段一个条目。这两个菜单截取自正在运行的 QGIS,并放置在 Qt 绘制它们的位置。

这些 layer 以指向 COG 文件的 /vsicurl/ 链接加载。平移和缩放时,QGIS 会按所需的细节层级获取它需要的瓦片。图例告诉你第二件值得了解的事:红波段的读数大约在 0 到 1.6 之间,而不是以千计,因为 QGIS 应用了文件的缩放和偏移。

QGIS 中显示 2026 年 7 月 7 日 Cristalina 喷灌圆上空的 Sentinel-2 真彩色影像,Layers 面板列出了真彩色、红、近红外和 NDVI layer,红波段图例读数为 -0.0351 到 1.5977。
流式加载,而非下载。红和近红外图例以反射率表示,因此可直接套用普通 NDVI 公式。

计算 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。
QGIS Raster Calculator 的表达式框,其中是针对 NIR 1 和 Red layer 的 NDVI 公式,并标记为 Expression valid。
这里没有偏移项,因为这些 COG 本身就已经是反射率。

我的 NDVI 从农场池塘上方的 −0.65 到灌溉圆上的 0.94,平均值为 0.48。它与方法 2 中 AI Agent 的 layer 逐像素一致。7 月是这个高原的旱季:正在生长的喷灌圆读数在 0.85 到 0.93,裸露田地为 0.2 到 0.3。在真彩色下,正在生长的喷灌圆与溪流边深色的廊道林看起来相似。NDVI 能把它们区分开,也能把休耕的喷灌圆区分出来。

Cristalina 附近的中心支轴式喷灌圆,Sentinel-2 真彩色,然后是同一视图的 NDVI,从红到绿 (after)
Cristalina 附近的中心支轴式喷灌圆,Sentinel-2 真彩色,然后是同一视图的 NDVI,从红到绿 (before)
真彩色NDVI
拖动比较
Cristalina,2026 年 7 月 7 日,11.4 × 8.6 km。拖动滑块:在真彩色下看起来发暗的圆会分成正在生长的(深绿色)和休耕的(橙色)。包含 2026 年经修改的 Copernicus Sentinel 数据。

若要保存一份副本,右键点击该 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 数据对扫描地图进行地理配准

在 QGIS 中免费试用 AI Agent