【问题标题】:Why GDAL can't open big geo Tiff?为什么GDAL打不开big geo Tiff?
【发布时间】:2018-09-19 12:34:51
【问题描述】:

python with anaconda .gdal version =2.2.2 libtiff version =4.09 ,Win 7 ,RAM =8G:

更新软件包后,我发现我的程序无法运行。在 Anaconda 提示符中,它显示“不确定 GDAL_DATA”,所以我添加了带有 '%~dp0......\Library\share\gdal' 的 env 变量。好吧,它没有告诉我“不确定 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 M)再试一次。成功了!所以我发现我的 GDAL 无法打开大的 Geo tiff 文件 比如第一个文件(约2.15G)

那么,我应该修复它还是用其他库替换它? :)

【问题讨论】:

  • gdal.Open() 之前尝试gdal.UseExceptions() 看看有什么问题。
  • 您使用的是 32 位系统吗?如果是这样,也许你在打某种2GB limit
  • 我的系统是64位的。
  • 我在gdal.Open()之前加了gdal.UseExceptions(),但是RuntimeError: This is a BigTIFF file. BigTIFF is not supported by this version of GDAL and libtiff.@mgc,@cgohlke

标签: python tiff gdal


【解决方案1】:

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

【讨论】:

  • 不是GDAL的版本,而是编译时使用的libtif版本。 GDAL 2.2.2 确实支持 BigTIFF,但与 2.2.4 一样,只有在使用最新版本的 libtif 编译时才支持。我很确定在 conda-forge 频道上构建的 GDAL 支持它。见:gdal.org/frmt_gtiff.html
  • 感谢评论。我知道 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 很好地匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 2020-08-24
  • 2016-05-12
相关资源
最近更新 更多