Saya memiliki gambar ukuran 1GB (.tif), dengan lebar dan tinggi 94000x71680. Saya ingin memotong gambar ini menjadi ubin 20000X20000 sehingga saya dapat memprosesnya.
Bagaimana saya bisa melakukan ini?
Saya memiliki gambar ukuran 1GB (.tif), dengan lebar dan tinggi 94000x71680. Saya ingin memotong gambar ini menjadi ubin 20000X20000 sehingga saya dapat memprosesnya.
Bagaimana saya bisa melakukan ini?
Jawaban:
Saya mengusulkan dua solusi: yang pertama menggunakan QGIS, yang kedua menggunakan Python (GDAL).
Di QGIS Anda dapat membuat mosaik VRT.
Silakan ikuti prosedur ini (lihat gambar di bawah):
Save As...
;Create VRT
opsi;OK
tombolnya.Misalnya, penggunaan parameter dalam dialog di atas pada raster sampel ini (parameter yang saya set dipilih secara acak):
akan menghasilkan 100 ubin di jalur yang ditentukan pada langkah 4:
Memuatnya di QGIS, mereka terlihat seperti ini:
Seperti @ bugmenot123 dengan benar katakan di komentar, hasilnya terlihat aneh hanya karena gaya setiap gambar cocok dengan distribusi nilai per gambar (tetapi data baik-baik saja).
Cara lain untuk mendapatkan hasil yang sama adalah penggunaan GDAL ( gdal_translate ).
Dengan merujuk pada contoh yang sama yang dijelaskan di atas, Anda dapat menggunakan skrip ini:
import os, gdal
in_path = 'C:/Users/Marco/Desktop/'
input_filename = 'dtm_5.tif'
out_path = 'C:/Users/Marco/Desktop/output_folder/'
output_filename = 'tile_'
tile_size_x = 50
tile_size_y = 70
ds = gdal.Open(in_path + input_filename)
band = ds.GetRasterBand(1)
xsize = band.XSize
ysize = band.YSize
for i in range(0, xsize, tile_size_x):
for j in range(0, ysize, tile_size_y):
com_string = "gdal_translate -of GTIFF -srcwin " + str(i)+ ", " + str(j) + ", " + str(tile_size_x) + ", " + str(tile_size_y) + " " + str(in_path) + str(input_filename) + " " + str(out_path) + str(output_filename) + str(i) + "_" + str(j) + ".tif"
os.system(com_string)
Anda jelas perlu menyesuaikan nilai-nilai dengan kasus spesifik Anda.
Jangan berpisah
Anda gdalbuildvrt , Anda dapat membuat ubin virtual yang hanya akan menggunakan beberapa byte pada disk Anda. Kemudian Anda dapat menggunakan sebagian besar perangkat lunak yang akan mengambil vrt Anda sebagai input untuk melakukan pemrosesan Anda.
Sebagai alternatif, saya lebih suka mencari alat yang dapat bekerja dengan gambar 1Gb daripada memecah dan menggabungkan gambar. Sebagai contoh, OTB memiliki sebagian besar kemampuan untuk pemrosesan gambar standar (dan terkadang canggih) dengan gambar besar. Anda dapat membungkus OTB untuk Python atau menjalankannya dari QGIS atau dari baris perintah.
Menggunakan alat Split Raster , Anda dapat membagi raster menjadi ubin berdasarkan beberapa metode pembagian termasuk ukuran setiap ubin atau jumlah ubin .
Juga lihat Memisahkan Raster di ArcGIS
Solusi lain menggunakan GDAL adalah alat gdal_retile.py :
mkdir image_tiles
gdal_retile.py -v -r bilinear -levels 1 -ps 20000 20000 -co "TILED=YES" -co "COMPRESS=JPEG" -targetDir image_tiles big_input_image.tif
Untuk Informasi lebih lanjut, lihat: http://www.gdal.org/gdal_retile.html