Colab - 使用GDAL拆分大型tiff文件

3

我正在尝试在Colab上使用gdal将一个巨大的tiff文件分割成瓦片。

我的谷歌云盘已经挂载了,我可以从它里面读取和写入。

这段代码摘自这个答案:

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

单元格完成了,但驱动器上没有新文件出现。 有任何想法或实现文件分割的其他方法吗?

1
请分享一个自包含的笔记本,以重现您观察到的问题。 - Bob Smith
1个回答

3

这篇回答提供了一个建议:

你需要想出像素/行位置或角落坐标,然后使用 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 上运行其他内容,并确保它能正常工作。


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