<div dir="ltr">Hi team,<div><br></div><div>Fixing a bug in the Mapnik GDAL code (<a href="https://github.com/mapnik/mapnik/tree/master/plugins/input/gdal">https://github.com/mapnik/mapnik/tree/master/plugins/input/gdal</a>) where the return value of RasterIO() isn't checked (so eg. if a component TIFF in a VRT is unavailable it just trucks right along rendering blank images without error) and it appears to me like the usage of GDAL could be optimised a bit in <a href="https://github.com/mapnik/mapnik/blob/master/plugins/input/gdal/gdal_featureset.cpp">https://github.com/mapnik/mapnik/blob/master/plugins/input/gdal/gdal_featureset.cpp</a> </div><div><br></div><div>I'm curious whether any of the following will actually make much difference, or whether GDALs caching nullifies most of it already? Or whether there are potentially other obvious performance optimisations?</div><div><br></div><div>* Favouring dataset.RasterIO() over band.RasterIO() to prevent up to 4x raster reads<br></div><div><div>* Use of GetBlockSize() to read on block boundaries, then cropping data later.<br></div></div><div><div>* Use GetMaskBand()/GetMaskFlags() to simplify nodata/alpha handling (probably won't impact performance but might get rid of a bunch of code)</div></div><div><br></div><div>Cheers,</div><div><br></div><div>Rob :)</div><div>-- <br><div dir="ltr"><font face="arial narrow, sans-serif"><b>Koordinates<br></b>PO Box 1604, Shortland St, Auckland 1140, New Zealand<br>Phone +64-9-966 0433 <a href="https://koordinates.com/about" target="_blank">koordinates.com</a></font></div>
</div></div>