Rasters multi-canal (« multi-bande »)

Jusqu'ici, nous avons travaillé avec un modèle numérique de terrain (MNT) qui ne comporte qu'un seul canal – on dit aussi « bande unique » –, c'est-à-dire que chaque pixel comporte une unique valeur.

Il est pourtant courant, avec les formats raster, de manipuler plusieurs valeurs par pixel. Il peut s'agir de valeurs dérivées ou de composantes d'imagerie. Pour une photo couleur, on utilise généralement 3 canaux qui encodent la luminosité des 3 couleurs de base du système additif : rouge, vert et bleu respectivement. Zéro représente « aucune luminosité » et 255 la valeur maximale « pleine luminosité ». Le blanc s'obtient par addition des 3 couleurs (255 ; 255 : 255), le jaune par addition de rouge et de vert (255 ; 255 ; 0), etc.

C'est ainsi qu'une photo est traitée en tant que raster, et c'est par ce mode de rendu que le raster est restitué en photo dans le rendu visuel. On notera à ce titre que le concept de couleur n'existe pas dans la donnée raster : on ne manipule pas des couleurs mais des canaux associés à chaque pixel, même c'est cela qui produit, in fine, les couleurs à travers le mode de rendu.

ST_NumBands

La fonction « ST_NumBands » retourne, pour un raster donné, le nombre de canaux disponibles :

1
SELECT ST_NumBands( ST_Union( rast ) ) FROM mnt_25m_asc;
La fonction ST_NumBands retourne 1 pour le MNT

Extraction par ST_Band et argument « nband »

Beaucoup de fonctions, dont ST_ValueCount et ST_Histogram, acceptent un argument « nband » de type nombre entier, optionnel ou non selon l’ambiguïté possible avec les arguments suivants. Cet argument indique le canal à utiliser par la fonction : il s'agit de son numéro, qui commence par 1 (premier canal = 1, second canal = 2, etc.).

Par ailleurs, la fonction « ST_Band » permet d'extraire un canal donné en tant que raster à canal unique. Ainsi les deux expressions suivantes sont équivalentes :

1
ST_ValueCount( rast, 2, 42 )

et

1
ST_ValueCount( ST_Band(rast , 2), 1, 42 )

Dans la première expression, « ST_ValueCount » est appelée pour chercher le nombre de pixels portants la valeur 42 dans le canal 2 du raster « rast ». Dans la seconde, « ST_Band » n'extrait que le canal 2 du raster « rast », qui devient le canal 1 (unique) du raster retourné qui est alors passé à « ST_ValueCount ».