Ich schreibe eine Funktion mit einer Geometrie als Parameter, die in verschiedenen Projektionen vorliegen kann:
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;
Die Funktion benötigt die Geometrie in einer bestimmten Projektion (32737), aber ich möchte den Aufrufer nicht zur Durchführung der Transformation verpflichten, sondern sie lieber innerhalb der Funktion behandeln.
Die Frage ist, anstatt den tatsächlichen SDR zu überprüfen, ist es sicher, immer ST_Transform aufzurufen . Wird etwas getan, wenn sich die Geometrie bereits in der Zielprojektion befindet?
Ich überprüfe mit einer solchen Abfrage, ob es sicher zu sein scheint, aber es wird großartig sein, wenn jemand dies bestätigen kann, da ich es in den Dokumenten nicht gesehen habe.
SELECT ST_AsEWKT(geom), ST_AsEWKT(ST_Transform(geom, 32737)) FROM table_in_32737;