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 类型
使用说明
- 当使用 ST_TRANSFORMPIPELINE 时,管道将向前执行。 使用 ST_INVERSETRANSFORMPIPELINE 管道以相反方向执行。
- 使用管道的转换是 ST_TRANSFORM 的专门版本。
- 在大多数情况下,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) |
+------------------+