Colab — Разделить большой файл tiff с помощью GDAL

#google-colaboratory #tiff #gdal

#google-совместная лаборатория #tiff #gdal

Вопрос:

Я пытаюсь разделить огромный файл tiff на плитки, используя gdal на Colab.

Мой Google Диск смонтирован, и я могу читать и записывать с него / в него.

Код взят из этого ответа:

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

Ячейка завершается, но на диске не отображаются новые файлы.
Есть идеи или другой способ добиться разделения файла?

Комментарии:

1. Пожалуйста, поделитесь автономной записной книжкой, которая воспроизводит проблему, которую вы наблюдаете.

Ответ №1:

Этот ответ дает предложение:

Вам нужно будет указать местоположения пикселей / линий или угловые координаты, а затем перебирать значения с помощью 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 Диском. Если это работает, вы знаете, что проблема в вашем монтаже. Если нет, то затем я бы проверил, получаете ли вы ожидаемое входное изображение с чем-то вроде plt.imshow(your_source_image) . Если вы видите изображение, то двигайтесь дальше. Если нет, то ваше исходное изображение либо отсутствует, либо путь указан неверно.

Если это все еще не работает, я подозреваю, что это проблема с вашей gdal установкой. В этом случае я бы сначала попробовал очень простую функцию и убедился, что она дает ожидаемый результат. Вы также можете попробовать запустить что-то еще в Collab и убедиться, что это работает.