Categorias:

Funções geoespaciais

ST_TRANSFORM

Converte um objeto GEOMETRY de um sistema de referência espacial (SRS) em outro.

Use esta função para alterar o SRID e as coordenadas do objeto para corresponder ao novo SRS (sistema de referência espacial). Se você precisar apenas alterar o SRID sem alterar as coordenadas (por exemplo, se o SRID estiver incorreto), use ST_SETSRID.

Sintaxe

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

Argumentos

Obrigatório:

geometry_expression

O argumento deve ser do tipo GEOMETRY.

to_srid

O identificador do sistema de referência espacial (SRID) que identifica o SRS a ser usado. A função transforma o objeto de entrada GEOMETRY para um novo objeto que usa este SRS.

Opcional:

from_srid

O SRID identificando o SRS atual do objeto de entrada GEOMETRY.

Se este argumento for omitido, a função usará o SRID especificado no objeto de entrada GEOMETRY.

Retornos

A função retorna um GEOMETRY objeto que usa o SRS identificado por to_srid.

Notas de uso

  • SRIDs são baseados no padrão EPSG (v10.082). Por exemplo, o SRID 4326 corresponde ao EPSG de autoridade com o código 4326.

  • Certifique-se de que a entrada GEOMETRY tenha o SRID correto definido ou que você especifique o argumento from_srid.

  • Atualmente, a função não suporta arquivos de grade de referência. Todas as transformações são executadas usando os parâmetros estáticos do datum sem nenhuma correção de arquivo de grade.

  • Se geometry_expression, from_srid ou to_srid forem NULL, esta função retornará NULL.

  • Se from_srid ou to_srid não pode ser resolvido para um SRID válido, ocorrerá um erro.

Exemplos

O exemplo a seguir transforma um objeto POINT GEOMETRY de EPSG:32633 (WGS 84 / zona UTM 33N) em 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)          |
+---------------------------------------------------------------+

Se o SRID de origem não estiver configurado corretamente no objeto GEOMETRY, você poderá especificar o SRID no argumento da função to_srid. Por exemplo, para transformar um objeto POINT GEOMETRY de EPSG:4326 (WGS84) em EPSG:28992 (Amersfoort / RD novo):

-- 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)       |
+---------------------------------------------------------------+