Name

ST_TransformPipeline — Retourner une nouvelle géométrie avec des coordonnées transformées dans un système de référence spatial différent à l'aide d'un pipeline de transformation de coordonnées défini.

Synopsis

geometry ST_TransformPipeline(geometry g1, text pipeline, integer to_srid);

Description

Retourner une nouvelle géométrie dont les coordonnées ont été transformées dans un système de référence spatial différent à l'aide d'un pipeline de transformation de coordonnées défini.

Les pipelines de transformation sont définis à l'aide de l'un des formats de texte suivants :

  • urn:ogc:def:coordinateOperation:AUTHORITY::CODE. Notez qu'une simple chaîne de caractère EPSG:CODE n'identifie pas de manière unique une opération de coordonnées : le même code EPSG peut être utilisé pour une définition CRS.

  • Une chaîne de caractères de pipeline PROJ de la forme : +proj=pipeline .... La normalisation automatique des axes ne sera pas appliquée et, si nécessaire, l'appelant devra ajouter une étape de pipeline supplémentaire ou supprimer les étapes axisswap.

  • Opérations concaténées de la forme : urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618.

Disponibilité : 3.4.0

Le SRID de la géométrie d'entrée est ignoré, et le SRID de la géométrie de sortie sera mis à zéro à moins qu'une valeur ne soit fournie via le paramètre optionnel to_srid. Lors de l'utilisation de `ST_TransformPipeline()`, le pipeline est exécuté dans la direction avant. En utilisant ST_InverseTransformPipeline le pipeline est exécuté dans le sens inverse.

Les transformations utilisant des pipelines sont une version spéciale de ST_Transform. Dans la plupart des cas, `ST_Transform` choisira les opérations correctes pour convertir entre les systèmes de coordonnées, et devrait être préféré.

Exemples

Changer WGS 84 long lat en UTM 31N en utilisant la conversion EPSG:16031

This example transforms in the forward direction.

SELECT ST_AsText(
    ST_TransformPipeline(
        'SRID=4326;POINT(2 49)'::geometry,
        'urn:ogc:def:coordinateOperation:EPSG::16031'
    )
) AS utm_geom;
POINT(426857.9877165967 5427937.523342293)

This example transforms in the inverse direction.

SELECT ST_AsText(
    ST_InverseTransformPipeline(
        'POINT(426857.9877165967 5427937.523342293)'::geometry,
        'urn:ogc:def:coordinateOperation:EPSG::16031'
    )
) AS wgs_geom;
POINT(2 48.99999999999999)

Exemple GDA2020.

This example uses ST_Transform with automatic selection of a conversion pipeline.

SELECT ST_AsText(ST_Transform('SRID=4939;POINT(143.0 -37.0)'::geometry, 7844)) AS gda2020_auto;
POINT(143.00000635638918 -36.999986706128176)

Using a defined conversion (EPSG:8447)

SELECT ST_AsText(
    ST_TransformPipeline(
        'SRID=4939;POINT(143.0 -37.0)'::geometry,
        'urn:ogc:def:coordinateOperation:EPSG::8447'
    )
) AS gda2020_code;
POINT(143.0000063280214 -36.999986718287545)

This example uses a PROJ pipeline definition matching EPSG:8447, as returned from projinfo. Any axisswap steps must be removed.

SELECT ST_AsText(
    ST_TransformPipeline(
        'SRID=4939;POINT(143.0 -37.0)'::geometry,
        '+proj=pipeline
   +step +proj=unitconvert +xy_in=deg +xy_out=rad
   +step +proj=hgridshift +grids=au_icsm_GDA94_GDA2020_conformal_and_distortion.tif
   +step +proj=unitconvert +xy_in=rad +xy_out=deg'
    )
) AS gda2020_pipeline;
POINT(143.0000063280214 -36.999986718287545)