Name

ST_TransformPipeline — Rückgabe einer neuen Geometrie mit in ein anderes räumliches Bezugssystem transformierten Koordinaten unter Verwendung einer definierten Koordinatentransformationspipeline.

Übersicht

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

Beschreibung

Rückgabe einer neuen Geometrie mit in ein anderes räumliches Bezugssystem transformierten Koordinaten unter Verwendung einer definierten Koordinatentransformationspipeline.

Transformations-Pipelines werden mit einem der folgenden String-Formate definiert:

  • urn:ogc:def:coordinateOperation:AUTHORITY::CODE. Beachten Sie, dass ein einfacher EPSG:CODE String eine Koordinatenoperation nicht eindeutig identifiziert: Der gleiche EPSG-Code kann für eine CRS-Definition verwendet werden.

  • Eine PROJ-Pipeline-Zeichenkette in der Form: +proj=pipeline .... Die automatische Achsennormalisierung wird nicht angewendet, und der Aufrufer muss gegebenenfalls einen zusätzlichen Pipelineschritt hinzufügen oder axisswap Schritte entfernen.

  • Verkettete Operationen der Form: urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618.

Verfügbarkeit: 3.4.0

Die SRID der Eingangsgeometrie wird ignoriert, und die SRID der Ausgangsgeometrie wird auf Null gesetzt, sofern nicht über den optionalen Parameter to_srid ein Wert angegeben wird. Bei Verwendung von `ST_TransformPipeline()` wird die Pipeline in Vorwärtsrichtung ausgeführt. Bei Verwendung von ST_InverseTransformPipeline wird die Pipeline in der umgekehrten Richtung ausgeführt.

Transformationen unter Verwendung von Pipelines sind eine spezialisierte Version von ST_Transform. In den meisten Fällen wählt "ST_Transform" die richtigen Operationen für die Konvertierung zwischen Koordinatensystemen und sollte daher bevorzugt werden.

Beispiele

Ändern Sie WGS 84 long lat in UTM 31N unter Verwendung der Konvertierung EPSG:16031

This example transforms in the forward direction.

Code
SELECT
    ST_SetSRID(ST_TransformPipeline(
        'SRID=4326;POINT(2 49)'::geometry,
        'urn:ogc:def:coordinateOperation:EPSG::16031'
    ), 32631) AS utm_geom;
Ausgabe von Rastern
SRID=32631;POINT(426857.9877165967 5427937.523342293)
Figure
Geometry figure for visual-st-transformpipeline-01

This example transforms in the inverse direction.

Code
SELECT
    ST_SetSRID(ST_InverseTransformPipeline(
        'SRID=32631;POINT(426857.9877165967 5427937.523342293)'::geometry,
        'urn:ogc:def:coordinateOperation:EPSG::16031'
    ), 4326) AS wgs_geom;
Ausgabe von Rastern
SRID=4326;POINT(2 48.99999999999999)
Figure
Geometry figure for visual-st-transformpipeline-02

Beispiel GDA2020.

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

Code
SELECT ST_Transform('SRID=4939;POINT(143.0 -37.0)'::geometry, 7844) AS gda2020_auto;
Ausgabe von Rastern
POINT(143.00000635638918 -36.999986706128176)
Figure
Geometry figure for visual-st-transformpipeline-03

Using a defined conversion (EPSG:8447)

Code
SELECT
    ST_TransformPipeline(
        'SRID=4939;POINT(143.0 -37.0)'::geometry,
        'urn:ogc:def:coordinateOperation:EPSG::8447'
    ) AS gda2020_code;
Ausgabe von Rastern
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.

Code
SELECT
    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;
Ausgabe von Rastern
POINT(143.0000063280214 -36.999986718287545)