- 类别:
ST_TRANSFORM¶
将 GEOMETRY 对象从一个 空间参考系 (SRS) (link removed) 转换为另一个空间参考系。
使用此函数可以 更改对象的 SRID 和坐标以匹配新的 SRS(空间参考系)。如果只需要更改 SRID 而不需要更改坐标(例如,如果 SRID 不正确),请改用 ST_SETSRID。
语法¶
ST_TRANSFORM( <geometry_expression> [ , <from_srid> ] , <to_srid> );
实参¶
必填:
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_expression
、from_srid
或to_srid
是 NULL,则此函数返回 NULL。如果
from_srid
或to_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;
+---------------------------------------------------------------+
| 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;
+---------------------------------------------------------------+
| transformed_geom |
|---------------------------------------------------------------|
| SRID=28992;POINT (94308.66600006013 464038.16881095537) |
+---------------------------------------------------------------+