Redimensionne la plage de pixels d'un objet raster sans modifier son emprise géospatiale.
Syntaxe
raster ST_Resize(raster rast,
integer outWidth,
integer outHeight,
cstring processExpr default '',
cstring storageOption default '')
Paramètres
| Paramètre | Description |
|---|---|
| rast | Objet raster à redimensionner. |
| outWidth | Largeur de l'objet raster de sortie, en pixels. |
| outHeight | Hauteur de l'objet raster de sortie, en pixels. |
| processExpr | Chaîne JSON contrôlant le rééchantillonnage des pixels et la gestion des valeurs nodata. |
| storageOption | Chaîne JSON définissant le mode de stockage de l'objet raster de sortie. |
Champs processExpr
Chaque paire clé-valeur de la chaîne JSON processExpr correspond à un champ décrit ci-dessous.
| Champ | Type | Valeur par défaut | Description | |
|---|---|---|---|---|
| resample | text | Near | Méthode de rééchantillonnage. Valeurs valides : Near, Average, Cubic, Bilinear. |
|
| nodata | Boolean | false | Indique s'il faut traiter les valeurs nodata de l'objet raster source comme valides. Si ce paramètre est défini sur true, les pixels contenant des valeurs nodata ne sont pas rééchantillonnés. S'il est défini sur false, ces pixels sont rééchantillonnés. |
|
| nodataValue | float8 | float8[] | NULL |
Valeur nodata à attribuer aux bandes de l'objet raster de sortie. Spécifiez une seule valeur pour l'appliquer à toutes les bandes, ou indiquez une valeur distincte par bande. Le nombre de valeurs doit correspondre au nombre de bandes. |
Définissez
nodata
sur
false
et omettez
nodataValue
si l'objet raster source ne contient aucun pixel avec des valeurs nodata. Dans le cas contraire, des artefacts visuels peuvent apparaître dans l'image.
Champs storageOption
| Champ | Type | Valeur par défaut | Description |
|---|---|---|---|
| chunking | Boolean | Identique à la source | Indique si l'objet raster de sortie doit être stocké sous forme de blocs (chunks). |
| chunkdim | String | Identique à la source | Dimensions des blocs. Ce paramètre n'est pris en compte que si chunking est défini sur true. |
| chunktable | String | '' (chaîne vide) |
Nom de la table de blocs. Si ce paramètre est défini sur NULL ou sur une chaîne vide, la sortie est stockée dans une table de blocs temporaire dotée d'un nom aléatoire, valable uniquement pour la session en cours. Pour rendre la sortie persistante, spécifiez un nom de table de blocs permanent. |
| compression | String | Identique à la source | Format de compression. Valeurs valides : None, JPEG, Zlib, PNG, LZO, LZ4. |
| quality | Integer | Identique à la source | Qualité de l'image JPEG. Ce paramètre n'est pris en compte que si compression est défini sur JPEG. |
| interleaving | String | Identique à la source | Type d'entrelacement. Valeurs valides : bip (bande entrelacée par pixel, BIP), bil (bande entrelacée par ligne, BIL), bsq (séquentiel par bande, BSQ). |
| endian | String | Identique à la source | Ordre des octets. Valeurs valides : NDR (little-endian), XDR (big-endian). |
Si
chunktable
est
NULL
ou une chaîne vide, la sortie est stockée dans une table de blocs temporaire qui sera supprimée à la fin de la session en cours. Spécifiez un nom de table de blocs pour enregistrer la sortie de manière permanente.
Exemples
CREATE TABLE IF NOT EXISTS datasource_table(id integer, rast raster);
INSERT INTO datasource_table VALUES(1, ST_ImportFrom('rbt','$(RAST_DATA_DIR)/512_512_1_bsq_8u_geo.tif', '{}'));
Méthode 1 : Spécifier une table de blocs permanente
Utilisez un paramètre chunktable nommé pour rendre l'objet raster de sortie persistant.
CREATE TABLE rat_resize_result(id integer, rast raster);
-- No nodata field specified
INSERT INTO rat_resize_result(id, rast)
SELECT 10, ST_Resize(rast, 1024, 1024,
'{"resample":"Near","nodata":false}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}')
FROM datasource_table
WHERE id = 1;
-- Single nodata value applied to all bands; nodata pixels are not resampled
INSERT INTO rat_resize_result(id, rast)
SELECT 11, ST_Resize(rast, 1024, 1024,
'{"resample":"Near","nodata":true,"nodatavalue":255}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}')
FROM datasource_table
WHERE id = 1;
-- Multiple nodata values, one per band
INSERT INTO rat_resize_result(id, rast)
SELECT 12, ST_Resize(rast, 1024, 1024,
'{"resample":"Near","nodata":false,"nodatavalue":[255,255,255]}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}')
FROM datasource_table
WHERE id = 1;
Méthode 2 : Utiliser une table de blocs temporaire
Omettez le paramètre chunktable pour stocker la sortie dans une table temporaire limitée à la session. Le résultat reste disponible pour les calculs imbriqués au cours de la session en cours et est supprimé lorsque celle-ci se termine.
CREATE TEMP TABLE rat_resize_result_temp(id integer, rast raster);
INSERT INTO rat_resize_result_temp(id, rast)
SELECT 1, ST_Resize(rast, 1024, 1024,
'{"resample":"Near","nodata":false,"nodataValue":[255,255,255]}',
'{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq"}')
FROM datasource_table
WHERE id = 1;