การอัพเดพระบบพิกัดให้กับข้อมูลเชิงพื้นที่ด้วย PostGIS

หลายๆ ท่านคงพบกับปัญหาที่ว่าเมื่อเรานำเข้าด้วยการ Import ข้อมูล Shapefile เข้าสู่ฐานข้อมูลเชิงพื้นที่ PostGIS ซึ่งอาจจะใช้วิธีการที่แตกต่างกับไปตามความถนัด แต่ในบางครั้งเราอาจจะลืมไปว่าการนำเข้าข้อมูลนั้นจะต้องระบุ SRID เข้าไปด้วย จึงทำให้ตอนเราเรียกใช้ข้อมูลเหล่านี้นั้นมักจะพบปัญหาว่าในการเรียกข้อมูลมาแสดงจะต้องระบุระบบพิกัดอ้างอิง Coordinate Reference Systems(CRS) ทุกครั้งเสมอๆ (ดังภาพด้านล่าง)

This slideshow requires JavaScript.

ซึ่งวิธีแก้ไขง่ายนิดเดียวครับ เพียงแค่เราใช้การ UpdateGeometrySRID ก็จะทำให้ข้อมูลข้อมูลของเรานั้นมีระบบพิกัดแล้วครับ

NOTE: การ UpdateGeometrySRID นั้นเราจะต้องทราบอยู่ก่อนแล้วว่า ข้อมูลที่เรา import เข้าไปใน database นั้นเป็นระบบอะไร เช่นตัวอย่างนี้จะเป็นระบบพิกัด EPSG:24047 (Indian 1975 / UTM zone 47N)

ตัวอย่าง Code

-- Check SRID from geometry_columns
SELECT * FROM geometry_columns;

-- Check SRID from gis table
SELECT ST_SRID(geom) FROM grid_1000;

-- Check Coordinate Reference Systems
SELECT proj4text FROM spatial_ref_sys WHERE srid = 24047;

-- Update Coordinate Reference Systems to gis table
SELECT UpdateGeometrySRID('grid_1000','geom',24047);
SELECT UpdateGeometrySRID('grid_4000','geom',24047);
SELECT UpdateGeometrySRID('parcel','geom',24047);

1. ตรวจสอบดูว่าข้อมูลตารางของเรามี SRID หรือไม่
g4

2. ตรวจสอบอีกครั้งว่าในข้อมูลตาราง ในตัวอย่างที่ชื่อ grid_1000 นั้น SRID = 0 จริง
g5

3. ทดสอบว่าระบบพิกัด EPSG:24047 (Indian 1975 / UTM zone 47N) นั้นมีหรือไม่
g6

4. ทำการอัพเดพหรือ define ระบบพิกัดให้กับข้อมูลตัวอย่างทั้ง 3 ตาราง
g7

5. ตรวจสอบดูว่าข้อมูลตารางอีกครั้ง ก็จะเห็นว่ามีระบบพิกัดเรียบร้อยแล้ว
g8

6. ทดสอบเชื่อมต่อโดยใช้ QGIS จะเห็นว่าสามารถเชื่อมต่อได้
g9g10

Reference:
[1] http://postgis.refractions.net/docs/UpdateGeometrySRID.html
[2] http://www.spatialreference.org/ref/epsg/indian-1975-utm-zone-47n/

Special Thanks:
คุณอัจฉรา ดาวัน, คุณธีศิษฏ์ สหภัทรากุล และคุณสาวณัชชา ศรีทองสุข จากกรมชลประทาน ที่สอบถามเกี่ยวกับปัญหานี้ในช่วงหลักสูตรอบรม WEB GIS

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