Python 为什么GDAL可以';我不会开一个大的geo Tiff?

Python 为什么GDAL可以';我不会开一个大的geo Tiff?,python,tiff,gdal,Python,Tiff,Gdal,python的anaconda.gdal版本=2.2.2 libtiff版本=4.09,Win 7,RAM=8G: 更新包后,我发现我的程序无法运行。在Anaconda提示符中,它显示“不确定的GDAL\U数据”,因此我添加了带有“%$dp0…”\Library\share\GDAL”的env变量。好的,它不会告诉我“不确定的GDAL\U数据”。但程序不工作~~:( 然后: from osgeo import gdal import numpy as np ds = gdal.Open('

python的anaconda.gdal版本=2.2.2 libtiff版本=4.09,Win 7,RAM=8G:

更新包后,我发现我的程序无法运行。在Anaconda提示符中,它显示“不确定的GDAL\U数据”,因此我添加了带有“%$dp0…”\Library\share\GDAL”的env变量。好的,它不会告诉我“不确定的GDAL\U数据”。但程序不工作~~:(

然后:

 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'**
从osgeo导入gdal
将numpy作为np导入
ds=gdal.Open('G:\Soil\u GridV2\Sand\SNDPPT\u M\u sl1\u 250m\u ll.tif')
channel=np.array(ds.GetRasterBand(1.ReadAsArray())
回溯(最近一次呼叫最后一次):
文件“”,第4行,在
channel=np.array(ds.GetRasterBand(1.ReadAsArray())
AttributeError:“非类型”对象没有属性“GetRasterBand”**
因此,我在spyder中检查变量,发现ds为无值。因此,我猜GDAL现在已损坏,无法打开tiff?因此我使用一个小tiff文件(约67.8 M)重试。成功!因此我发现我的GDAL无法打开大的Geo tiff文件 如第一档(约2.15G)


那么,我应该怎么做来修复它还是用其他lib重新安装它呢?:)

我已经通过使用pip命令更新gdal2.2.4解决了这个问题。注意:不要使用conda update命令,因为packages2.2.2不支持大tiff

请在
gdal.Open()
之前尝试
gdal.UseExceptions()
,看看有什么问题。您使用的是32位系统吗?如果是这样的话,也许你遇到了什么问题?我的系统是64位的。我在
gdal.Open()
之前添加了
gdal.UseExceptions()
,但是
RuntimeError:这是一个BigTIFF文件。此版本的GDAL和libtiff不支持BigTIFF。
@mgc、@cgohlkeit不是GDAL版本,而是编译时使用的libtif版本。GDAL 2.2.2确实支持BigTIFF,但与2.2.4一样,只有在使用最新版本的libtif编译时才支持。我非常肯定,基于conda forge频道的GDAL构建对它有支持。请参阅:感谢评论。我知道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。
 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'**