我正在编写一个函数,该函数的几何参数可以在不同的投影中:
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),但我不想让调用者进行转换,我更喜欢在函数内部进行处理。
问题是,始终检查ST_Transform是安全的,而不是检查实际的srid 。如果几何已经在目标投影中,该怎么办?
我检查了这样的查询,它看起来很安全,但是如果有人可以确认这一点就很棒了,因为我在文档中没有看到它。
SELECT ST_AsEWKT(geom), ST_AsEWKT(ST_Transform(geom, 32737)) FROM table_in_32737;