Reclassifier les valeurs
ST_Reclass
La fonction « ST_Reclass » permet de reclasser les valeurs du canal donné d'un raster, c’est-à-dire modifier la valeur par proportionnalité sur intervalles discrets.
Dans ce premier exemple, les valeurs entre 24 et 40 sont « dilatés » sur l’intervalle [0–90] et les valeurs entre 40 et 104 « comprimées » sur l'intervalle [91–100], ce qui a pour effet de bien montrer les nuances de faible altitude au détriment des différences entre hautes altitudes. En d'autres termes :
une valeur égale à 24 devient la valeur 0
une valeur X entre 24 et 40 (compris) devient la valeur (X – 24) / (40 – 24), proportionnelle
une valeur X entre 40 et 104 devient la valeur (X – 91) / (100 – 91) + 91
CREATE TABLE mnt_reclass AS
SELECT 1 rid, ST_Reclass(rast, 1,
'24-40]:0-90,(40-104:91-100', '16BUI'
) rast FROM mnt_25m_asc;
SELECT AddRasterConstraints('mnt_reclass', 'rast');
Classification en 3 canaux et représentation RVB
On peut effectuer plusieurs classifications et les réunir en canaux respectifs au sein d'un raster unique, qui sera rendu par défaut dans QGIS en couleur RVB (rouge, vert, bleu) :
CREATE TABLE mnt_reclass2 AS
SELECT 1 rid, ST_AddBand(ST_MakeEmptyRaster(rast), ARRAY[
ST_Reclass(rast, 1, '24-40]:255-0,(40-80]:0,(80-104:0-255', '8BUI'),
ST_Reclass(rast, 1, '24-104:0-255', '8BUI'),
ST_Reclass(rast, 1, '24-104:255-0', '8BUI')
]) rast FROM mnt_25m_asc;
SELECT AddRasterConstraints('mnt_reclass2', 'rast');
L'argument « 8BUI » (ou plus haut « 16BUI » est le type de la valeur pixel : 4 bits, 8 bits, signé ou non-signé, etc. On utilise « 8BUI » pour des entiers non-signés (positifs) codés sur 8 bits, soit les valeurs entières de l'intervalle [0–255]. Pour plus d'information, on se référera à la documentation officielle [http://postgis.net/docs/RT_ST_BandPixelType.html].
Dans cet exemple, on affecte du rouge aux altitudes les plus basses (inférieures à 40) et les plus hautes (supérieures à 80), ce qui se traduit par du violet dans le premier cas et du jaune dans le second (les altitudes entre 40 et 80 ont une valeur « rouge » de zéro). Le vert quant à lui est proportionnel à l'altitude sur l'intervalle [24–104] ; en revanche, le bleu est proportionnellement inverse à l'altitude sur ce même intervalle, d'où le violet à basse altitude (beaucoup de bleu) et le jaune à haute altitude (peu de bleu).