Statistiques sur les valeurs
Un raster est une grille régulière de valeurs, il est possible de calculer des statistiques sur les valeurs.
ST_ValueCount
La fonction « ST_ValueCount » fait l'inventaire des valeurs présentes dans le raster et compte le nombre de leur occurrence respective.
SELECT ST_ValueCount( ST_Union( rast ) ) FROM mnt_25m_asc;

Le résultat précédent comporte 79 enregistrements (79 lignes sont indiquées dans la barre de statut), ce qui signifie 79 valeurs différentes dans le raster. Le résultat nous montre que :
193 pixels portent la valeur 25 (qui est la valeur minimale) ;
235 pixels portent la valeur 26 ;
2192 pixels portent la valeur 27 ;
etc. En défilant vers le bas (non visible dans la capture ci-dessus), on atteint la dernière valeur qui vaut 103, au nombre de 27 : 27 pixels portent la valeur 103.
La fonction ST_ValueCount accepte un argument optionnel de type ARRAY pour ne compter que certaines valeurs, comme ceci :
SELECT ST_ValueCount( ST_Union( rast ), ARRAY[24,25,103,104] )
FROM mnt_25m_asc;

Le résultat précédent indique entre autres qu'aucun pixel ne porte la valeur 24, ce qui est cohérent avant le résultat global de ST_ValueCount qui indiquait 25 comme la plus petite valeur du raster.
La fonction ST_ValueCount peut aussi être appelée pour compter le nombre de pixels dont la valeur s'approche d'une valeur donnée (comme un arrondi) :
SELECT ST_ValueCount( ST_Union( rast ), 1, 30 ) FROM mnt_25m_asc;
Il existe d'autres arguments à cette fonction, comme l'arrondi. Se référer à la documentation [http://postgis.net/docs/RT_ST_ValueCount.html] pour plus de détails.
ST_SummaryStats
La fonction « ST_SummaryStats » retourne un résumé statistique des valeurs d'un raster, qui sont dans l'ordre :
nombre de valeurs différentes
somme totale
moyenne
écart-type
valeur minimale
valeur maximale
Pour connaître notre raster « mnt_25m », exécutons :
SELECT ST_SummaryStats( ST_Union( rast ) ) FROM mnt_25m_asc;

Nous retrouvons les valeurs minimale de 25 et maximale de 103 que ST_ValueCount avait retournées. Il y a 160 801 valeurs différentes, la somme est de 9 648 253, la moyenne de 60,0012 environ et l'écart-type de 25,7133 environ.
ST_Histogram
Enfin, la fonction « ST_Histogram » calcule un histogramme des valeurs en classes (nombre de classes spécifié en argument). Elle retourne un enregistrement pour chaque classe avec la valeur minimale, la valeur maximale, le nombre de valeurs dans la classe et le pourcentage par rapport à la population totale des valeurs.
SELECT (stats).*
FROM (SELECT ST_Histogram( ST_Union( rast ), 1, 5 ) as stats
FROM mnt_25m_asc) AS q;
L'argument « 1 » indique le canal à traiter. « mnt_25m » est un raster à 1 seul canal, alors la question ne se pose pas. Les rasters multi-canaux seront traités plus loin dans le module.
La requête comporte une sous-requête car la fonction « ST_Histogram » retourne des enregistrements complets. L'expression « (stats).* » permet d'extraire ces « sous-colonnes » pour en faire des colonnes « normales » (c'est-à-dire : de « premier niveau »).
