In building tile/block managers, I too have found it difficult to use
iterators or design algorithms without specifically considering both
tiles/blocks and cells. Without doing so, it is very easy to write code
which is (extremely) cache inefficient.
I'm not sure if flow algebras have arisen in the discussion yet, but
they come to mind when I think of raster algebras. They permit
operations in which the values of "downstream" cells are functions of
upstream cells. In such a case, efficient calculations are then driven
both by blocking and by the data itself. In recent work, I've found that
a number of flow algebra functions can be written by considering only
one block at a time (link
link <https://arxiv.org/abs/1608.04431>). I'm working on generalizing
the concept now and can imagine it forming an easy way to quickly add
general terrain analysis functionality.
gdal-dev mailing list