ขณะนำเข้าข้อมูล shapefile ของฉันไปยัง PostGIS ฉันไม่ได้เลือกการฉายภาพที่เหมาะสม
ตอนนี้ฉันจะเปลี่ยน SRID ของข้อมูลโดยไม่เปลี่ยนพิกัดได้อย่างไร
ขณะนำเข้าข้อมูล shapefile ของฉันไปยัง PostGIS ฉันไม่ได้เลือกการฉายภาพที่เหมาะสม
ตอนนี้ฉันจะเปลี่ยน SRID ของข้อมูลโดยไม่เปลี่ยนพิกัดได้อย่างไร
คำตอบ:
มีฟังก์ชั่นบรรทัดเดียวที่ทำเพื่อคุณ เพียงใช้แบบสอบถาม SQL ต่อไปนี้:
select UpdateGeometrySRID('Schema Name', 'mytable', 'the_geom', newSRID) ;
แต่ถ้าคุณเป็นเหมือนฉันคุณจะสนใจในระดับต่ำก้าวเล็ก ๆ การพูดอย่างมีเหตุผลฟังก์ชันข้างต้นเทียบเท่ากับกระบวนการสี่ขั้นตอนต่อไปนี้:
ในตาราง geometry_columns อัพเดต SRID เป็นค่าที่ต้องการ
วาง contraint บนตารางโดยใช้คำสั่ง SQL ต่อไปนี้
ALTER TABLE mytable DROP CONSTRAINT enforce_srid_the_geom;
อัปเดต SRID ของเรขาคณิตโดยใช้คำสั่ง SQL ต่อไปนี้
UPDATE mytable SET the_geom = ST_SetSRID(the_geom, newSRID);
เพิ่ม contraint back โดยใช้คำสั่ง SQL ต่อไปนี้
ALTER TABLE mytable
ADD CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = (newSRID));
ด้วย PostGIS 2.x คอลัมน์เรขาคณิตมักจะใช้ typmods geometry(Point, 1234)
เช่น สำหรับสิ่งเหล่านี้คุณสามารถใช้ALTER TABLEเพื่อแก้ไขประเภทคอลัมน์รูปทรงเรขาคณิตได้โดยตรงในขั้นตอนเดียว
ยกตัวอย่างเช่นการตั้ง SRID ของgeom
ในmytable
ภาพเป็น WGS84 ใช้ST_SetSRID :
ALTER TABLE mytable
ALTER COLUMN geom
TYPE geometry(Point, 4326)
USING ST_SetSRID(geom, 4326);
โปรดทราบว่าสิ่งนี้จะเปลี่ยน SRID เท่านั้น แต่จะไม่แปลงข้อมูลพิกัด
UpdateGeometrySRID
ไม่สนับสนุน