[gdal-dev] FW: gdal_merge.py
Even Rouault
even.rouault at spatialys.com
Wed Mar 28 12:11:40 PDT 2018
On mercredi 28 mars 2018 17:58:37 CEST Raphael Das Gupta wrote:
> On 28.03.2018 16:31, Marcos Dione wrote:
> > in my opinion, gdal_merge should be used only if the merged version
> >
> > will be used for more things or if you're going to use it with something
> > that doesn't know how to read the .vrt files (i.e., is not using gdal).
>
> Even then it seems to be faster to first create a (temporary) .vrt file
> and then convert that to something else (thereby materializing the
> content) with e.g. gdaltranslate. (And then throw away the temporary
> .vrt file.)
>
> In my (and others', see e.g.
> https://stackoverflow.com/a/22602542/674064) experience, the combined
> runtime of gdalbuildvrt and gdaltranslate will be shorter than that of
> gdal_merge.py would be. (And the quality of the result might also be
> better.)
>
> Though I don't know whether that was just the case for the examples I
> encountered so far or whether that's always the case. Also, I don't know
> whether there are use-cases of gdal_merge.py that gdalbuildvrt +
> gdaltranslate (or + gdalwarp) can't handle.
>
> If not, maybe gdal_merge.py should be reimplemented as a wrapper of
> gdalbuildvrt + gdaltranslate, so that the obvious (and most convenient)
> choice is also the best one?
My summary of different solutions:
* gdalbuildvrt + gdaltranslate:
- pros:
+ efficient regarding compression of output dataset
+ work with arbitrarily large input datasets.
+ several resampling methods
- cons:
+ does not handle as one would expect overlapping input datasets regarding masking / nodata / alpha.
+ cannot update an output dataset
+ all input datasets must have same projection
* gdalwarp:
- pros:
+ handles properly nodata / mask / alpha in input datasets (with alpha blending for alpha)
+ several resampling methods.
+ can deal with input datasets in different projections
+ can update an existing output dataset
- cons:
+ can lead to datasets larger than needed with compression methods (unless -wo OPTIMIZE_SIZE=TRUE).
+ May be slower than other methods.
* gdal_merge.py:
- pros:
+ handles nodata / mask in input dataset (alpha seen as binary mask)
+ can update an existing output dataset
- cons:
+ only nearest resampling
+ cannot deal with arbitrarily large input datasets (ingests each input dataset fully in memory)
+ not friendly for compressed output
+ all input datasets must have same projection
So indeed gdal_merge.py could potentially be emulated with gdalbuildvrt+gdal_translate if there's no
overlap between input datasets or if they don't have nodata/mask, and otherwise on gdalwarp.
Exercice left to readers :-)
Even
--
Spatialys - Geospatial professional services
http://www.spatialys.com
More information about the gdal-dev
mailing list