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