ST_Transform
Returns a new GEOMETRY with its coordinates converted to the spatial reference system identifier (SRID) used by the srid
argument.
This function supports the following transformations:
- EPSG 4326 (WGS84) to EPSG 3857 (Web Mercator)
- EPSG 3857 (Web Mercator) to EPSG 4326 (WGS84)
For EPSG 4326 (WGS84), unless the coordinates fall within the following ranges, conversion results in failure:
-
Longitude limits: -572 to +572
-
Latitude limits: -89.9999999 to +89.9999999
Behavior Type
Syntax
ST_Transform( g1, srid )
Arguments
g1 |
Spatial object of type GEOMETRY. |
srid |
Spatial reference system identifier (SRID) to which you want to convert your spatial object, of type INTEGER. |
Returns
GEOMETRY
Supported Data Types
Data Type | GEOMETRY | GEOGRAPHY (Perfect Sphere) | GEOGRAPHY (WGS84) |
Point | Yes | No | No |
Multipoint | Yes | No | No |
Linestring | Yes | No | No |
Multilinestring | Yes | No | No |
Polygon | Yes | No | No |
Multipolygon | Yes | No | No |
GeometryCollection |
Yes |
No | No |
Examples
The following example shows how you can transform data from Web Mercator (3857) to WGS84 (4326):
=> SELECT ST_AsText(ST_Transform(STV_GeometryPoint(7910240.56433, 5215074.23966, 3857), 4326)); ST_AsText ------------------------- POINT (71.0589 42.3601) (1 row)
The following example shows how you can transform linestring data in a table from WGS84 (4326) to Web Mercator (3857):
=> CREATE TABLE transform_line_example (g GEOMETRY); CREATE TABLE => COPY transform_line_example (gx FILLER LONG VARCHAR, g AS ST_GeomFromText(gx, 4326)) FROM STDIN; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself. >> LINESTRING(0 0, 1 1, 2 2, 3 4) >> \. => SELECT ST_AsText(ST_Transform(g, 3857)) FROM transform_line_example; ST_AsText ------------------------------------------------------------------------------------------------------------------------- LINESTRING (0 -7.08115455161e-10, 111319.490793 111325.142866, 222638.981587 222684.208506, 333958.47238 445640.109656) (1 row)
The following example shows how you can transform point data in a table from WGS84 (4326) to Web Mercator (3857):
=> CREATE TABLE transform_example (x FLOAT, y FLOAT, srid INT); CREATE TABLE => COPY transform_example FROM STDIN; Enter data to be copied followed by a newline. End with a backslash and a period on a line by itself. >> 42.3601|71.0589|4326 >> 122.4194|37.7749|4326 >> 94.5786|39.0997|4326 >> \. => SELECT ST_AsText(ST_Transform(STV_GeometryPoint(x, y, srid), 3857)) FROM transform_example; ST_AsText ------------------------------------- POINT (4715504.76195 11422441.5961) POINT (13627665.2712 4547675.35434) POINT (10528441.5919 4735962.8206) (3 rows)