Estoy escribiendo una función que tiene una geometría como parámetro que puede estar en diferentes proyecciones:
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 función necesita la geometría en una proyección específica (32737) pero no quiero obligar a la persona que llama a realizar la transformación, prefiero manejarla dentro de la función.
La pregunta es, en lugar de verificar la cuadrícula real, ¿es seguro llamar siempre a ST_Transform ? ¿Hará algo si la geometría ya está en la proyección de destino?
Compruebo con una consulta como esta que parece ser segura, pero será increíble si alguien puede confirmar esto, ya que no lo vi en los documentos.
SELECT ST_AsEWKT(geom), ST_AsEWKT(ST_Transform(geom, 32737)) FROM table_in_32737;