首页 > 解决方案 > Colab - 使用 GDAL 拆分大 tiff 文件

问题描述

我正在尝试使用 Colab 上的 gdal 将一个巨大的 tiff 文件拆分为图块。

我的谷歌驱动器已安装,我可以读取和写入它。

代码取自这个答案:

com_string = "gdal_translate -of GTIFF -srcwin" + ...
os.system(com_string)

单元完成,但驱动器上没有显示新文件。任何想法或其他方式来实现文件的拆分?

标签: google-colaboratorytiffgdal

解决方案


这个答案给出了一个建议:

您需要提出像素/线位置或角坐标,然后使用gdal_translate.

import os, sys
from osgeo import gdal

dset = gdal.Open(sys.argv[1])

width = dset.RasterXSize
height = dset.RasterYSize

print width, 'x', height

tilesize = 5000

for i in range(0, width, tilesize):
    for j in range(0, height, tilesize):
        w = min(i+tilesize, width) - i
        h = min(j+tilesize, height) - j
        gdaltranString = "gdal_translate -of GTIFF -srcwin "+str(i)+", "+str(j)+", "+str(w)+", " \
            +str(h)+" " + sys.argv[1] + " " + sys.argv[2] + "_"+str(i)+"_"+str(j)+".tif"
        os.system(gdaltranString)

当然,这取决于您的gdal安装是否正常工作。如果上述方法不起作用(您仍然没有文件),请尝试首先在不是已安装的 Google Drive 的位置运行它。如果可行,您就知道问题出在您的安装上。如果没有,接下来我会检查以确保您获得了您期望的输入图像,例如plt.imshow(your_source_image). 如果您看到图像,请继续。如果不是,则您的源图像丢失或路径错误。

如果它仍然不起作用,我怀疑这是您的gdal安装问题。在这种情况下,我会首先尝试一个非常简单的函数,并确保它给出了您期望的结果。您也可以尝试在 Collab 上运行其他东西并确保它有效。


推荐阅读