Estou escrevendo uma função que tem uma geometria como parâmetro que pode estar em diferentes projeções:
CREATE OR REPLACE FUNCTION foo(in geometry) RETURNS boolean AS $$
DECLARE
transformed_geom geometry := in;
BEGIN
IF ST_SRID(transformed_geom) != 32737 THEN
transformed_geom := ST_Transform(transformed_geom, 32737);
END IF;
[ ... ]
END;
$$ language plpgsql;
A função precisa da geometria em uma projeção específica (32737), mas não quero obrigar o chamador a fazer a transformação, prefiro manipulá-la dentro da função.
A questão é que, em vez de verificar o srid real, é seguro chamar sempre ST_Transform ? Fará qualquer coisa se a geometria já estiver na projeção alvo?
Verifico com uma consulta como esta se parece seguro, mas será incrível se alguém puder confirmar isso, pois eu não a vi nos documentos.
SELECT ST_AsEWKT(geom), ST_AsEWKT(ST_Transform(geom, 32737)) FROM table_in_32737;