RasterIO加载VRT文件失败求助:重装系统及依赖后报错
我之前也碰到过几乎一模一样的问题,大概率是重装系统后路径映射、GDAL驱动支持或者权限出了问题,给你几个实用的排查和解决方向:
排查与解决步骤
1. 先确认VRT里的文件路径是否正确
首先打开报错的MOD09A1__2018049__sur_refl_b01.vrt文件,看看里面引用的HDF文件路径和当前系统里的实际路径是否匹配。重装系统后,磁盘的挂载点很可能变了——比如原来的/dev/sdf现在可能挂载到了/mnt/sdf或者其他目录。
- 用
df -h命令查看当前磁盘的挂载情况,确认HDF文件实际所在的位置。 - 如果路径确实不一致,可以用
sed批量替换VRT里的旧路径,比如:
sed -i 's/\/dev\/sdf\/MOD09A1/\/mnt\/sdf\/MOD09A1/g' MOD09A1__2018049__sur_refl_b01.vrt
2. 检查GDAL是否支持HDF4格式
重装后的GDAL可能没有编译HDF4驱动,导致无法识别HDF4_EOS:EOS_GRID这类格式。你可以运行以下命令验证:
gdalinfo --formats | grep HDF4
如果没有任何HDF4相关的输出,说明GDAL缺少HDF4支持。这时候需要重新安装带HDF4驱动的GDAL和rasterio:
- 先在Ubuntu上安装依赖包:
sudo apt-get install libhdf4-dev
- 推荐用conda安装(能更好管理依赖链):
conda install -c conda-forge rasterio hdf4
3. 验证文件访问权限
重装系统后,当前用户可能没有访问目标HDF文件的权限。你可以先检查文件权限:
ls -l /dev/sdf/MOD09A1/MOD09A1.A2000049.h20v04.006.2015136143235.hdf
如果权限不足,可修改目录权限:
sudo chmod -R 755 /dev/sdf/MOD09A1/
或者把当前用户加入到磁盘所属的用户组中。
4. 重新生成VRT文件
如果上面的方法都没解决问题,可能是旧VRT文件因为系统环境变化彻底失效了。你可以用pymodis.convertmodis_gdal.createMosaicGDAL重新生成一次VRT,确保生成过程中使用的路径是当前系统的正确路径。
内容的提问来源于stack exchange,提问作者pateheo
相关产品推荐
相关产品推荐

