私は、さまざまな投影法で使用できるパラメーターとしてジオメトリを持つ関数を作成しています。
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;
この関数は特定の投影法(32737)でジオメトリを必要としますが、変換を行うために呼び出し側に義務を負わせたくありません。関数内で処理することを好みます。
問題は、実際のsridをチェックする代わりに、常にST_Transformを呼び出すのが安全ですか?ジオメトリがすでにターゲット投影にある場合、何をしますか?
このようなクエリを使用して、安全であるように確認しますが、ドキュメントで確認できなかったため、誰かがこれを確認できれば素晴らしいでしょう。
SELECT ST_AsEWKT(geom), ST_AsEWKT(ST_Transform(geom, 32737)) FROM table_in_32737;