The geospatial data abstraction library is awesome!
With gdal_merge.py you can merge tiles of geospatial data together so that instead of multiple images you have one image. See the two images we want to merge below.
Find a link to two example data sets here. Extract the files into one folder.
Step 1: Go to Raster -> miscellaneous -> Merge
Step 2: Choose “input directory instead of files” and select the folder with the files you want to merge.
Step 3: Fill out the name of the output file.
Step 4: We add the nodata value (9999.990234375) by hand using the edit button.
Step 5: Press the Ok button.
To clean the data up we add a gdalwarp command.
Step 6: Go to raster -> projections -> warp (reproject)
Step 7: Fill out the inputfile, output file, source SRS, Target SRS and nodata values
You can of course also directly run the code constructed in QGIS in your terminal.
gdal_merge.py -n 9999.990234375 -of GTiff -o /path/to/myoutputfile.tif /path/to/inputfile1.tif /path/to/inputfile2.tif /path/to/inputfileX.tif gdalwarp -s_srs EPSG:4326 -t_srs epsg:4326 -dstnodata 0 -of GTiff /path/to/myoutputfile.tif /path/to/newoutputfile.tif
When you have a large number of files it is better to construct a string of the command in python and execute this automatically:
import os # three horizontal tiles horizontaltiles = [27,28,29] # horizontal tiles have different set of vertical tiles verticaltiles = [[6,7,8],[6,7,8,9],[6,7,8,9]] # location of the files pathname = "/path/to/" # the basename basename ="ETensemble250m" # for all years for year in range(2003,2015,1): # for all months for month in range(1,13,1): # the gdal_merge command command = "gdal_merge.py -n 9999.990234375 -of GTiff -o " # the output name outputname = pathname + "ET_ensemble_" + str(year) + "-" + str(month) + "-01_temp.tif " # set the string here. We want the command to run for each month in all years command = command + outputname # for all horizontal tiles horizontal tiles for h in horizontaltiles: # get index of hortizontal tile myindex = horizontaltiles.index(h) # for all vertica tiles for v in verticaltiles[myindex]: tile = "h" + str(h) + "v" + str(v) thedate = str(year) + "-" + str(month) + "-01" command = command + pathname + basename + "-" + tile + "-"+ thedate + ".tif " print " " print command # run gdal_merge.py tool with os call os.system(command) # warp to clean up data newoutputname = pathname + "ET_ensemble_" + str(year) + "-" + str(month) + "-01.tif " warpcommand = "gdalwarp -s_srs EPSG:4326 -t_srs epsg:4326 -dstnodata 0 -of GTiff " + outputname + " " + newoutputname print " " print warpcommand # execute gdalwarp command with os call os.system(warpcommand)