使用sits包绘制AWS Sentinel-2数据立方体图像时遇报错求助
问题分析与解决方案
错误根源
报错提示GDALDataset::GetRasterBand(2) - Illegal band #,说明代码尝试读取B04.tif的第2波段,但Sentinel-2 L2A COGS的单波段文件(如B04)本身仅包含1个波段。这个问题大概率是**sits包版本或其依赖的空间数据处理包版本差异**导致的——你当前使用的sits 1.2.0可能存在AWS S2 COGS数据波段索引的bug,而@aldo_tapia的环境用了修复该问题的更新版本。
解决方案
更新
sits包到最新版本
优先安装CRAN的最新稳定版,或者GitHub的开发版:# CRAN稳定版 install.packages("sits") # 或GitHub开发版(需先安装devtools) install.packages("devtools") devtools::install_github("e-sensing/sits")同步更新依赖的空间处理包
确保sf、stars、terra等依赖包也是最新版本,这些包的GDAL接口逻辑更新可能修复了远程文件波段读取的问题:install.packages(c("sf", "stars", "terra"))临时应急方案
如果暂时无法更新包,可以尝试手动指定读取第1波段,或先将数据下载到本地再处理(非长期解决方案):# 示例:手动读取单波段文件并指定波段1 b04_raster <- terra::rast("/vsicurl/https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/15/Q/YU/2019/2/S2B_15QYU_20190212_0_L2A/B04.tif", band=1)
验证
更新完成后,重新运行原代码,检查是否仍出现波段读取错误。
内容的提问来源于stack exchange,提问作者Jonathan V. Solórzano
相关产品推荐
相关产品推荐

