20111021
วัตถุประสงค์
- ต้องการทำสำเนาฐานข้อมูลปริภูมิแต่เปลี่ยนระบบพิกัดของข้อมูลปริภูมิ
- ต้องการแปลงระบบพิกัดจาก Geographic/WGS84 ไปเป็น UTM Zone47/WGS84
- กำหนดฐานข้อมูล ชื่อ river มีตาราง river4326 และกำหนดให้ฐานข้อมูลใหม่ให้ชื่อ river32647
- ข้อมูล river4326 ประกอบไปด้วย Column [ID],[name],[length],[basin],[subbasin],[the_geom]
ที่จริงในการเรียกใช้งาน สามารถแปลงระบบพิกัดแบบ on-the-fly ได้เลยและแนะนำให้ทำอย่างนั้นเมื่อใช้งานจริง แต่ในที่นี้ลองว่าถ้าต้องการทำแบบนี้ทำได้อย่างไรบ้าง
วิธีการ
- SQL Query: SELECT * FROM river4326 WHERE 1=0
เพื่อ ให้แสดงเฉพาะชื่อ Column จะได้
| [ID] | [name] | [length] | [basin] | [subbasin] | [the_geom] | - สร้าง ตารางขึ้นใหม่ในฐานข้อมูลนั้น ให้ชื่อ river_32647 โดยใช้คำสั่ง SQL
CREATE TABLE river_32647 as SELECT ID, name, length, basin, subbasin, ST_Transform(ST_SetSRID(the_geom, 4326), 32647) as the_geomFROM river4326
เป็นการสร้างตาราง river_32647 ขึ้นมาใหม่โดยให้มี column เหมือน river4326 และเปลี่ยน the_geom จากระบบพิกัด Geographic ไปเป็น UTM - เลือกตาราง river_32647 ทำการ backup ไว้ให้ชื่อไฟล์ river_32647.backup
- สร้างฐานข้อมูลให้ เลือกtemplate PostGIS ให้ชื่อฐานข้อมูลใหม่ว่า river32647
- restore ไฟล์ river_32647 เข้ามาในฐานข้อมูล river32647
นี่เป็นเพียงวิธีการหนึ่งที่ทำได้นะครับ ผมเชื่อว่ามีวิธีที่ง่ายกว่านี้แน่ แต่ยังหาไม่เจอ ท่านในมีคำแนะนำช่วยชี้แนะเพิ่มเติมด้วยครับ
อย่างที่บอกถ้าใช้งานจริงแนะนำให้แปลงระบบพิกัด on-the-fly ดีกว่าง่ายกว่าเยอะเลยและเก็บฐานข้อมูลแค่ชุดเดียวด้วย
Advertisement