การตรวจสอบความถูกต้องในการแปล Accuracy assessment ด้วยการใช้ ARCGIS

วันนี้มีโจทย์คือเราจะตรวจสอบความถูกต้องในการแปลของข้อมูล ที่อยู่ในรูปแบบ Shapefile ยังไง

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

ซึ่งผมจะมาเสนอวิธีการในการตรวจสอบคุณภาพของข้อมูล โดยใช้ Arcgis นะครับ ส่วนใครที่เคยทำงานด้าน remote sensing คงคุ้นเคยกันดีในการทำ Accuracy assessment หรือ Confusion Matrix อะไรประมาณนี้นะครับ ในรูปแบบ Raster ซึ่ง Software ด้าน Remote sensing ทั้งหมดสนับสนุน Function นี้อยู่แล้ว ผมขอข้ามไปก่อน ครั้งนี้มาว่ากันที่รูปแบบ Vector  จะทำยังไงดี

อันดับแรกนะครับ เราก็ต้องมีข้อมูลเพื่อมา Reference ให้กับข้อมูลที่เราจะทำการตรวจสอบก่อน ซึ่งก็คือข้อมูลภาคสนามที่เราจะต้องไปเก็บมา

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

ในการสำรวจภาคสนามเราก็ต้องมา Design วิธีการเก็บข้อมูลกันอีก โดยมีเรื่องที่ต้องคำนึงการดังนี้

  1. คำนวณขนาดพื้นที่ ที่ใช้ในการตรวจสอบ ที่เหมาะสมกับสภาพพื้นที่
  2. จำนวนจุดที่ใช้ในการตรวจสอบ เหมาะสมกับระยะเวลาที่มี

วิธีการคือ อันดับแรก

กำหนดขนาดพื้นที่ที่จะใช้ตรวจสอบ  ตัวอย่างเช่น จะใช้พื้นที่ 200 x 200 ตารางเมตรหรือเท่ากับ 25 ไร่ เป็นต้น ขนาดพื้นที่นี้ลองพิจารณาให้เหมาะสมกับสภาพพื้นที่จริงด้วย หากมีขนาดเล็กไปก็ไม่สามารถเก็บข้อมูลสภาพพื้นที่ได้ครบถ้วน  หากใหญ่เกินก็เสียเวลาในการเก็บข้อมูล และไม่สามารถเก็บข้อมูลทั้งพื้นที่ได้เนื่องจากการเข้าถึงลำบากในพื้นที่สูง หรือ ป่าเขา ส่วนที่ราบอาจจะไม่มีปัญหาก็ได้

กำหนดจำนวนจุดที่ใช้ในการตรวจสอบอาจจะคิดเป็น 0.1 ของพื้นที่ทั้งหมดก็ได้ แต่ไม่ควรน้อยกว่า 20 พื้นที่

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

โดยหลักการแล้ววิธีการจะมีอยู่ 4 วิธีการ ใหญ่ๆ คือ

  1. Random sampling
  2. Systematic sampling
  3. Stratified sampling
  4. Cluster sampling

แต่ละวิธีการก็มีข้อดี-ข้อด้อยแตกต่างกัน ลองไปหาอ่านเองดูนะครับ ซึ่งผมเลือกใช้ Stratified random sampling คือ อันดับแรกแบ่งพื้นที่ทั้งอำเภอเป็นส่วนๆ ก่อน เช่น 1. ส่วนพื้นที่ภูเขาป่าไม้  2. พื้นที่เกษตร  3. พื้นที่เมือง จากนั้นจึง สุ่มในการแต่ละประเภท สมมติต้องการพื้นที่่ 20 ตัวอย่าง อาจจะสุ่มเรียกมาจาก พื้นที่ภูเขาและป่าไม้ 5 ตัวอย่าง พื้นที่้เกษตร 10 ตัวอย่าง และพื้นที่เมือง 5 ตัวอย่าง เป็นต้น ซึ่งถ้าหากใช้วิธีการ random sampling พื้นที่ตรวจสอบอาจจะไปตกบริเวณภูเขาและป่าไม้มากก็ได้ ซึ่งจะทำให้ได้ข้อมูลตรวจสอบไม่ครบถ้วน

สมมติว่าได้เตรียม ทั้งขนาดพื้นที่ จำนวนพื้นที่ และตำแหน่งพื้นที่ ที่จะใช้   ทุกอย่าง เรียบร้อยแล้ว

ก็ไปออกสนามกันเลย

เมื่อไปถึงพื้นที่เรียบร้อยแล้ว

ก็ทำการขีดเส้นแบ่งพื้นที่ตามที่เป็นในภาพดาวเทียมและลักษณะพื้นที่จริง

img_2688

รูปนี้เป็นตัวอย่างของผมนะครับ

กรอบสีแดงคือกรอบที่กำหนดขึ้นมาเพื่อใช้สำหรับตรวจสอบพื้นที่เทียบกับข้อมูลที่ได้จาการแปล

กันพื้นที่ตามสภาพที่เห็นจริงในพื้นที่ พร้อมทั้งใส่ลักษณะการใช้ประโยชน์ที่ดิน หรือถ้าใครเอา Notebook ไปด้วยก็จัดการกันพื้นที่และใส่ค่าใน Attribute ไปด้วยเลยก็ได้

เมื่อทำครบทั้ง 20 พื้นที่แล้วเราจะได้ข้อมูลที่ใช้เป็นตัวอ้างอิง

ที่นี้ก็มาเริ่มกระบวนการตรวจสอบกันจริงๆ ละ

ตัวอย่าง shapefile ที่ได้จากภาคสนาม 1 พื้นที่ จัดการ Attibute  ให้เรียบร้อย โดยการสร้าง code ขึ้นมาใช้ในขั้นตอนต่อไป อาจจะตั้งไว้ก่อนก็ได้ ทำให้ครบทั้ง 20 พื้นที่

เช่น 1 = แหล่งน้ำ 2 นาช้าว 3 สัก 4 ยางพารา เป็นต้น

segment

ต่อมาก็นำกรอบพื้นที่นี่ไป Clip กับ ข้อมูลตำแหน่งเดียวกัน ที่ได้จากการแปลมาด้วย

lu

อันนี้ข้อมูลจากการแปล ใส่ code เช่นเดียวกัน

ต่อมาแปลงข้อมูล ทั้งสองเป็น Raster ใน Arcgis จะใช้คำสั่ง Polygon to Raster

2015-08-18_11-00-42

เลือกข้อมูลที่จะสร้างเป็น Raster, Value field คือ Code ที่ใส่ ไว้ ขนาด Cell size ขึ้นอยู่กับขนาดที่เราต้องการให้เหมาะสม ของผมกำหนด 0.5 เนื่องจาก ภาพดาวเทียมรายละเอียดสูงที่ใช้แปลมีขนาด 0.5 เมตร

เมื่อแปลงข้อมูลทั้งสอง ทั้งจากข้อมูลภาคสนามและข้อมูลจากการแปลเรียบร้อยแล้ว

2015-08-18_11-04-48 2015-08-18_11-05-18

ตอนนี้ข้อมูลอยู่ในรูปแบบ rater แล้ว ด้านซ้ายเป็นข้อมูลจากภาคสนาม ด้านขวาป็นข้อมูลที่ได้จากการแปลลองดูคร่าวๆ คิดว่าความถูกต้องดีหรือเปล่าครับ ถ้ายังไม่ทราบเรามาดูวิธีการคำนวณกัน

ต่อมาเราต้องนำข้อมูลทั้งสองชั้นมารวมกันเพื่อนับว่าข้อมูลที่ตรงกันมีเท่าไหร่ข้อมูลที่ไม่ตรงกันมีเท่าไหร่

โดยการใช้คำสั่ง Combine (Spatial analyst)

2015-08-18_11-10-53

Input Raster คือ ข้อมูลจากภาคสนามและข้อมูลจากการแปล

ตั้งชื่อ output

2015-08-18_11-13-02

สร็จแล้ว Export ตารางเป็นfile DBF ไว้

ผลลัพธ์เมื่อดูตาม Attribute จะแปลความได้ว่า ดูบรรทัดแรกก่อน Code 4 จากการสำรวจภาคสนาม และ จากแปลที่ตรงกัน มีจำนวน 80,000 pixel   ต่อมาดูบรรทัดที่ OID=16   คือ จากการสำรวจภาคสนาม code 4 แต่จากการแปลผิดเป็น Code 3 = 3,155 Pixel ซึ่งแบบนี้ดูยาก เราต้องแปลงข้อมูลมาเป็นแบบ Errror Matrix จะได้ดูง่ายๆ

วิธีการคือใช้คำสั่ง   Pivot table (Data management)

2015-08-18_11-27-26

Input Table เลือก Table ที่ export มาจาก file combine

Input Field เลือกข้อมูลจากการแปล

Pivot Field เลือกข้อมูลจากภาคสนาม  (อ้างอิง)

Value Field เลือก Count

เมื่อได้ผลลัพธ์แล้ว ก็ Export ออกไปเป็น DBF แล้วนำไปเปิดกับ MS Excel

2015-08-18_11-32-31

จะได้หน้าตาประมาณนี้ จากนั้นก็จัดการสลับข้อมูล เรียงให้เรียบร้อยตามลำดับค่า field

จะได้ประมาณนี้

2015-08-18_11-35-18

แล้วจึงนำมาคำนวณค่า Accuraccy ของแต่ละชั้นข้อมูล หรือ Overall Accuracy หรือ Kappa Coefficient ตามสูตรตัวอย่างนี้

2015-08-18_11-40-18

2015-08-18_11-41-03

สรุปได้ค่า Accuracy เรียบร้อยแล้ว จะตรวจรับงานหรือไม่รับก็ขึ้นอยู่กับตัวเลขผลลัพธ์ที่ได้กับค่าที่ตั้งไว้ตอนแรกแล้วละ

โพสต์นี้ยาวหน่อย เพราะเกี่ยวกับหลายเรื่องต้องอธิบายบ้าง ไม่งั้นเดี่ยวงงกันใหญ่

ก็นำไปทดลองใช้ดูนะครับ หากไม่เข้าใจติดขัดตรงไหน ถามได้ครับ ยินดีตอบ

 

ที่มา : geo2ass.wordpress.com

Posted in GIS

Leave a Reply

Your email address will not be published. Required fields are marked *