วิธีเพิ่ม Geometry Column ให้กับข้อมูลตารางใน PostgreSQL/PostGIS

Chingchai Hoomhong
MAPEDIA BLOG
Published in
Sep 10, 2021

บันทึกไว้เพื่อเก็บเป็นความทรงจำ ในกรณีที่เรานำเข้าไฟล์ข้อมูล text หรือ csv ที่ไม่ใช่ข้อมูล shapefile เข้าไปในฐานข้อมูล PostgreSQL/PostGIS ซึ่งข้อมูลตารางนั้นมีแค่คอลัมน์พิกัดภูมิศาสตร์ หรือพิกัดกริด UTM ก็ได้ จากนั้นเราจะทำการแปลงให้เป็นตารางที่มี geometry พร้อมกับระบบพิกัด

  1. เราจะเห็นว่าภาพด้านล่างนั้นมีอยู่ตารางนึงที่ชื่อ 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 ได้ด้วยนะครับ

--

--