Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_TRANSFORMPIPELINE

📄字数 1.5K
👁️阅读量 加载中...

功能描述

返回一个新的几何图形,其坐标使用定义的坐标转换管道转换为不同的空间参考系统。

语法格式

sql
GEOMETRY ST_TRANSFORMPIPELINE(GEOMETRY g1, VARCHAR pipeline, INTEGER to_srid=0);

参数说明

  • g1:目标 GEOMETRY 对象;
  • to_srid:目标空间参考系统ID,可选,默认SRID:0。
  • pipeline:转换管道。使用以下任意字符串格式定义:
    • urn:ogc:def:coordinateOperation:AUTHORITY::CODE。 请注意,简单的 EPSG:CODE 字符串不能唯一标识坐标操作:相同的 EPSG 代码可用于 CRS 定义。
    • PROJ 管道字符串的形式为: proj=pipeline .... 将不会应用自动轴规范化,并且如有必要,调用者将需要添加额外的管道步骤,或删除 axisswap 步骤。
    • 形式的串联操作:urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618

函数返回类型

GEOMETRY 类型

使用说明

  1. 当使用 ST_TRANSFORMPIPELINE 时,管道将向前执行。 使用 ST_INVERSETRANSFORMPIPELINE 管道以相反方向执行。
  2. 使用管道的转换是 ST_TRANSFORM 的专门版本。
  3. 在大多数情况下,ST_TRANSFORM 将选择正确的操作在坐标系之间进行转换,并且应该是首选。

示例

使用 EPSG:16031 转换将 WGS 84 经纬度更改为 UTM 31N:

sql

SQL> SELECT TO_CHAR(ST_ASTEXT(ST_TRANSFORMPIPELINE('SRID=4326;POINT(2 49)'::GEOMETRY,
       'urn:ogc:def:coordinateOperation:EPSG::16031'))) AS utm_geom;

+--------------------------------------------+
|                  UTM_GEOM                  |
+--------------------------------------------+
| POINT(426857.9877165967 5427937.523342293) |
+--------------------------------------------+

反向转换:

sql

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

+----------------------------+
|          WGS_GEOM          |
+----------------------------+
| POINT(2 48.99999999999999) |
+----------------------------+

GDA2020示例。

sql
--使用 ST_Transform,自动选择转换管道 
SQL> SELECT ST_ASTEXT(ST_TRANSFORM('SRID=4939;POINT(143.0 -37.0)'::GEOMETRY, 7844)) AS gda2020_auto;

+-----------------------------------------------+
|                 GDA2020_AUTO                  |
+-----------------------------------------------+
| POINT(143.00000635638918 -36.999986706128176) |
+-----------------------------------------------+

---使用转换管道 EPSG::3895 :
SQL> SELECT ST_ASTEXT(ST_TRANSFORMPIPELINE('SRID=4939;POINT(143.0 -37.0)'::GEOMETRY,'urn:ogc:def:coordinateOperation:EPSG::3895')) AS gda2020_code;

+-------------------------------+
|         GDA2020_CODE          |
+-------------------------------+
| POINT(125.33333333333334 -37) |
+-------------------------------+

---使用PROJ 管道字符串的形式:
SQL>  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=unitconvert +xy_in=rad +xy_out=deg')) AS gda2020_pipeline;
+------------------+
| GDA2020_PIPELINE |
+------------------+
| POINT(143 -37)   |
+------------------+