我正在尝试在Colab上使用gdal将一个巨大的tiff文件分割成瓦片。
我的谷歌云盘已经挂载了,我可以从它里面读取和写入。
这段代码摘自这个答案:
com_string = "gdal_translate -of GTIFF -srcwin" + ...
os.system(com_string)
单元格完成了,但驱动器上没有新文件出现。 有任何想法或实现文件分割的其他方法吗?
我正在尝试在Colab上使用gdal将一个巨大的tiff文件分割成瓦片。
我的谷歌云盘已经挂载了,我可以从它里面读取和写入。
这段代码摘自这个答案:
com_string = "gdal_translate -of GTIFF -srcwin" + ...
os.system(com_string)
这篇回答提供了一个建议:
你需要想出像素/行位置或角落坐标,然后使用
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 上运行其他内容,并确保它能正常工作。