2021-06-001 Spatial Data
บทความนี้ผู้เขียนจะอธิบายลักษณะของข้อมูลเชิงพื้นที่ การจัดเก็บ และประมวลผลด้วย CloudSQL และนำเสนอเครื่องมือต่าง ๆ ที่ท่านสามารถนำมาประยุกต์ใช้งานได้
(Mobile map photo created by pressfoto – www.freepik.com)

บทความนี้ผู้เขียนจะอธิบายลักษณะของข้อมูลเชิงพื้นที่ (Spatial Data) รวมถึงนำเสนอการจัดเก็บ และประมวลผลข้อมูลเชิงพื้นที่ด้วยระบบฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ที่มีการใช้งานกันอยู่ทั่วไป โดยยกตัวอย่างการใช้บริการ Cloud SQL ซึ่งเป็นบริการระบบฐานข้อมูลเชิงสัมพันธ์ที่มีให้บริการบน Google Cloud Platform (GCP) เฉกเช่นเดียวกับบริการ Amazon RDS หรือ Azure Database ที่สามารถใช้งานได้ง่ายบนคลาวด์แบบสาธารณะ (Public Cloud) เพื่อเป็นจุดเริ่มต้นให้ท่านเกิดความเข้าใจเรื่องการจัดเก็บและประมวลผลข้อมูลเชิงพื้นที่ และผู้เขียนได้สรุปเครื่องมือสำหรับการประมวลผลข้อมูลเชิงพื้นที่อื่น ๆ ที่สามารถนำมาประยุกต์ใช้งาน

ข้อมูลเชิงพื้นที่นั้นมีความสำคัญ เนื่องด้วยข้อมูลเชิงพื้นที่เป็นข้อมูลที่มีการระบุถึงพิกัดทางภูมิศาสตร์ ถ้าลองจินตนาการถึงข้อมูลตำแหน่งของพนักงานส่งสินค้าที่กำลังให้บริการทั่วทั้งกรุงเทพมหานครที่ถูกนำมาใช้ในการจัดหาคนส่งออร์เดอร์ลูกค้า หรือในการวิเคราะห์และวางแผนด้านอื่น ๆ เช่น การนำข้อมูลเชิงพื้นที่มาวิเคราะห์เชิงกลยุทธ์เพื่อวางแผนทางการตลาด การกระตุ้นการท่องเที่ยวภายในประเทศ การวางแผนผังเมือง และการวางแผนพื้นที่เพาะปลูกตามความเหมาะสมกับสภาพอากาศพื้นที่ จะพบว่าล้วนมีเรื่องของข้อมูลเชิงพื้นที่เข้ามาเกี่ยวข้อง ซึ่งอาจก่อให้เกิดคำถาม โดยเฉพาะจากผู้ที่ไม่ได้อยู่ในสายนักข้อมูลแผนที่ ว่าจะเริ่มต้นยังไง จะจัดเก็บและประมวลผลข้อมูลได้อย่างไร บทความนี้จะพาท่านไปรู้จักกับข้อมูลเชิงพื้นที่ การจัดเก็บ และการประมวลผลเบื้องต้น เพื่อเป็นจุดเริ่มต้นให้ท่านที่กำลังสนใจ โดยเฉพาะกับการใช้งานฐานข้อมูลที่อยู่บนคลาว์ในการจัดเก็บและประมวลผล ที่สามารถเริ่มต้นได้ง่าย

ระบบฐานข้อมูลแบบ Relational Database Management System (RDBMS) กับข้อมูลเชิงพื้นที่

ระบบฐานข้อมูลข้อมูลเชิงสัมพันธ์ (RDBMS: Relational Database Management System) ที่เราใช้งานทั่วไปนั้นถึงจะมีมานานแล้ว แต่ก็ต้องยอมรับว่าปัจจุบันก็ยังมีบทบาทและความสำคัญทั้งในการเป็นระบบฐานข้อมูลที่ใช้เก็บข้อมูลเพื่อให้บริการเว็บไซต์ทั่วไป การจัดเก็บข้อมูลเพื่อมาประมวลผลข้อมูลหลังบ้าน หรือเป็นฐานข้อมูลสำหรับการทำรายงาน เป็นต้น ซึ่งจะได้กล่าวต่อไปว่าจะนำมาใช้จัดเก็บประมวลผลข้อมูลเชิงพื้นที่อย่างไร

ข้อมูลเชิงพื้นที่หรือที่เรารู้จักกันในอีกนามว่า Spatial Data นั้น เป็นข้อมูลอีกประเภทที่มีความสำคัญ เพราะระบบต่าง ๆ หรือแม้แต่ Big Data ก็มักจะมีข้อมูลประเภท ตำแหน่งที่ตั้ง เส้นทาง หรือขอบเขตพื้นที่ เข้ามาเกี่ยวข้อง ข้อมูลเชิงพื้นที่สามารถนำมาใช้เพื่อการวิเคราะห์เชิงพื้นที่ ยกตัวอย่างเช่น หากห้างสรรพสินค้าต้องการขยายสาขาพื้นที่ให้บริการ ก็ต้องมีการศึกษาจำนวนลูกค้าตามพื้นที่ก่อน เพื่อให้การตัดสินใจขยายสาขานั้นมีความมั่นใจว่าจะมีลูกค้าเพียงพออย่างเหมาะสมและเกิดความคุ้มทุน หรือแม้กระทั้งการนำข้อมูลที่ประกอบด้วยข้อมูลทางภูมิศาสตร์มาช่วยในการวางแผนการใช้ที่ดินให้มีประสิทธิภาพสูงสุด หรือการปรับเปลี่ยนพื้นที่ทางการเพาะปลูกของเกษตรกรให้ได้ผลผลิตสูงสุด

ข้อมูลเชิงพื้นที่นั้นจะต้องใช้ระบบฐานข้อมูลเข้ามาจัดเก็บและประมวลผลเพื่อให้สามารถทำงานได้รวดเร็วมากขึ้น มีการจัดเก็บที่เป็นระเบียบ และมีความปลอดภัยในการเข้าถึง โดยที่หากข้อมูลยังไม่ได้มีขนาดใหญ่มากนัก ก็สามารถเลือกใช้ระบบฐานข้อมูลเชิงความสัมพันธ์ทั่วไป (RDBMS) แต่ถ้าเมื่อข้อมูลมีปริมาณมากจนไม่สามารถจัดเก็บหรือไม่สามารถรอการประมวลผลข้อมูลด้วยระบบฐานข้อมูลเชิงสัมพันธ์ทั่วไปได้ ก็จะต้องใช้เทคโนโลยีที่เป็น Big Data ซึ่งสามารถจัดเก็บและประมวลผลข้อมูลได้มากขึ้นและมีความเร็วกว่าในการประมวลผล เช่นการใช้ BigQuery หรือแม้แต่การจัดเก็บข้อมูลเชิงพื้นที่ใน Big Data Platform แล้วใช้เครื่องมืออย่าง Geospark ในการประมวลผลเชิงพื้นที่ ในบทความนี้จะนำเสนอการจัดเก็บและประมวลผลข้อมูลทางภูมิศาสตร์ด้วยระบบฐานข้อมูล RDBMS ที่มีการใช้งานทั่วไปเท่านั้น ซึ่งจะยกตัวอย่างด้วยการใช้ Google Cloud SQL for PostgreSQL ที่สามารถใช้งานได้ง่าย เพื่อให้ท่านเกิดความเข้าใจและเป็นจุดเริ่มต้น นอกจากนี้ บทความนี้ได้สรุปเครื่องมืออื่น ๆ ที่ท่านสามารถนำมาประยุกต์ใช้ตามความเหมาะสมตามลักษณะงานและโครงการของท่าน

ข้อมูลเชิงพื้นที่ (Spatial Data)

ข้อมูลเชิงพื้นที่นั้น หลัก ๆ มี 2 ประเภทคือ แบบเวกเตอร์ (Vector) และแบบราสเตอร์ (Raster)  ข้อมูลเชิงพื้นที่แบบเวกเตอร์ จะแบ่งเป็นประเภทย่อยหลัก ๆ ได้ 3 ลักษณะ ได้แก่ ข้อมูลแบบจุด (Point) ข้อมูลเส้น (Line) และข้อมูลพื้นที่รูปปิด (Polygon หรือ Area) 

โดยทั่วไปแล้วเราจะใช้มาตรฐานข้อมูลเชิงพื้นที่ของ ESRI โดยเป็นการจัดเก็บข้อมูลแบบเวกเตอร์ ซึ่งจะได้อธิบายรายละเอียดต่อไป  ส่วนข้อมูลเชิงพื้นที่แบบราสเตอร์ผู้เขียนขอยังไม่ได้กล่าวในบทความนี้ การเก็บข้อมูลแบบราสเตอร์นั้น จะเป็นการเก็บข้อมูลแบบพิกเซล (Pixel) โดยรูปภาพข้างล่างนี้ได้แสดงตัวอย่างลักษณะข้อมูลเชิงพื้นที่ทั้งสองแบบ เพื่อให้ท่านเห็นภาพข้อมูลแบบ แบบเวกเตอร์และแบบราสเตอร์ (ที่มา https://geodacenter.github.io/opioid-environment-toolkit/spatial-data-introduction.html )

2021-06-001_1 Spatial Data : Vector and Raster
รูปที่ 1 แสดงลักษณการจัดเก็บข้อมูลเชิงพื้นที่แบบเวกเตอร์และราสเตอร์

ESRI Shapefile เป็นมาตรฐานการจัดเก็บข้อมูลเชิงแผนที่แบบเวกเตอร์ ประกอบด้วยไฟล์ที่มีนามสกุลต่างกันหลายไฟล์ โดยท่านสามารถดูคำอธิบายของไฟล์แต่ละนามสกุลได้ที่ https://en.wikipedia.org/wiki/Shapefile แต่ไฟล์หลักที่จำเป็นจะต้องมีอยู่เสมอ ได้แก่ ไฟล์นามสกุล shp shx และ dbf  ซึ่งทั้ง 3 ไฟล์จะเก็บข้อมูลคนละประเภท ตามรูปข้างล่างและคำอธิบายนี้

2021-06-001_2 Spatial Data - ESRI
รูปที่ 2 แสดงโครงสร้างการจัดเก็บข้อมูลแบบเวกเตอร์
  • shp (shape file) จะเก็บข้อมูลเวกเตอร์ที่เป็นข้อมูลภูมิศาสตร์คือ ละติจูด ลองจิจูด
  • shx (shape index file) จะเก็บ Index ที่ใช้เพื่อเชื่อมไปหาข้อมูล attribute ของ shp แต่ละชิ้นข้อมูล
  • dbf (dBase database file) นั้นใช้เก็บข้อมูลประเภท attribute โดยสามารถจัดเก็บได้หลายคอลัมน์ ยกตัวอย่างเช่น หาก shp จัดเก็บรูปร่างขอบเขตพื้นที่จังหวัด แต่ละจังหวัดในประเทศไทยแบบ Polygon (Area) dbf ก็จะใช้จัดเก็บรหัสจังหวัด ชื่อจังหวัด จำนวนประชากร หรือข้อมูลอื่น ๆ ที่ต้องการจัดเก็บเพื่อเป็นข้อมูลเฉพาะของจังหวัดนั้น ๆ

เมื่อผู้อ่าน อ่านมาถึงตรงนี้แล้ว ท่านจะเข้าใจเบื้องต้นว่าข้อมูลเชิงพื้นที่นั้น จะต้องประกอบด้วยข้อมูลที่ใช้เป็นตัวแทนในการเก็บข้อมูลเชิงภูมิศาสตร์ ซึ่งมีการเก็บละติจูดและลองจิจูด โดยอย่างน้อยจะมี 3 แบบ ได้แก่ แบบจุด แบบเส้น และ พื้นที่รูปปิด

ในลำดับถัดไป บทความจะขออธิบาย วิธีการจัดเก็บข้อมูลเชิงพื้นที่ในระบบฐานข้อมูล เพื่อการจัดเก็บที่ดี เข้าถึงง่าย สามารถใช้ร่วมกันผ่านการเชื่อมต่อระบบฐานข้อมูล และเพื่อนำไปประมวลผล ซึ่งจะอธิบายต่อไปว่าการประมวลผลข้อมูลเชิงพื้นที่นั้นสามารถทำอะไรได้บ้างและจะมีวิธีในการประมวลผลอย่างไร

ก่อนที่จะไปเริ่มต้นเนื้อหาในส่วนระบบฐานข้อมูล ขอให้ผู้อ่านดาวน์โหลดข้อมูลเชิงพื้นที่ ทั้ง 3 ประเภทมาเปิดดู โดยท่านสามารถใช้โปรแกรม QGIS ในการเปิดดูไฟล์ได้ โดยให้ท่านลากไฟล์นามสกุล SHP ไปวางที่กลาง panel ของโปรแกรม QGIS ซึ่งโปรแกรมจะแสดงแผนที่ดังเช่นภาพตัวอย่าง ซึ่งจะแสดงตามไฟล์ที่ท่านเลือก ดาวน์โหลด (Download: https://qgis.org/downloads/QGIS-OSGeo4W-3.20.2-1.msi )

2021-06-001_3 Free downloadable Spatial data
URL: http://www.bangkokgis.com/modules.php?m=download_shapefile
รูปที่ 3 แสดงตัวอย่างข้อมูลเชิงพื้นที่ที่สามารถดาวน์โหลดได้ฟรี
2021-06-001_4 QGIS example for spatial data
รูปที่ 4 แสดงตัวอย่างการเปิดข้อมูลเชิงแผนด้วยโปรแกรม QGIS

เปรียบเทียบ Cloud Services ที่ให้บริการระบบฐานข้อมูล

ในส่วนนี้จะเริ่มนำท่านให้รู้จัก Cloud SQL หากจะพูดถึง Cloud SQL ต้องอธิบายก่อนว่า Cloud Service คืออะไร โดยทั่วไปแล้วเมื่อพูดถึง Cloud Service จะหมายถึงการที่เราใช้บริการเครื่อง server  ที่ผู้ให้บริการต่าง ๆ เป็นผู้ให้บริการ เช่น AWS Microsoft Google หรือผู้ให้บริการเจ้าอื่น ๆ รูปแบบการให้บริการมีทั้งในรูปแบบการให้บริการเครื่อง VM (Infrastructure as a Service: IaaS) การให้บริการแฟลตฟอร์ม (Platform as a Service: PaaS) หรือการให้บริการซอฟต์แวร์ (Software as a Service: SaaS) ขอให้ท่านดูตารางข้างล่างนี้ประกอบ ซึ่งเป็นตารางที่ใช้แสดงว่าผู้ให้บริการนั้นมี Service อะไรที่ให้บริการบ้าง (ตารางนำเสนอบริการแค่บางส่วนเท่านั้น)  โดยทั้ง 3 เจ้าผู้ให้บริการมีการให้บริการ Relational Database ได้แก่ AWS RDS,  Azure SQL Database และ Google Cloud SQL ซึ่งในบทความนี้จะขอให้ Google Cloud SQL เป็นตัวอย่างในการนำข้อมูลเชิงแผนที่เข้าประประมวลผล

2021-06-001_5
https://tutorialsdojo.com/aws-vs-azure-vs-gcp-which-one-should-i-learn/
รูปที่ 5 ตารางแสดงการเปรียบเทียบบริการบนคลาวด์

เริ่มต้นใช้งาน Google Cloud SQL เพื่อจัดเก็บข้อมูลเชิงพื้นที่

ผู้ใช้งาน Google Cloud Platform สามารถสร้างระบบฐานข้อมูลประเภท Relational Database ได้ด้วยขั้นตอนไม่กี่ขั้นตอนดังต่อไปนี้

  1. เข้าไปที่ส่วน Cloud SQL ซึ่งผู้ใช้บริการสามารถเลือกระบบฐานข้อมูล PostgreSQL ที่มีฟังก์ชันการประมวลผลข้อมูลเชิงพื้นที่ให้ใช้บริการ
  2. ติดตั้ง PostGIS Extension ได้เพิ่มเติม เพื่อให้สามารถจัดเก็บข้อมูลประเภทเชิงพื้นที่และประมวลผลข้อมูลเชิงพื้นที่ได้
  3. Cloud SQL นั้นมีระบบป้องกันความปลอดภัยโดยท่านสามารถระบุ IP ที่สามารถเชื่อมต่อมายังฐานข้อมูลได้ หลังจากที่สร้างฐานข้อมูลแล้วอย่าลืมที่จะตั้งค่า Whitelist IP เพื่อเริ่มใช้งาน เช่น ท่านอาจจะอนุญาตให้เฉพาะ IP จากหน่วยงานของท่านเท่านั้น ที่สามารถเชื่อมต่อมายังที่ตัวฐานข้อมูล Cloud SQL ได้
2021-06-001_6
รูปที่ 6 ภาพตัวอย่างการสร้าง Cloud SQL และตั้งค่า Whitelist IP
  1. เมื่อสร้างฐานข้อมูลแล้ว ให้ทำการเชื่อมต่อไปยังฐานข้อมูล แล้วติดตั้ง PostGIS Extension (https://postgis.net/) เพื่อเริ่มการใช้งานข้อมูลเชิงพื้นที่บน PostgreSQL โดยให้รันคำสั่งตามตัวอย่าง ด้วย User ที่เป็น admin ของระบบฐานข้อมูล เมื่อ Extension ถูกติดตั้งเรียบร้อยแล้วจะได้ ตัว Extension ตามรูปทางขวามือ ตัวอย่างนี้ใช้การเชื่อมต่อไปยัง CloudSQL Postgresql ด้วยเครื่องมือ DBeaver โดยท่านสามารถดาวน์โหลดได้ที่ https://dbeaver.io/
POSTGIS Extension for spatial data geoprocessing
รูปที่ 7 ภาพตัวอย่างคำสั่งในการติดตั้ง PostGIS extension
  1. เมื่อสร้างระบบฐานข้อมูลและติดตั้งส่วนต่อขยาย (Extension) เสร็จแล้ว ท่านสามารถใช้โปรแกรม QGIS เพื่อ import ข้อมูลเชิงพื้นที่เข้าไปจัดเก็บในฐานข้อมูลได้เลย โดยท่านจะต้องไปที่เมนู Database บน QGIS และเลือก Import Data โดยท่านจะต้องสร้างการเชื่อมต่อระหว่าง QGIS กับ Cloud SQL ให้เรียบร้อย เมื่อกด Import ข้อมูลแล้ว ตัวข้อมูลเชิงพื้นที่ที่ท่าน Import จะถูกสร้างและจัดเก็บใน Cloud SQL ถึงตอนนี้ จะสามารถแชร์ให้ผู้อื่นเชื่อมต่อมายังฐานข้อมูลได้แล้ว
2021-06-001_7 Import Spatial data
รูปที่ 8 ภาพตัวอย่างขั้นตอนการนำเข้าข้อมูลเชิงพื้นที่

การประมวลผลข้อมูลเชิงพื้นที่นั้นเราเรียกโดยทั่วไปว่า Geoprocessing

เมื่อข้อมูลเชิงพื้นที่พร้อมในฐานข้อมูล ตอนนี้มาถึงส่วนสำคัญอีกส่วนที่ท่านจะต้องทราบว่าโดยพื้นฐานแล้วข้อมูลเชิงพื้นที่ที่มีข้อมูลพิกัดเป็นส่วนประกอบนั้นสามารถถูกประมวลผลอะไรได้บ้าง ซึ่งการประมวลผลข้อมูลเชิงพื้นที่นั้นเราเรียกโดยทั่วไปว่า Geoprocessing ให้ท่านลองนึกถึง operations ของ Set เช่นการทำ Union การทำ Intersect ตามตัวอย่างรูปภาพประกอบด้านล่าง

แต่ Geoprocessing นั้นมี operations ที่หลากหลายและมีชื่อเรียกที่แตกต่างกันออกไป ส่วนนี้ขอให้ท่านดูในรูปภาพประกอบ ซึ่งแสดงผลลัพธ์ที่ได้จากแต่ละ Geoprocessing Function เช่น Identity Clip Dissolve Merge และ Buffer สรุปคือการทำ operations ที่มีผลต่อข้อมูลเชิงพื้นที่นั้นเอง

สิ่งสำคัญอีกอย่างที่ท่านจะต้องทราบก่อนการทำ Geoprocessing คือ Spatial Matching ซึ่งเป็นการตรวจสอบว่า ข้อมูลเชิงพื้นที่แต่ละส่วนนั้น ๆ เป็นไปตามเงื่อนไขลักษณะของพื้นที่หรือไม่ก่อนการสั่งให้ทำ Geoprocessing ยกตัวอย่างเช่น เจ้าหน้าที่สาธารณสุขต้องการทราบว่ามีพื้นที่ให้บริการของโรงพยาบาลใดในกรุงเทพมหานคร ที่มีการให้บริการในพื้นที่เดียวกัน และเจ้าหน้าที่สาธารณสุขต้องการทราบขนาดพื้นที่ทับซ้อนบริเวณนั้น ก่อนการทำ Geoprocessing เพื่อหาพื้นที่ทับซ้อนด้วยการทำ Intersection นั้นจะต้องมีการเอาพื้นที่ให้บริการของแต่ละโรงพยาบาลมาตรวจสอบก่อนว่ามีการซ้อนทับกันหรือไม่ หากพบว่าโรงพยาบาลใด ๆ มีพื้นที่ซ้อนทับกันค่อยเอาพื้นที่ของโรงพยาบาลนั้นไปหาพื้นที่ที่ Intersection แล้วจึงไปคำนวณหาขนาดพื้นที่บริการที่เกิดการทับซ้อน การทำ Spatial Match นั้นมีหลายประเภท ซึ่ง PostgreSQL มีฟังก์ชันหลากหลายให้ท่านเลือกใช้งาน โดยขอให้ดูเพิ่มเติมที่ https://postgis.net/docs/manual-1.5/ch08.html

2021-06-001_8 Spatial matching
http://learnline.cdu.edu.au/units/ses101/env208/w5_files/GeoprocessingTools_handouts.pdf
รูปที่ 9 ภาพอธิบายการประมวลผลข้อมูลเชิงภูมิศาสตร์

เมื่อข้อมูลเชิงพื้นที่ได้ถูกจัดเก็บในฐานข้อมูลแล้ว ข้อมูลที่ถูกจัดเก็บโดยการสร้างเป็นตารางนี้ จะสามารถถูกเรียกประมวลผลด้วย Geoprocessing โดยการเรียกใช้งานผ่านฟังก์ชันของ PostGIS Extension เช่น ST_Area ที่ใช้ในการหาพื้นที่, ST_Union ที่ใช้เพื่อรวมพื้นที่, และST_Intersection เพื่อหาพื้นที่ซ้อนทับ เป็นต้น

ข้อมูลที่เป็นลักษณะเชิงพื้นที่สามารถเรียกแทนว่า Geom หรือ Geometry Data Type โดยท่านจะเห็นในตัวอย่างโค้ด SQL ข้างล่าง 

ตัวอย่างคำสั่ง SQL สองคำสั่งข้างล่างนี้ เป็นตัวอย่างการเรียกใช้ฟังก์ชันการประมวลผลข้อมูลเชิงพื้นที่ โดยท่านสามารถศึกษารายละเอียดการเรียกใช้แต่ละฟังก์ชันได้ตามลิงค์นี้เช่นกัน https://postgis.net/docs/manual-1.5/ch08.html

  1. ตัวอย่างการใช้ภาษา SQL เพื่อหาพื้นที่ซ้อนทับ โดยเรียกฟังก์ชันของ PostGIS
    (ท่านสามารถอ่านรายละเอียดเพิ่มเติมได้ที่ https://postgis.net/docs/ST_Intersection.html)
select poly.gid,
    ST_Multi(
        ST_Buffer(
            ST_Intersection(country.geom, poly.geom),
            0.0
        )
    ) clipped_geom
from country
     inner join poly on ST_Intersects(country.geom, poly.geom)
where not ST_IsEmpty(ST_Buffer(ST_Intersection(country.geom, poly.geom), 0.0));
  1. ตัวอย่างการใช้ภาษา SQL เพื่อหาขนาดของพื้นที่ โดยเรียกฟังก์ชันของ PostGIS
    (ท่านสามารถอ่านรายละเอียดเพิ่มเติมได้ที่ https://postgis.net/docs/ST_Area.html)
select ST_Area(geom) sqft,
    ST_Area(ST_Transform(geom, 26986)) As sqm
from (
         select
             'SRID=2249;POLYGON((743238 2967416,743238 2967450,
             743265 2967450,743265.625 2967416,743238 2967416))' :: geometry geom
     ) subquery;
┌─────────┬─────────────────┐
│  sqft   │       sqm       │
├─────────┼─────────────────┤
│ 928.625 │ 86.272430607008 │
└─────────┴─────────────────┘

Note: ฟังก์ชันของ PostGIS นั้นมีจำนวนค่อนข้างเยอะ เมื่อท่านเริ่มทำงานจริง ท่านจะต้องศึกษาว่าแต่ละฟังก์ชันรับค่า คืนค่าและใช้เพื่อทำอะไร บทความนี้ได้แสดงตัวอย่างเพียงแค่ 2 ฟังก์ชันเพื่อให้ท่านเห็นภาพ สำหรับฟังก์ชันอื่น ๆ ท่านสามารถดูเพิ่มเติมที่ https://postgis.net/docs/manual-1.5/ch08.html

การประมวลผลข้อมูลเชิงพื้นที่ด้วยเครื่องมืออื่น ๆ

การใช้งาน PostGIS ที่ถูกติดตั้งในระบบฐานข้อมูล PostgreSQL บน Google Cloud SQL เป็นเพียงเครื่องมือที่ถูกนำเสนอในบทความนี้เท่านั้น ซึ่งสามารถนำมาใช้งานง่าย มีขั้นตอนไม่มาก จริง ๆ แล้วยังมีเครื่องมืออีกหลายตัวที่ท่านสามารถศึกษาและนำมาประยุกต์ใช้ เครื่องมือบางตัวมีค่าใช้จ่าย เครื่องมือบางตัวไม่มีค่าใช้จ่าย แต่จะเลือกใช้เครื่องมือใดนั้นก็ขึ้นอยู่กับงบประมาณและทักษะของบุคลากร ขอยกตัวอย่างเช่น

  • ESRI: ก็มีชุดเครื่องมือที่ครบครันในการนำมาใช้ประมวลผลและนำเสนองานข้อมูลเชิงพื้นที่ สามารถทำ Geoprocessing ต่าง ๆ ได้อย่างครบครัน เป็นเครื่องมือที่มีความแม่นยำสูงในการประมวลผลเชิงพื้นที่
  • QGIS: ก็เป็นเครื่องมือที่สามารถนำมาใช้งานได้ฟรีโดยไม่มีค่าใช้จ่าย สามารถทำ Geoprocessing ต่าง ๆ ได้ QGIS นั้นไม่ได้มีส่วนการจัดเก็บข้อมูลที่เป็นระบบฐานข้อมูลภายใน ท่านจะต้องเชื่อมต่อไปที่ไฟล์หรือฐานข้อมูลภายนอก
  • GeoSpark: นั้นเป็นชุด Library ที่สามารถประมวลผลได้ในระดับ Big Data โดยสามารถรันใน Spark ที่เป็น Memory-Based Processing บน Big Data Cluster สามารถเขียนได้ด้วยภาษาโปรแกรม Java หรือ Scala 
  • Shapely: หากท่านเป็นสาย Data Scientist ที่อาจจะไม่ได้ต้องการประมวลผลข้อมูลเชิงพื้นที่ในระดับ Big Data ก็อาจจะเลือกใช้ Shapely Library สำหรับการเขียนโปรแกรมภาษา Python
  • BigQuery:  Cloud Technology เป็นอะไรที่ท่านสามารถนำมาใช้งานได้ง่าย สามารถเริ่มการทำงานได้เร็ว ก็จะขอยกตัวอย่างเช่น Google BigQuery ที่ท่านสามารถนำข้อมูลเชิงพื้นที่ขึ้นไปสร้างตารางคล้าย ๆ กับที่บทความนี้ได้นำเสนอ ซึ่ง BigQuery นั้นรองรับการประมวลผลด้วยคำสั่ง GIS SQL เช่นเดียวกับ PostGIS  สามารถดูฟังก์ชันการทำงานต่างของ BigQuery กับ Spatial Data ได้ที่ https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions และท่านยังสามารถใช้ GeoViz ในการแสดงข้อมูลเชิงแผนที่ตามรูปตัวอย่าง
2021-06-001_9 Tools for Spatial data geoprocessing
รูปที่ 10 ตัวอย่างการใช้เครื่องมืออื่น ๆ ในการประมวลผลข้อมูลเชิงพื้นที่
  • Alteryx: เป็นซอฟท์แวร์ที่สามารถนำมาใช้ทำ Geoprocessing ได้ดีและมีความแม่นยำสูง โดยมีเครื่องมือการประมวณผลข้อมูลเชิงพื้นที่ที่ครบครัน สามารถต่อยอดไปสู่การทำ Data Analytics ได้ง่าย โดยสามารถรันโมเดลทางด้าน Data Science แค่การลากวาง ก็จะเหมาะกับองค์กรหรือหน่วยงานที่ไม่ได้มีโปรแกรมเมอร์ประจำ โดยที่สามารถสร้าง Workflow ได้อย่างรวดเร็วตามรูปตัวอย่างที่ 11 ซึ่งเป็นตัวอย่างการนำแผนที่ป่าสงวนทั้งประเทศ มาหาพื้นที่รวมในแต่ละจังหวัด โดยหาว่าจังหวัดใดมีพื้นที่ป่าสงวนมากที่สุดในประเทศ ซึ่งผู้ที่เคยมีประสบการณ์ใช้งาน Alteryx มาก่อน สามารถพัฒนา Workflow นี้ให้เสร็จภายในระยะเวลาอันสั้น เพียงการลากวางและตั้งค่าเครื่องมือต่าง ๆ ที่อยู่ใน Workflow เท่านั้น และยังสามารถบันทึกข้อมูลกลับเข้าระบบฐานข้อมูลเชิงสัมพันธ์ บันทึกเป็น Shape file หรือแม้แต่นำผลไปเก็บไว้บน Cloud Storage หรือ Big Query ผ่าน API ก็ทำได้
2021-06-001_10 Alteryx for Spatial data geoprocessing
รูปที่ 11 ตัวอย่างการใช้ Alteryx ในการประมวลผลข้อมูลเชิงพื้นที่

บทสรุป

ซอฟต์แวร์และการบริการที่ได้กล่าวมาทั้งหมดนี้ การจะพิจารณาเลือกตัวไหนมาใช้งานนั้น ขึ้นอยู่กับ ลักษณะข้อมูล จำนวนข้อมูล ทีมงาน งบประมาณ เลือกเทคโนโลยีมาใช้งานให้เหมาะสม บทความนี้ได้พาท่านมาเห็นภาพรวมในการประมวลผลข้อมูลเชิงพื้นที่และเครื่องมือต่าง ๆ โดยเฉพาะการใช้ PostGIS Extention สำหรับ PostgrSQL บน CloudSQL ที่เริ่มต้นใช้งานได้ง่าย เหมาะกับข้อมูลที่ไม่ได้มีขนาดใหญ่มากนัก ผู้เขียนหวังว่าจะเป็นจุดเริ่มต้นสำหรับท่านที่อาจยังไม่เคยได้เริ่มใช้ข้อมูลที่เป็นเชิงพื้นที่ ได้เริ่มต้นเรียนรู้และนำเครื่องมือต่าง ๆ เหล่านี้มาประยุกต์ใช้ในโครงการของท่านต่อไป


เนื้อหาโดย กิตติศักดิ์ สะอาดเอี่ยม

ตรวจทานและปรับปรุงโดย ณัฐพัชร์ เศรษฐเสถียร

Recommended Posts