Tous les produits
Search
Centre de documentation

ApsaraDB RDS:ST_Transform

Dernière mise à jour :Sep 01, 2026

ST_Transform reprojette un objet raster d'un système de référence spatiale (SRS) vers un autre en transformant ses coordonnées sous-jacentes et en rééchantillonnant les valeurs des pixels.

Syntaxe

raster ST_Transform(raster rast,
           integer outSrid,
           cstring processExpr default '',
           cstring storageOption default '')

Paramètres

Paramètre Description
rast Objet raster source à reprojeter.
outSrid SRID du système de référence spatiale cible. Doit correspondre à un SRID valide de la table spatial_ref_sys.
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 du raster de sortie.

Champs de processExpr

Champ Type Valeur par défaut Description
resample Texte Near Algorithme de rééchantillonnage. Valeurs valides : Near, Average, Cubic, Bilinear.
nodata Booléen false Indique si les valeurs nodata du raster source sont considérées comme valides. Si la valeur est true, les pixels contenant des valeurs nodata ne sont pas rééchantillonnés. Si la valeur est false, ces pixels sont rééchantillonnés.
nodataValue float8 ou float8[] NULL Valeur(s) nodata à attribuer aux bandes du raster de sortie. Spécifiez une valeur unique pour l'appliquer à toutes les bandes, ou un tableau contenant une valeur par bande.
Avertissement

Définissez avec soin les paramètres nodata et nodataValue. Si le raster source ne contient aucun pixel avec des valeurs nodata, définissez nodata sur false et omettez nodataValue. Dans le cas contraire, des artefacts visuels peuvent apparaître dans l'image.

Champs de storageOption

Champ Type Valeur par défaut Description
chunking Booléen Identique à la source Indique si le raster de sortie doit être stocké sous forme de blocs (chunks).
chunkdim Chaîne Identique à la source Dimensions des blocs. Ce paramètre n'est pris en compte que si chunking est défini sur true.
chunktable Chaîne '' (chaîne vide) Nom de la table de blocs pour un stockage permanent. Si ce champ est vide ou défini sur NULL, une table de blocs temporaire avec un nom aléatoire est créée et supprimée à la fin de la session. Pour conserver le raster de sortie, spécifiez un nom de table.
compression Chaîne Identique à la source Format de compression. Valeurs valides : None, JPEG, Zlib, PNG, LZO, LZ4.
quality Entier Identique à la source Qualité de l'image. Ce paramètre n'est effectif qu'avec le format JPEG.
interleaving Chaîne Identique à la source Type d'entrelacement. Valeurs valides : bip (band interleaved by pixel, BIP), bil (band interleaved by line, BIL), bsq (band sequential, BSQ).
endian Chaîne Identique à la source Ordre des octets. Utilisez NDR pour le little endian ; utilisez XDR pour le big endian.

Exemples

Les exemples suivants utilisent un fichier GeoTIFF chargé dans une table source.

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', '{}')
);

Persistance de la sortie dans une table de blocs permanente

Spécifiez un nom pour le paramètre chunktable afin de sauvegarder le raster reprojeté entre les sessions.

Sans valeur nodata :

CREATE TABLE rat_transform_result (id integer, rast raster);

INSERT INTO rat_transform_result (id, rast)
SELECT
  10,
  ST_Transform(
    rast,
    32652,
    '{"resample":"Near","nodata":false}',
    '{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq","chunktable":"result_rbt"}'
  )
FROM datasource_table
WHERE id = 1;

Avec une seule valeur nodata (les pixels ayant des valeurs nodata sont rééchantillonnés) :

INSERT INTO rat_transform_result (id, rast)
SELECT
  11,
  ST_Transform(
    rast,
    32652,
    '{"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;

Avec des valeurs nodata par bande :

INSERT INTO rat_transform_result (id, rast)
SELECT
  12,
  ST_Transform(
    rast,
    32652,
    '{"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;

Stockage de la sortie dans une table de blocs temporaire

Omettez le paramètre chunktable pour écrire la sortie dans une table temporaire limitée à la session. Cette table étant supprimée à la fin de la session, utilisez cette méthode uniquement pour des calculs intermédiaires.

CREATE TEMP TABLE rat_transform_result_temp (id integer, rast raster);

INSERT INTO rat_transform_result_temp (id, rast)
SELECT
  1,
  ST_Transform(
    rast,
    32652,
    '{"resample":"Near","nodata":false,"nodataValue":[255,255,255]}',
    '{"chunking":true,"chunkdim":"(256,256,1)","compression":"none","interleaving":"bsq"}'
  )
FROM datasource_table
WHERE id = 1;