Modifier la résolution
La fonction « ST_Resize » prend un raster en argument et retourne le même raster ré-échantilloné. La géographie totale du raster ne change pas mais le nombre de points change – donc leur résolution – pour correspondre aux dimensions données en argument.
Si pour X ou Y le nombre de pixels en sortie n'est pas un multiple de celui en entrée, un algorithme est utilisé pour interpoler la valeur des pixels « qui tombent entre deux ». Les algorithmes disponibles sont par ordre de rapidité (inverse de la qualité) : NearestNeighbor, Bilinear, Cubic, CubicSpline, Lanczos.
Exemple avec notre modèle numérique de terrain (MNT) importé dans le dernier module :
SELECT rid, ST_Resize(rast, 0.05, 0.05) rast FROM mnt_25m_asc;
Dans cet exemple, on ré-échantillonne le raster en ne gardant sur chaque dimension que 5 % des points (soit 0,0025 % des points au total).
Afin de visualiser le résultat avec QGIS, on crée une table à partir de cette requête :
CREATE TABLE mnt_resize AS
SELECT rid, ST_Resize(rast, 0.05, 0.05) rast FROM mnt_25m_asc;
Sans oublier d'ajouter les contraintes (sinon QGIS n'affichera pas la couche) :
SELECT AddRasterConstraints('mnt_resize', 'rast');
Au lieu de donner des pourcentages à ST_Resize (en nombre réels), on peut lieu donner des dimensions absolues. Étant donné que les tuiles font ici 100 pixels de côté, on aurait pu écrire en nombre entiers (attention : « 5 » est un nombre entier, « 5.0 » est un nombre réel) :
SELECT rid, ST_Resize(rast, 5, 5) rast FROM mnt_25m_asc;
Cependant, parce que notre raster de taille 401x401 compte 5 tuiles sur chaque dimension (4 tuiles de 100 pixels et une de 1 pixel), la dernière tuile plus petite se « densifie » et monte en résolution pour avoir le même nombre de pixels que les autres (5x5), au lieu de rester en 5x1 ou 1x5. La couverture raster devient alors hétérogène en résolution, ce qui n'est pas un problème en soi tant qu'on le prend en compte dans les opérations qu'on souhaite mener ensuite.