[GIS] GDAL equivalent of ArcGIS Mosaic

gdalgdalbuildvrtqgisraster

The word 'mosaic' is often used for quite different things within the worlds of ArcGIS and GDAL.

With GDAL and it's downstream applications like Qgis it is common to see mosaic used in the context of "assemble all these tiled images so they appear as one big image", with and gdalmerge put forth as a convenient means of getting there.

ArcGIS has the same starting point, "assemble all these tiled images so they appear as one big image", and then goes on to add "while doing so [blend, min, max, mean, sum, …] the overlapping pixels" and a few other things.

To put in uncharitably, in this regard ArcGIS is smart and GDAL is stupid.

However it's pretty evident GDAL is not stupid, so my question is: in the GDAL and/or Qgis tool chain what is the equivalent workflow to ArcGIS mosaic?

(note, I'm not talking about the Mosaic Dataset, which is a different beast altogether)

Best Answer

I think that the distinction between a full GIS and a raster/vector data access library (admittedly with some extremely useful GIS functionality and utilities) needs to be taken into consideration when comparing ArcGIS and GDAL capabilities. Noting that ArcGIS as of v10 uses GDAL for much of its underlying raster data I/O.

That said, GDAL mosaicing functionality is definitely limited in comparison to ArcGIS with regard to the overlap handling (but then again ArcGIS mosaic/mosaic to new raster is not very clever when compared to ENVI and Imagine which also include seamline/feathering and colour balancing functionality).

So to provide at least a token attempt at answering your question... I don't know of any existing equivalent workflow to mosaic while handling overlaps in a smarter manner in GDAL. But as I said, GDAL is a library, so this functionality could be developed on top of GDAL. A starting point might be the VRT pixel function capability of the "VRTDerivedRasterBand" subclass which can be developed as c/c++ plugins (or even as part of a python script).

Related Question