GeoPackage vs Shapefile นี่ขอเขียนในมุมมองส่วนตัวละกันนะ อย่าถือว่าเป็นวิชาการเลย โดยส่วนตัว ใช้ ArcGIS เป็นหลัก ก็เป็นธรรมดาอยู่เองที่จะต้องใช้ Shapefile แต่จากที่เคยต้องหันมาใช้ QGIS บ้างในบางหน ก็เริ่มรู้สึกว่า ถ้าจะทำงานใน QGIS กันแล้ว ทำไมจึงไม่ใช้ GeoPackage กันเลยล่ะ?
คือ รู้สึกว่า GeoPackage มีข้อดีหลายประการอยู่เหมือนกัน ถ้าไม่ติดว่าปกติใช้ ArcGIS มากกกว่า QGIS ก็คงจะหันมาใช้ GeoPackage เป็นหลักเหมือนกัน ก็เลยลองศึกษาดูว่า GeoPackage vs Shapefile มีข้อดีข้อเสียอย่างไรบ้าง เริ่มกันที่ shapefile
Shapefile
Shapefile เป็นไฟล์มาตรฐานที่ใช้กันในวงกว้าง เชื่อว่าถ้าใครทำงานด้าน GIS ล้วนแล้วแต่เคยผ่านการใช้งาน shapefile กันมาแล้วทุกคน พูดได้เต็มปากขนาดนั้น และปัจจุบันนี้ก็ยังถือว่าเป็นไฟล์มาตรฐานที่ยังคงใช้งานกันเป็นหลัก กรมที่ดิน ใช้เป็นไฟล์มาตรฐานในการเก็บข้อมูลรูปแปลงที่ดิน กรมป่าไม้ กรมชลประทาน การทางพิเศษแห่งประเทศไทย และอื่น ๆ อีกมากมาย ก็ใช้ shapefile ซึ่งตรงนี้ถือเป็นจุดแข็งอย่างหนึ่งของการทำงานโดยใช้ shapefile คือ สื่อสารกับคนอื่นได้ง่ายมาก
การที่มีคนใช้ shapefile เป็นหลักก็น่าจะเป็นสิ่งยืนยันอย่างหนึ่งว่าเป็นไฟล์ที่ได้รับความนิยมและเชื่อถือได้ในระดับหนึ่ง ทั้งที่เป็นไฟล์ที่เกิดขึ้นมานานตั้งแต่ต้นทศวรรษ 1990 และไม่มีการเปลี่ยนแปลงโครงสร้างไฟล์เลย
แต่นี่มันปีค.ศ. 2022 แล้วนะ
ด้วยความที่เทคโนโลยีเปลี่ยนเร็วมาก จำได้มั้ยว่าถ้าย้อนกลับไปต้นทศวรรษ 1990 เรายังฟังเพลงจากเทปหรือว่าซีดีกันอยู่เลย ปัจจุบันนี้คนที่เพลงจากเทปหรือซีดีหรือแผ่นเสียงก็ยังมีอยู่นั่นแหละ แต่จำนวนลดน้อยลงไปมาก และเป็นคนที่มีใจรักเรื่องนี้จริง ๆ ส่วนใหญ่ไปใช้ไฟล์ดิจิทัลและสตรีมมิงกันเป็นหลัก
การที่เรายังใช้ (หรือจำใจใช้) shapefile อาจจะต้องถามตัวเองว่า เพราะอะไรจึงยังใช้ shapefile อยู่?
โดยส่วนตัวบอกได้เลยว่า เพราะฉันยังใช้ ArcGIS อยู่น่ะสิ!
อันนี้เป็นเหตุผลหลักจริง ๆ นะ
อย่างน้อย ปัจจุบันนี้ ถ้าจะถามว่า ไฟล์ประเภทไหนที่เป็นมาตรฐานของการทำงานกับ vector data และ spatial analysis มันก็มี shapefile เป็นไฟล์ยืนหนึ่งมาตลอด ถึงแม้ว่าช่วงหลังจะมี GeoJSON มาเป็นคู่ต่อสู้ แต่ถ้าให้แสดงความคิดเห็นจริง ๆ แล้วก็ต้องบอกว่า JSON อาจจะเป็นที่นิยมกันมาก แต่ถ้าเป็น GeoJSON แล้วยังมีบางจุดที่เอามาใช้งานไม่เต็มที่อย่าง shapefile โดยเฉพาะถ้าเราต้องการปรับเปลี่ยนขนาดและปริมาณงาน รวมถึงเวิร์กโฟลว์ต่าง ๆ ที่ยังไม่ค่อย “โฟลว์” สักเท่าไหร่
ปัญหาของ shapefile
ปัญหาแรกเลย (อาจจะไม่ใช่ปัญหา แต่มันคือ “ปัญหา) นั่นคือ ESRI พัฒนา shapefile ในช่วงต้นทศวรรษ 1990 และกลายเป็นมาตรฐานการทำงานด้าน GIS ตั้งแต่นั้นมา shapefile กลายเป็นไฟล์มาตรฐานที่คนใช้กันอย่างแพร่หลาย แต่ เทคโนโลยีมันอาจจะล้าสมัยไปแล้ว ทุกวันนี้เทคโนโลยีก้าวไปไกลมาก หลายเรื่องน่าจะมีการปรับปรุงให้ใช้งานได้เหมาะสมกับเทคโนโลยีในปัจจุบันมากขึ้น
แต่ดูเหมือนว่า ESRI ค่อนข้างอนุรักษ์นิยมกันสักหน่อย อย่างเช่น ArcGIS 10 ยังคงใช้ Python 2 และแม้ว่า ArcGIS Pro จะเปลี่ยนมาใช้ Python 3 แต่ก็ยังคงใช้ shapefile เป็นหลักเหมือนเดิม
สิ่งที่ทำให้ shapefile อุ้ยอ้ายมากก็คือ การใช้งาน shapefile จะต้องประกอบด้วยไฟล์หลายไฟล์ (แต่ละไฟล์ทำหน้าที่อะไรบ้าง เคยเขียนไปแล้ว รบกวนคลิกไปอ่านของเก่านิดนึง) คือนอกจากไฟล์ geometry แล้วยังต้องการไฟล์ database สำหรับเก็บแอตทริบิวต์และดัชนีสำหรับทำงาน นั่นคือ ถ้าจะทำงานกับ shapefile จะต้องมีไฟล์อย่างน้อย 3 ไฟล์ที่เก็บข้อมูลสัมพันธ์กัน (.shp .shx และ .dbf) ถ้าหากเราต้องการเอาไฟล์ไปให้ใครทำงานต่อ ลองจินตนาการว่ามีเลเยอร์ที่ต้องทำงานสัก 10 ชั้นข้อมูล เราต้องมีไฟล์ทั้งหมด อย่างน้อย 30 ไฟล์ ไม่ใช่เล่น ๆ เลยนะ
Shapefile ใช้ Well-Known Binary (WKB) สำหรับการเข้ารหัสรูปทรงเรขาคณิต ซึ่งอิงจากการคิดแบบตาราง กล่าวคือ หมายเลขแถวและคอลัมน์ของค่ามีความสำคัญ และยังมีข้อจำกัดของชื่อฟิลด์แอตทริบิวต์จะตั้งได้ยาวสุดแค่ 10 อักขระและมักจะมีปัญหากับภาษาไทยเรื่อง ASCII อีกต่างหาก
นอกจากนี้ ข้อจำกัดเรื่องขนาดไฟล์ ต้องไม่เกิน 2GB คุณอาจจะคิดว่าขนาดไฟล์นี้ใหญ่แล้ว แต่อันนี้ประสบการณ์ส่วนตัวเลย เคยจัดการไฟล์รูปแปลงที่ดินทั้งจังหวัด อยากเอามาไว้รวมกันเช่น กรุงเทพ ไม่สำเร็จเพราะขนาดไฟล์ใหญ่เกินไป ไม่สามารถนำมารวมกันได้
ถ้าหากเรื่องเหล่านี้ไม่กวนใจและไม่มีผลกับการทำงานของท่าน ก็ไม่จำเป็นต้องอ่านต่อไป เพราะสิ่งที่จะเขียนต่อไปคือจุดแข็งของ GeoPackages ที่เหมือนปิดจุดอ่อนของ shapefile กันตรง ๆ
GeoPackags
GeoPackage (GPKG) เป็นไฟล์ที่ออกมาเมื่อปีค.ศ. 2014 พัฒนาโดย Open Geospatial Consortium (OGC) จะวางระบบข้อมูลอิง SQLite ซึ่งในแง่การออกแบบให้กระทัดรัดและเข้าถึงง่ายนี้ทำให้นึกถึงข้อดีของ GeoJSON หลายอย่างอยู่เหมือนกัน แถมมีคุณสมบัติที่หลากหลายและสะดวกในหลายด้าน
อย่างแรกสุด GeoPackage เก็บทุกอย่างเบ็ดเสร็จในไฟล์เดียว และในไฟล์เดียวกันนั้น ไม่โดนจำกัดเรื่อง ประเภทของ geometry (point line polygon) สามารถอยู่ด้วยกันได้ ถ้าเป็น shapefile จะต้องแยกคนละไฟล์ คือ point เป็นไฟล์หนึ่ง polygon เป็นไฟล์หนึ่ง
GeoPackage vs Shapefile – ความแตกต่างเรื่องขนาดไฟล์
เปรียบเทียบให้เห็น polygon47 นี้เก็บข้อมูลเดียวกัน ทั้งที่เป็น shapefile (จำนวน 4 ไฟล์ .shp .dbf . prj . shx) และ GeoPackage (จำนวน 1 ไฟล์)
จะเห็นได้ชัดเจนว่า นอกจากจำนวนไฟล์ที่น้อยกว่าแล้ว ขนาดไฟล์ก็เล็กกว่าด้วย
นอกจากนี้ ยังสนับสนุนการเก็บข้อมูล raster และบรรดา non-spatial attributes data ไว้ในตัวอีกด้วย และที่สำคัญ พวกชื่อคอลัมน์ (ฟิลด์) จะใช้กี่อักขระก็ได้ ไม่ได้โดนจำกัดที่ 10 อักขระแบบ shapefile ไม่โดนข้อจำกัดขนาดไฟล์ 2 GB แบบ shapefile
และไม่รู้ว่าจะเอาใจช่วยเกินไปหรือเปล่า รู้สึกว่า เวลาทำ query ต่าง ๆ จะเร็วกว่า shapefile
GeoPackage vs Shapefile
เอาจริงแล้ว ต้องย้ำอีกทีว่า ตัวคนเขียนยังคงใช้ shapefile เป็นหลัก ด้วยเหตุผลหลักคือซอฟต์แวร์ที่ใช้ ArcGIS และ shapefile เป็นมาตรฐานที่หน่วยงานใช้
ดังนั้น ถ้าจำเป็นต้องใช้ไฟล์แบบไหน เราก็ใช้ไฟล์แบบนั้นแหละ อันนี้เป็นข้อจำกัดทางอาชีพการงาน ถึงบอกว่า GeoPackage ดีอย่างนั้นอย่างนี้ แต่ไม่มีคนรอบข้างใช้ก็จบ!
แต่โดยส่วนตัว อยากเปลี่ยนมาใช้ GeoPackage เป็นหลักเหมือนกัน ด้วยเหตุผลที่กล่าวถึงในหัวข้อ GeoPackage ที่เขียนถึงด้านบนนี่แหละ นั่นคือ มันเป็นไฟล์ที่กะทัดรัด (มีไฟล์เดียว) ไม่โดนจำกัดเรื่องการตั้งชื่อฟิลด์ และขนาดไฟล์ใหญ่กว่า 2 GB ได้ ซึ่ง 3 ข้อนี้เป็นข้อที่อยากจะให้ shapefile ทำได้แบบนี้บ้าง
ส่วนท่านจะเลือกใช้แบบไหนก็แล้วแต่ใจเถิด GISist ทั้งหลาย