[GIS] Using rasters with different dimensions in GDAL_calc.py

gdal

I am processing several large (>40GB) geotiffs with GDAL_CALC.py and I encountered this error when attempting the process:

Error! Dimensions of file image.tif (198000, 126000) are different
from other files (198752, 126000). Cannot proceed.

This was the command I use to replace problem areas in a DEM with values from another DEM:

gdal_calc -A problem_areas.tif -B mosaic_A.tif -C fill_mosaic_B.tif
–outfile=dem_corrected.tif –calc="((A!=999)*B)+((A>=999)*C)"

My rather convoluted solution is to produce a convex hull vector from one raster and then use that to clip it and all other rasters with gdalwarp, thus redefining the dimensions:

gdalwarp -q -cutline convex_hull.shp -tr 0.5 0.5 -of GTiff
-srcnodata 0 -dstnodata 0 mosaicA.tif mosaicA_clipped.tif

I imagine each clip will take at least a day to process (one is processing slowly as I write this). Does anyone know if it is possible to calculate (using GDAL_calc.py) rasters that have different dimensions without resampling or clipping the rasters? Is there an easier way to avoid adjusting the dimensions, or is this the correct (albeit painful) approach? For instance, can the one problematic file be clipped to the dimensions of the other DEMs?

Best Answer

No, you'll have to clip to match. But you can speed up the process considerably by writing out a VRT instead of a GeoTIFF.

gdalwarp -of VRT -q -cutline convex_hull.shp -tr 0.5 0.5 -of GTiff -srcnodata 0 -dstnodata 0 mosaicA.tif mosaicA_clipped.vrt
Related Question