Я пишу функцию с геометрией в качестве параметра, которая может быть в разных проекциях:
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;