Sto scrivendo una funzione che ha una geometria come parametro che può essere in diverse proiezioni:
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;
La funzione ha bisogno della geometria in una proiezione specifica (32737) ma non voglio obbligare il chiamante a effettuare la trasformazione, preferisco gestirla all'interno della funzione.
La domanda è, invece di controllare l'effettivo srid, è sicuro chiamare sempre ST_Transform ? Farà qualcosa se la geometria è già nella proiezione target?
Controllo con una query come questa che sembra essere sicura, ma sarebbe fantastico se qualcuno potesse confermarlo perché non l'ho visto nei documenti.
SELECT ST_AsEWKT(geom), ST_AsEWKT(ST_Transform(geom, 32737)) FROM table_in_32737;