类别:

地理空间函数

ST_TRANSFORM

GEOMETRY 对象从一个 空间参考系 (SRS) (link removed) 转换为另一个空间参考系。

使用此函数可以 更改对象的 SRID 和坐标以匹配新的 SRS(空间参考系)。如果只需要更改 SRID 而不需要更改坐标(例如,如果 SRID 不正确),请改用 ST_SETSRID

语法

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

实参

必填:

geometry_expression

实参的类型必须为 GEOMETRY。

to_srid

标识要使用的 SRS 的 空间参考系标识符 (SRID) (link removed)。该函数将 GEOMETRY 输入对象转换为使用此 SRS 的新对象。

可选:

from_srid

标识 GEOMETRY 输入对象的当前 SRS 的 SRID。

如果省略此实参,则该函数使用 GEOMETRY 输入对象中指定的 SRID。

返回

该函数返回一个 GEOMETRY 对象,此对象使用 to_srid 标识的 SRS。

使用说明

  • SRIDs 基于 EPSG 标准 (https://epsg.org/home.html) (v10.082)。例如,SRID 4326 对应于代码为 4326 的机构 EPSG。

  • 确保为输入 GEOMETRY 设置了正确的 SRID,或者指定了 from_srid 实参。

  • 目前,该函数不支持基准网格文件。所有转换均使用基准的静态参数执行,无需进行任何网格文件校正。

  • 如果 geometry_expressionfrom_sridto_srid 是 NULL,则此函数返回 NULL。

  • 如果 from_sridto_srid 不能解析为有效的 SRID,则会出错。

示例

以下示例将 POINT GEOMETRY 对象从 EPSG:32633(WGS 84/ UTM 区域 33N)转换为 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)          |
+---------------------------------------------------------------+

如果在 GEOMETRY 对象中未正确设置源 SRID,则可以在此函数的 to_srid 实参中指定 SRID。例如,要将 POINT GEOMETRY 对象从 EPSG:4326 (WGS84) 转换为 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)       |
+---------------------------------------------------------------+
语言: 中文