Shapefile หรือ ESRI Shapefile ภาษาไทยก็คือ เชปไฟล์ เป็นไฟล์มาตรฐานรูปแบบหนึ่งของเทคโนโลยี GIS ซึ่งโดยความหมายแล้วไม่ได้หมายถึงไฟล์นามสกุล shp เท่านั้น ตรงนี้จะเห็นว่าเวลาเซฟไฟล์จะได้ไฟล์ชื่อเดียวกันหลายนามสกุล
เวลาดูเชปไฟล์ใน ArcCatalog (หรือในซอฟต์แวร์อื่น เช่น QGIS) ท่านจะเห็นเพียงไฟล์เดียว แต่ถ้าดูในวินส์โดว์เอ็กซ์โพเรอร์ จะเห็นเป็นหลายไฟล์ตามนามสกุล

ทั้งหมดนั้นประกอบรวมกันเพื่อนำมาใช้งานด้วยกัน
บล็อกนี้ก็เลยจะอธิบายเพิ่มเติมว่าแต่ละตัวที่เก็บไว้นั้นใช้ทำอะไร
Shapefile ตัวสำคัญ ขาดตัวไหนไม่ได้?
เรียกว่าตัวสำคัญเพราะถ้าขาดตัวใดตัวหนึ่งไปจะใช้งานไม่ได้ คือ
- main file (.shp)
- dBase File (.dbf)
- index file (.shx)
ถ้าขาดตัวใดตัวหนึ่งใน 3 ไฟล์นี้จะไม่สามารถใช้งานเชปไฟล์นั้นได้ ทั้งสามไฟล์นี้จะต้องมีชื่อเดียวกัน และจะต้องเก็บไว้ในที่เดียวกัน
.shp ตัวหลัก เก็บข้อมูล geometry หรือ เว็กเตอร์ จำพวกจุด เส้น พื้นที่ จัดเก็บในรูปแบบตาราง เช่นถ้าเป็นข้อมูล Point จะเป็นข้อมูล X,Y เป็นต้น รายละเอียดมีอีกมากมายศึกษาได้จาก whitepaper ของ ESRI ได้โดยตรง
.dbf ตัวนี้คนทำงานด้านข้อมูลจะรู้จักกันดี dBASE table หรือตารางข้อมูลต่าง ๆ ที่ได้บันทึกไว้เมื่อสร้าง .shp หรือที่เรียกว่า Attribute Table ดังนั้น ถ้าต้องการใช้แต่ข้อมูล Attribute Table เปิด .dbf มาใช้ได้เลย MS Office กลับมาสนับสนุนไฟล์ dBASE อีกครั้งแล้ว ใน OFFice 365 หลังจากเลิกสนับสนุนไปหลายปี Excel เปิดได้แต่เซฟไม่ได้
.shx ตัวนี้เป็นอินเด็กซ์ไฟล์ เป็นสารบัญหรือดัชนี หรือตัวเชื่อมข้อมูลระหว่าง .shp กับ .dbf
สามตัวนี้คือไฟล์สำคัญ จำเป็นต้องมีสำหรับทำงาน ตัวอื่นที่อาจจะไม่สำคัญเท่าสามตัวแรก ไม่จำเป็นต้องมีก็ได้ แต่ถ้าขาดไฟล์ใดไฟล์หนึ่งในสามไฟล์นี้มีปัญหาแน่นอน
ไฟล์อื่นที่ใช้ในเชปไฟล์
นอกจากสามไฟล์ข้างต้นแล้ว ยังมีไฟล์อื่นที่ใช้งานร่วมอีก โดยแต่ละไฟล์จะใช้ชื่อเดียวกัน ซึ่งมีไฟล์ที่ปรากฎใน ESRI ดังนี้
.cpg ตัวนี้ไม่จำเป็นนักไม่มีก็ได้ แต่สำหรับคนไทยน่าจะจำเป็นเพราะเป็นตัวเก็บว่า character set ที่ใช้ ซึ่งเรามักจะมีปัญหาเพราะใช้ utf-8 บ้าง tis-620 บ้าง ถ้ามีตัวนี้กำกับอยู่จะเห็นว่าเก็บค่าอย่างไรไว้
ปกติถ้าไม่มีการตั้งค่าอะไรไว้เป็นพิเศษ สำหรับเครื่องวินโดว์ทั่วไปจะได้เป็น OEM 874 โดยอัตโนมัติ (คือ Windows 874 นั่นแหละ แต่เป็นระบุว่า ระบบ หรือ systemยกเว้นจะมีการตั้งค่าวินโดว์เป็น encoding อื่น) ถ้าไม่มีไฟล์นี้อยู่ ArcGIS จะใช้ encoding แบบที่ระบบใช้อยู่ ซึ่งถ้าตรงกับต้นทางก็จะอ่านภาษาไทยได้ แต่ถ้าต้นทางกำหนด encoding มาอีกแบบก็จะกลายเป็นตัวอักขระอ่านไม่ออกไปแทน
ใครที่ใช้ QGIS แล้วมีปัญหาเรื่องอ่านภาษาไทยไม่ได้ ใช้วิธีนี้แก้ปัญหาก็ได้อยู่ สร้างไฟล์ที่มีนามสกุล .cpg ขึ้นมา (ใช้ notepad สร้างแล้วแปลงนามสกุลภายหลังก็ได้) แล้วพิมพ์ว่า OEM 874 บันทึกไฟล์ให้ตรงกับชื่อไฟล์ .shp ทุกประการ เพียงเท่านี้เครื่องที่ใช้วินโดวส์ปกติไม่ดัดแปลงปรุงแต่งอะไรมากนัก ก็น่าจะอ่าน attribute ภาษาไทยได้แล้ว (หรืออจะเปลี่ยนเป็น Tis-620 หรืออะไรก็ได้ตามความต้องการ)
.xml ตัวนี้เก็บ Metadata ของเชฟไฟล์ที่ใช้ใน ArcGIS ถ้าไม่อยากใช้ก็ทิ้งได้ แต่เก็บไว้ก็ไม่เสียหาย
.prj เก็บข้อมูลเกี่ยวกับ cordinate system ที่ใช้สำหรับเชฟไฟล์นั้น ถ้าไม่มีไฟล์นี้ก็ไม่เป็นไร ArcGIS จะขึ้นเตือนตอนนำเชฟไฟล์เข้าว่า unknown coordinate system ซึ่งแก้ปัญหาง่ายมาก แค่ ใช้ define projection สร้างขึ้นมาใหม่
.sbn กับ .sbx ตัวนี้ทำงานเสริม .shx คือทำหน้าที่เป็นดัชนีเก็บข้อมูล spatial features แต่เป็นดัชนีที่ผ่าน Query มาแล้วซึ่งจะช่วยให้โหลดข้อมูลได้เร็วขึ้น
ตัวอื่นก็ไม่ค่อยได้เห็นใช้งานกัน แต่ก็ยังมีประปราย
.fbn กับ .fbx คล้ายสองตัวข้างบน แต่เป็นสำหรับ Read Only
.ain กับ .aih ตัวนี้เก็บ attribute index
.atx ตัวนี้เป็นอินเด็กซ์อีกประเภทหนึ่งที่ ArcCatalog สร้างขึ้น ตัวนี้ ArcGIS จะไม่ใช้งาน
.ixs เก็บข้อมูล Geocoding index ของเชฟไฟล์
.mxs เก็บ Geocoding index ของเชฟไฟล์ในรูป ODB
ทั้งหมดนี้ ประกอบรวมกันเป็นเชปไฟล์ที่เราเอาไว้ใช้งานกัน
ข้อควรจำ
ทุกไฟล์จะต้องมีชื่อเดียวกัน เช่น roads.shp, roads.shx, roads.dbf roads.cpg roads.prj เป็นต้น
Tips:
สำหรับชื่อไฟล์นั้นแต่เดิมจะให้ชื่อไฟล์เพียง 8 อักขระ ซึ่งเป็นไปตามฟอร์แมตของ dos 8.3 ซึ่งปัจจุบันนี้ไม่ได้ยึดติดกับ 8 อักขระอีกต่อไปแล้วเพราะซอฟต์แวร์ใหม่ ๆ พัฒนาก้าวหน้ากว่าเดิมมาก คนรุ่นเก่า ๆ จะเข้าใจดีเวลาแปลงไฟล์ไปแล้วชื่อไฟล์เหลือแค่ 8 อักขระมาไม่ครบจะรู้สึกหงุดหงิด แต่ปัจจุบันก้าวหน้าไปมากแล้วไม่ค่อยเจอปัญหานี้ แต่ถ้าหากจะเอา “ปลอดภัยไว้ก่อน” ก็อย่าลืมตั้งไว้ไม่เกิน 8 อักขระ
จะนำไปใช้ จะต้องสำเนาไปให้ครบทุกไฟล์ ซึ่งอาจะสร้างปัญหาได้ถ้าสำเนาไปไม่ครบ ดังนั้น ถ้าเป็นไปได้ เราควรทำงานใน Geodatabase มากกว่า
บทความอ้างอิง What is a shapefile จาก ESRI