使用rsi包下载遥感STAC数据报错:GDAL error 4(文件不存在)
解决rsi包下载Landsat遥感数据时的GDAL文件不存在错误
针对你使用rsi::get_landsat_imagery()时出现的GDAL error 4(文件不存在)报错,可尝试以下排查方案:
检查GDAL版本兼容性
rsi依赖terra和rstac,而terra对GDAL版本有要求。运行terra::gdal()查看当前GDAL版本,建议升级至3.4以上:- Windows用户:安装最新版RTools或预编译GDAL库
- Linux/macOS用户:通过系统包管理器(如apt、brew)更新GDAL
更换输出路径,避免临时文件权限问题
系统临时目录可能存在权限限制或自动清理机制,指定自定义输出路径替代tempfile():# 替换为你有读写权限的路径,避免中文/特殊字符 output_path <- "D:/landsat_data/eco_zone.tif" EcoZone <- rsi::get_landsat_imagery( aoi = our_aoi, start_date = "2023-08-15", end_date = "2023-08-30", output_filename = output_path )验证目标Landsat数据的可用性
报错中提到的LC09_L2SP_012031_20230826_02_T1可能已从USGS数据库移除,或不符合默认筛选条件。用rstac手动查询数据状态:library(rstac) # 初始化STAC客户端 stac_client <- stac("https://landsatlook.usgs.gov/stac-server") # 查询指定AOI和时间范围的数据 search_result <- stac_client %>% stac_search(collections = "landsat-c2l2-sr", bbox = sf::st_bbox(our_aoi), datetime = "2023-08-15/2023-08-30") %>% get_request() # 查看第一条数据的属性(包括可用性、云量等) print(search_result$features[[1]]$properties)若目标数据不可用,可调整时间范围或添加云量筛选参数(如
max_cloud_cover = 20)。更新依赖包版本
旧版本的rsi/rstac可能存在下载逻辑bug,运行以下命令更新相关包:install.packages(c("rsi", "rstac", "terra", "sf"))注:R 4.2.0对部分最新包的兼容性有限,建议升级至R 4.3+版本以获得更好的支持。
排查网络与代理问题
企业/校园网络的代理可能拦截数据下载请求,可尝试:- 切换至公共网络测试
- 设置curl代理环境变量(替换为你的代理地址):
Sys.setenv(HTTP_PROXY = "http://proxy.example.com:8080") Sys.setenv(HTTPS_PROXY = "http://proxy.example.com:8080")
内容的提问来源于stack exchange,提问作者Mark Thompson
相关产品推荐
相关产品推荐

