Calculer sur voisinage
La fonction « ST_MapAlgebra » est très puissante : elle permet de produire un nouveau canal calculé d'après une expression arbitraire fournie en argument.
Exemple :
1
CREATE TABLE mnt_algebra AS
2
SELECT 1 rid, ST_MapAlgebra(ST_Union(rast), 1, '16BUI',
3
'[rast.val] * (300 - sqrt( ([rast.x]-200)^2 + ([rast.y]-200)^2))'
4
) rast FROM mnt_25m_asc;
5
SELECT AddRasterConstraints('mnt_algebra', 'rast');
Dans cet exemple, on calcule avec l'expression « sqrt() » la distance du pixel par rapport au centre du raster (le pixel (100 ; 100) ) par le théorême de Pythagore, puis son complément à 300 que l'on multiplie par la valeur du pixel (qui représente l'altitude). Par conséquent on obtient un raster dont le pixel central est l'altitude multipliée par 300 et les autres multipliés par un facteur qui décroît quand on s'aloigne du centre jusqu'à atteindre 0 à la distance 300.