นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน

Our Shangri-La
Ico64
Kittisakdi Choomalee

ภาควิชาเวชศาสตร์ชุมชน คณะแพทยศาสตร์ มหาวิทยาลัยสงขลานครินทร์
เครือข่าย
สมาชิก · ติดตาม: 0 · ผู้ติดตาม: 16

อ่าน: 1496
ความเห็น: 0

ก้าวย่าง ทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป: ออกแล้วจ้า R maptools

ทำอยู่ทำไป

มาต่อกันอีกยกนะครับสำหรับเรื่องราวชวนปวดหัวของ Spatial Data

จากความเดิมในบันทึก "ก้าวย่าง ทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป: เข้าๆ ออกๆ" ที่เขียนถึงการนำเข้าข้อมูลทางสารสนเทศภูมิศาสตร์หรือข้อมูล GIS สู่โปรแกรม R เพื่อบริหารจัดการข้อมูลนั้น

ดังที่กล่าวไปแล้วว่าตัวของโปรแกรม R เองนั้นมีชุดคำสั่งเสริม (Package) ที่เขียนขึ้นสำหรับจัดการข้อมูล GIS นั้นมีหลาย package ด้วยกัน ส่วนหนึ่งขึ้นอยู่กับระดับความยากง่าย ความซับซ้อนของการจัดการข้อมูล GIS

แต่คำถามง่ายๆ จากบันทึกที่แล้วคือ เราจะนำเอาค่าพิกัด X, Y (coordinates) จากข้อมูล GIS ออกมาได้อย่างไร

ข้อมูล GIS ต้นฉบับอยู่ในรูปแบบของ shape file (.shp) หรือแฟ้มข้อมูลของโปรแกรม ArcMap (ArcView)

ผมลองใช้ชุดคำสั่งเสริมของโปรแกรม R ในชุด maptools เป็นชุดคำสั่งในการจัดการนำเข้าข้อมูล .shp สู่โปรแกรม R และพบว่าสามารถนำเข้าข้อมูลได้อย่างไม่มีปัญหา แต่การจะคัดเอาเฉพาะข้อมูลที่เป็นพิกัด X, Y ออกมาข้อมูลเดียวนี่ซิครับ ผมเกิดอาการงง ชง มึน ว่าไม่ได้ ไปไม่เป็นอยู่พักใหญ่ ว่าจะดึงออกมาได้อย่างไร

ท้ายสุดโชคดีของผมตอนนั้นประกอบกับด้วยความกระชั้นของเวลาทำให้ผมต้องแก้ไขปัญหาเฉพาะหน้าด้วยการสั่งดู attributes ของกรอบข้อมูล (Data Frame) (ที่นำเข้ามา) พร้อมทั้งสั่งให้เขียนข้อมูลที่ได้ (จากการดู attributes(x)) เก็บไว้ในแฟ้มข้อมูล จากนั้นนำแฟ้มข้อมูลที่ได้มาตัดหัวตัดหางออก ก็จะได้ข้อมูลพิกัด X, y ตามต้องการ

นับเป็นความโชคดีอีกประการที่ข้อมูลพิกัด X, Y ที่ได้จากคำสั่ง attributes นั้นไม่มากเกินไปนัก เนื่องจากเมื่อผมมาทดลองกับข้อมูลอื่น ที่มีจำนวนระเบียนข้อมูล (records) จำนวนมาก หลังจากใช้คำสั่ง attributes(x) หรือ str(x) เพื่อดูข้อมูลพิกัด X, Y นั้นพบว่า ข้อมูลที่โปรแกรม R list ออกมาให้ดูนั้น (แม้ว่าจะสั่งเขียนเก็บไว้เป็นแฟ้มข้อมูลด้วยก็ตาม) จะถูกจำกัดช่วงการแสดงข้อมูลสูงสุดอยู่

เช่น ผลจากการใช้คำสั่ง str(x) เมื่อถึงช่วงสูงสุดของข้อมูลที่ถูกกำหนดให้แสดงผลไว้ก็จะขึ้นข้อความ

......
[49998,] 102.27960 12.345699
[49999,] 102.27899 12.345491
[ reached getOption("max.print") -- omitted 91868 rows ]]

ในตัวอย่างข้างต้นพบว่าเมื่อโปรแกรม R list ข้อมูลออกมาถึงระเบียนที่ ๔๙,๙๙๙ ก็จะหยุดการ list ข้อมูล พร้อมทั้งแจ้งข้อความว่า มีข้อมูลอีก ๙๑,๘๖๘ ระเบียนที่ไม่ได้แสดงเนื่องจากโปรแกรมได้แสดงข้อมูลถึงจุดสูงสุดที่กำหนดไว้แล้ว (reached getOption("max.print"))

เมื่อผมตามไปตรวจสอบค่า "max.print" ที่กำหนดไว้ในโปรแกรม R พบว่าค่าที่กำหนดไว้เป็น ๙๙๙,๙๙๙ หรือแสดงผลได้สูงสุดถึง ๙๙๙,๙๙๙ ระเบียน

เมื่อพยายามที่จะหาว่าทำไมถึงไม่แสดงผลที่เหลือในเมื่อกำหนดค่าสูงสุดเอาไว้ถึง ๙๙๙,๙๙๙ ระเบียน ผมก็มาเห็นด้วยกับคำกล่าวของท่านผู้หนึ่งว่า

คุณจะดูข้อมูลอะไรทางจอภาพตั้ง ๙๙๙,๙๙๙ ระเบียน

คิดดูเอานะครับว่าถ้าข้อมูลเป็น ๙๙๙,๙๙๙ ระเบียน (บรรทัด) จะต้องใช้สักกี่หน้าของจอภาพในการจะดูข้อมูลทั้งหมด แล้วมีประโยชน์อะไรที่จะไปดูอย่างนั้น

ทำไมไม่ใช้คำสั่ง View(x) ดู แทนการ List(x) ล่ะ

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

นับเป็นความโชคดีของนักศึกษาท่านนั้นจริงๆ

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

หลังจากที่หาข้อมูลในอินเตอร์เน็ต อ่านชุดคำสั่งต่างๆ ใน package เสริมของโปรแกรม R ที่เกี่ยวกับข้อมูล spatial พร้อมทั้งลองทำตามคำสั่ง (ที่ซับซ้อนซ่อนเงื่อน) พบว่า

ทำไม่สำเร็จครับ

ผมไม่สามารถดึงเอาข้อมูลพิกัด X, Y ออกมาได้(อย่างง่าย)

ผมเกือบจะปวดหัว ตัวร้อน นอนไม่หลับ คอพับหงายท้องไปแล้ว

ในที่สุดผมก็พบว่า การเข้าใจข้อมูลของเราที่ดีพอนั้นจะนำไปสู่ความสำเร็จ

ใช่แล้วครับ ผมพบหนทางที่จะดึงเอาข้อมูลพิกัด X,Y ออกมาได้ (อย่าง่ายๆ) แล้ว และไม่ต้องใช้คำสั่งอะไรของชุดคำสั่งพิเศษของ R นอกเหนือจากการใช้คำสั่งในชุดคำสั่ง maptools เพื่อนำเข้าข้อมูลจาก shape file เข้าโปรแกรม R เท่านั้น

ส่วนจะเป็นอย่างไรนั้นคงต้องติดตามกันต่อในบันทึกหน้านะครับ

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

เอาความปวดหัวไว้บันทึกหน้าดีกว่าครับ

เราเอง

หมวดหมู่บันทึก: บริการวิชาการ
สัญญาอนุญาต: ซีซี: แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน Cc-by-nc-sa
สร้าง: 06 มีนาคม 2555 22:04 แก้ไข: 06 มีนาคม 2555 22:06 [ แจ้งไม่เหมาะสม ]
ดอกไม้
สมาชิกที่ให้กำลังใจ: Ico24 ServiceMan, Ico24 คนธรรมดา, และ Ico24 เอสเค.
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

ความเห็น

ไม่มีความเห็น

ร่วมแสดงความเห็นในหน้านี้

ชื่อ:
อีเมล:
IP แอดเดรส: 35.172.233.2
ข้อความ:  
เรียกเครื่องมือจัดการข้อความ
   
ยกเลิก หรือ