Catégories :

Fonctions géospatiales

ST_TRANSFORM

Convertit un objet GEOMETRY d’un système de référence spatiale (SRS) à un autre.

Utilisez cette fonction pour modifier le SRID et les coordonnées de l’objet afin qu’il corresponde au nouveau SRS (système de référence spatiale). Si vous devez simplement modifier le SRID sans modifier les coordonnées (par exemple, si le SRID n’était pas correct), utilisez plutôt ST_SETSRID.

Syntaxe

ST_TRANSFORM( <geometry_expression> [ , <from_srid> ] , <to_srid> );
Copy

Arguments

Obligatoire :

geometry_expression

L’argument doit être de type GEOMETRY.

to_srid

L”identificateur du système de référence spatiale (SRID) qui identifie le SRS à utiliser. La fonction transforme l’objet GEOMETRY en entrée en un nouvel objet qui utilise ce SRS.

Facultatif :

from_srid

Le SRID identifiant le SRS actuel de l’objet GEOMETRY en entrée.

Si cet argument est omis, la fonction utilise le SRID spécifié dans l’objet GEOMETRY en entrée.

Renvoie

La fonction renvoie un objet GEOMETRY qui utilise le SRS identifié par to_srid.

Notes sur l’utilisation

  • Les SRIDs sont basés sur la norme EPSG (v10.082). Par exemple, le SRID 4326 correspond à l’autorité EPSG avec le code 4326.

  • Assurez-vous que l’entrée GEOMETRY contient le bon SRID ou que vous spécifiez l’argument from_srid.

  • Actuellement, la fonction ne prend pas en charge les fichiers de grille de données. Toutes les performances sont réalisées en utilisant les paramètres statiques de données sans aucune correction du fichier de grille.

  • Si geometry_expression, from_srid, ou to_srid sont NULL, cette fonction renvoie NULL.

  • Si from_srid ou to_srid ne peut être remplacé par un SRID valide, une erreur se produit.

Exemples

L’exemple suivant transforme un objet POINT GEOMETRY de EPSG:32633 (WGS 84 / UTM zone 33N) en EPSG:3857 (Web Mercator).

-- Set the output format to EWKT
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';

SELECT
  ST_TRANSFORM(
    ST_GEOMFROMWKT('POINT(389866.35 5819003.03)', 32633),
    3857
  ) AS transformed_geom;
Copy
+---------------------------------------------------------------+
| transformed_geom                                              |
|---------------------------------------------------------------|
| SRID=3857;POINT(1489140.093765644 6892872.198680112)          |
+---------------------------------------------------------------+

Si le SRID source n’est pas défini correctement dans l’objet GEOMETRY, vous pouvez spécifier le SRID source dans l’argument to_srid de la fonction. Par exemple, pour transformer un objet POINT GEOMETRY de EPSG:4326 (WGS84) en EPSG:28992 (Amersfoort / RD New) :

-- Set the output format to EWKT
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';

SELECT
  ST_TRANSFORM(
    ST_GEOMFROMWKT('POINT(4.500212 52.161170)'),
    4326,
    28992
  ) AS transformed_geom;
Copy
+---------------------------------------------------------------+
| transformed_geom                                              |
|---------------------------------------------------------------|
| SRID=28992;POINT (94308.66600006013 464038.16881095537)       |
+---------------------------------------------------------------+