วิธีแสดงค่าพิกัดทางภูมิศาสตร์(Latitude,Longitude) และพิกัดแบบ UTM (Easting,Northing) จาก Geometry ใน PostGIS

การแสดงค่าพิกัดทางภูมิศาสตร์ (Latitude, Longitude) ซึ่งผมจะขอยกตัวอย่างในหน่วยองศาทศนิยม (Decimal Degrees: DD) ตัวอย่างเช่น 16.769519, 100.198351 และพิกัดแบบ UTM (Easting, Northing) ยกตัวอย่างเช่น 627719.103 E, 1854443.802 N  ซึ่งวิธีการได้ค่าพิกัดทั้ง 2 แบบนี้ จากข้อมูล shapefile หรือจาก geometry ใน PostGIS นั้นผมเองคิดว่ามีหลากหลายวิธีแล้วแต่ความถนัดของแต่ละคน บ้างก็ใช้ QGIS หรือ ArcGIS ในการ Calculate Field หรือวิธีการอื่นๆ แต่ในบทความนี้ผมได้เสนอโดยการใช้ PostGIS ซึ่งมันสะดวกแล้วก็รวดเร็ว และค่อนข้างหยืดหยุ่นมากกว่าข้อมูลในรูปแบบของ shapefile โดยตัวอย่างผมมีข้อมูล table ที่เป็นข้อมูลจุดสถานีตรวจวัดน้ำฝน (rain_sta) ซึ่งเป็นพิกัดแบบ Latitude, Longitude หรือที่นิยมเรียกกันว่า EPSG:4326 โดยเราจะทำการสร้างคอลัมน์ขึ้นมา 4 คอลัมน์ ได้แก่ lat, lon, utm_e, utm_n  เพื่อที่จะคำนวณเอาค่าพิกัดทั้ง 2 แบบนี้ไปใส่ในคอลัมน์ของแต่ละอัน ซึ่งถ้าเป็นพิกัด UTM Zone 47N เราจะใช้เป็น EPSG:32647 โดยคำสั่งที่ใช้ในการเพิ่มคอลัมน์คือ ALTER TABLE และคำสั่งที่ใช้ในการ calculate field จะใช้ UPDATE และคำสั่งที่ใช้ในการแสดงค่าพิกัดคือ ST_X และ ST_Y และคำสั่งที่ใช้ในการแปลงระบบพิกัดคือ ST_Transform มาดูวิธีการจากด้านล่างนี้เลยครับ

-- ADD Column
ALTER TABLE rain_sta ADD lat numeric(10,7);
ALTER TABLE rain_sta ADD lon numeric(10,7);
ALTER TABLE rain_sta ADD utm_e numeric(19,5);
ALTER TABLE rain_sta ADD utm_n numeric(19,5);
-- Calculate lat, lon coordinate
UPDATE rain_sta SET lon = ST_X(geom);
UPDATE rain_sta SET lat = ST_Y(geom);
-- Calculate utm coordinate
UPDATE rain_sta SET utm_e = ST_X(ST_Transform(geom,32647));
UPDATE rain_sta SET utm_n = ST_Y(ST_Transform(geom,32647));

เรามาดูผลลัพธ์ที่ได้กันเลยครับ

1

แสดงผลข้อมูลผ่านโปรแกรม QGIS

2

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s