วิธีเพิ่ม Geometry Column ให้กับข้อมูลตารางใน PostgreSQL/PostGIS
บันทึกไว้เพื่อเก็บเป็นความทรงจำ ในกรณีที่เรานำเข้าไฟล์ข้อมูล text หรือ csv ที่ไม่ใช่ข้อมูล shapefile เข้าไปในฐานข้อมูล PostgreSQL/PostGIS ซึ่งข้อมูลตารางนั้นมีแค่คอลัมน์พิกัดภูมิศาสตร์ หรือพิกัดกริด UTM ก็ได้ จากนั้นเราจะทำการแปลงให้เป็นตารางที่มี geometry พร้อมกับระบบพิกัด
- เราจะเห็นว่าภาพด้านล่างนั้นมีอยู่ตารางนึงที่ชื่อ resource จะเป็นแค่ตารางธรรมดา ยังไม่มีคอลัมน์ geometry ซึ่งจะมีแค่คอลัมน์พิกัด เช่น พิกัดภูมิศาสตร์ และพิกัดกริด UTM
2. ขั้นตอนต่อที่เราต้องที่มี 3 ขั้นตอนดังนี้
2.1 เพิ่มคอลัมน์ Geometry ดัง code ตัวอย่าง
-- Add column geom
SELECT AddGeometryColumn ('public','resource','geom',4326,'POINT',2);
2.2 ทำการแปลงจากคอลัมน์ long และ lat ให้เป็นแบบ geometry
-- Add data geometry
UPDATE public.resource
SET geom = ST_GeomFromText('POINT('||long||' '||lat||')',4326);
ในกรณีที่เรามีแค่คอลัมน์ที่เป็นพิกัดกริด UTM อย่างเดียว เราสามารถที่จะแปลงให้อยู่ใน geom แบบ 4326 ได้ โดนใช้ ST_Transform ดัง code ด้านล่าง
-- ST_Transform
UPDATE public.resource
SET geom2 = ST_Transform(
ST_GeomFromText('POINT('||x||' '||y||')',32647), 4326);
2.3 สร้าง Index ให้กับตาราง
-- Create Index
CREATE INDEX idx_resource_geom
ON public.resource USING gist(geom)
3. เมื่อ Run เสร็จแล้ว ทำการรีเฟรชที่ตาราง resource ก็จะมีคอลัมน์ geom ปรากฏขึ้นมา ดังภาพ
4. เมื่อคลิกที่ Geometry Viewer (ที่เป็นรูปดวงตาในคอลัมน์ geom) ก็จะแสดงข้อมูลแบบจุดขึ้นมา ดังภาพ
5. นอกจากนี้ยังสามารถนำไปเปิดร่วมกับโปรแกรม QGIS ได้ด้วยนะครับ