J'écris une fonction qui a une géométrie comme paramètre qui peut être dans différentes projections:
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 fonction a besoin de la géométrie dans une projection spécifique (32737) mais je ne veux pas obliger l'appelant à faire la transformation, je préfère la gérer à l'intérieur de la fonction.
La question est, au lieu de vérifier le srid réel, il est sûr d'appeler toujours ST_Transform ? Va faire quoi que ce soit si la géométrie est déjà dans la projection cible?
Je vérifie avec une requête comme celle-ci qu'elle semble être sûre, mais ce sera génial si quelqu'un peut le confirmer car je ne l'ai pas vu dans les documents.
SELECT ST_AsEWKT(geom), ST_AsEWKT(ST_Transform(geom, 32737)) FROM table_in_32737;