为什么GDAL无法打开大型地理Tiff文件?

3

使用Anaconda中的Python,gdal版本为2.2.2,libtiff版本为4.09,操作系统为Win 7,内存为8G:

更新完软件包后,我发现我的程序无法运行。在Anaconda的命令提示符中,它显示“未定义GDAL_DATA”,所以我添加了一个环境变量“%~dp0......\Library\share\gdal”。好的,它不再告诉我“未定义GDAL_DATA”。但是程序仍然无法运行~~ :(

from osgeo import gdal
import numpy as np
ds = gdal.Open('G:\Soil_GridV2\Sand\SNDPPT_M_sl1_250m_ll.tif')
channel = np.array(ds.GetRasterBand(1).ReadAsArray())

然后:
 from osgeo import gdal
 import numpy as np
 ds = gdal.Open('G:\Soil_GridV2\Sand\SNDPPT_M_sl1_250m_ll.tif')
 channel = np.array(ds.GetRasterBand(1).ReadAsArray())
 Traceback (most recent call last):

 File "<ipython-input-18-343e96de9e31>", line 4, in <module>
 channel = np.array(ds.GetRasterBand(1).ReadAsArray())

 AttributeError: 'NoneType' object has no attribute 'GetRasterBand'**

我在Spyder中检查了变量,发现ds的值为None。所以我猜测GDAL现在已经损坏,无法打开tiff文件?之后,我又试了一下一个小一点的tiff文件(大约67.8兆字节)。成功了!但是我发现我的GDAL无法打开大的地理tiff文件,比如第一个文件(大约2.15G)。

那么,我该怎么做来解决这个问题呢?还是应该用其他库替换它? :)


1
gdal.Open()之前尝试使用 gdal.UseExceptions() 来查看问题所在。 - cgohlke
你的系统是32位的吗?如果是,也许你正在遇到某种2GB限制的问题? - mgc
我的系统是64位的。 - X.H Cui
我在gdal.Open()之前添加了gdal.UseExceptions(),但是出现了RuntimeError: This is a BigTIFF file. BigTIFF is not supported by this version of GDAL and libtiff.错误提示。@mgc,@cgohlke - X.H Cui
1个回答

3

我已经通过使用pip命令更新GDAL 2.2.4来解决了它。注意:不要使用conda update命令,因为packages2.2.2不支持big tiff。


2
不是GDAL的版本,而是编译时使用的libtif版本。GDAL 2.2.2支持BigTIFF,但与2.2.4一样,只有在使用最新版本的libtif进行编译时才支持。我非常确定conda-forge频道上的GDAL构建支持它。请参见: http://www.gdal.org/frmt_gtiff.html - Rutger Kassies
2
感谢评论。我知道GDAL(> 2.0)和Libtiff(> 4.0)可以打开大型Tiff数据。使用GDAL = 2.2.2和Libtiff = 4.0.9的Anaconda提供了这个功能,但我失败了。当安装GDAL2.2.4时,我需要安装VC ++ 14构建工具。所以这让我感到困惑。因此,我怀疑Anaconda中的GDAL 2.2.2与Libtiff不匹配。 - X.H Cui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接