ฉันกำลังเขียนฟังก์ชันที่มีรูปทรงเรขาคณิตเป็นพารามิเตอร์ที่สามารถใช้ในการฉายภาพที่แตกต่างกัน:
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;