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

Our Shangri-La
Ico64
Kittisakdi Choomalee

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

อ่าน: 1986
ความเห็น: 1

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

ทบทวนกันดูสักทีดีไหม

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

จะนำเสนอรูปแบบไหนดีถึงจะเข้าใจได้ง่ายถึงโครงสร้างของข้อมูลที่เป็น spatial data

อย่างที่บอกตั้งแต่บันทึกก่อนๆ นะครับว่าผมเองก็ไม่ได้เป็นผู้เชี่ยวชาญ ชำนาญการในเรื่อง spatial data เพียงแต่อาศัยลูกคลำ ลูกงม ลูกดม ลูกเดาไปเรื่อยเท่านั้นเองครับ ดังนั้นจะให้อธิบายได้เป็นฉากๆ เหมือนฉากละครก็คงจะทำไม่ได้

ท้ายสุดผมก็มาคิดปิ๊งๆ ว่า อย่ากระนั้นเลยก็วาดออกมาเป็นแผนภาพให้ดูก็แล้วกัน เรียกว่าดูแผนภาพแล้วก็เข้าใจได้ทันทีถึงโครงสร้างข้อมูล spatial data

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

โปรแกรมที่ใช้สร้างแผนภาพมีอยู่ด้วยกันหลากหลายโปรแกรมผมคงไม่ต้องจาระไนนะครับว่ามีอะไรบ้าง

เรียกวได้ว่ามีให้เลือกหลายโปรแกรมจนเลือกไม่ถูกว่าจะใช้อะไรดีที่เหมาะสมที่สุด ง่ายที่สุด

ผมนึกไปถึงโปรแกรม mind map ครับ

ด้วยความคิดที่ว่าน่าจะง่ายสำหรับการวาดแผนภาพที่เป็นลำดับชั้นเช่นนี้

ผมลองวาดๆ ดูพบว่า ง่ายจริงๆ ด้วยครับ

ผมจัดมาให้ข้อมูลอยู่ด้านเดียวกันเพื่อที่จะไม่ดูยุ่บยั่บแบบหนวดหมึกมากนัก

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

วันนี้ผมเจอกับนักศึกษาคนนั้นอีกครั้ง

นักศึกษาเล่าให้ฟังว่าทางหน่วยงานที่เคยไปถามวิธีการดึงข้อมูลออกมา ตอบกลับมาแล้วว่าทำได้ (และง่ายด้วย) ด้วยโปรแกรม ArcMap

ที่ยากหรือทำไม่ได้เป็นเพราะเราไม่ได้ใช้ฟังก์ชันทั้งหมดที่มีของโปรแรมต่างๆ เรามักจะใช้เฉพาะที่เราใช้อยู่ประจำเท่านั้น แต่ถ้านอกเหนือจากที่ใช้งานเป็นประจำเราก็เอ๋อๆ ไปบ้างเหมือนกัน ทั้งๆ ที่โปรแกรมบางโรแกรมเป็นโปแกรมที่เราใช้งานอยู่ทุกเมื่อเชื่อวัน

ผมได้แจ้งให้นักศึกษาท่านนั้นทราบอีกว่า ผมเองก็หาทางดึงเอาข้อมูลออกมาได้จากโปรแกรม R โดยวิธีที่ไม่ซับซ้อนซ่อนเงื่อนเช่นกัน

ถ้าว่างก็มาลองทำดูก็ได้

ลองดูโครงสร้างของข้อมูลตามแผนภาพนะครับ

จากข้อมูลในบันทึกที่แล้วนะครับ

ในชั้นของ Polygon ที่มีอยู่ด้วยกัน ๕ slots นั้น จะมีชุดของข้อมูลแบบเดียวกันอยู่ ๕๙๕ ชุด หรือเอาให้ง่ายเข้าก็คือมีรูปหลายเหลี่ยม (polygon) จำนวน ๕๙๕ รูปมาประกอบกันเป็นรูปแผนที่ประเทศไทยดังที่เราเห็น รูปหลายเหลี่ยมแต่ละรูปจะมีขนาดและพื้นที่ต่างกัน

ในชั้น (class) ของรูปหลายเหลี่ยมนี้ (Polygon) นี้แต่ละรูปจะประกอบไปด้วย slot ๕ slots นั่นคือ labpt, area, hole, ringDir และ coords

การวาดแผนที่ก็จะนำเอารูปหลายเหลี่ยมเหล่านี้ (๕๙๕ รูป) มาวาดเรียงกันจนได้เป็นแผนที่ประเทศไทย

จากข้อมูลในบันทึกที่แล้ว ข้อมูลที่ได้จากคำสั่ง attribute(TH.map) นั้น ข้อมูลแรกที่แสดงคือ

$bbox
        min       max
x 97.345192 105.63913
y  5.616042  20.46321

ถ้าให้ผมเดาเอา $bbox น่าจะเป็น boundary box หรือขอบเขต/ ของแผนที่ เมื่อดูค่า x และ y ที่ให้มาคือ max และ min พอจะบอกได้ว่าขอบเขตแผนที่ประเทศไทยถ้าวาดเป็นกรอบสี่เหลี่ยมแผนที่ประเทศไทยจะอยู่ในกรอบระหว่างลองจิจูดที่ ๙๗.๓๔๕๑๙๒ - ๑๐๕.๖๓๙๑๓ องศาตะวันออกและละติจูดที่ ๕.๖๑๖๐๔๒ - ๒๐.๔๖๓๒๑ องศาเหนือ

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

 

เมื่อดูตามแผนภาพโครงสร้างของข้อมูลแล้วเราจะพบว่าค่า coordinate (coords) นั้นมีทั้งหมด ๕๙๕ ชุดข้อมูลแต่ละชุดก็จะมี(ชุด)ข้อมูลพิกัดของแต่ละชุด

ดังนั้นหากเราต้องการดู/ ดึงข้อมูลพิกัดของรูปหลายเหลี่ยมรูปที่ ๑ (จากทั้งหมด ๕๙๕ รูป) เราก็จะใช้คำสั่งใน R ดังนี้

TH.map@polygons[[1 ]]@Polygons[[1]]@coords

ผลลัพธ์ที่ได้ก็จะเป็พิกัด x, y ของรูปหลายเหลี่ยมรูปที่ ๑ ซึ่งมีทั้งหมด ๕๗ พิกัด คือ

          [,1]     [,2]
 [1,] 100.0897 6.425714
 [2,] 100.0894 6.425607
 [3,] 100.0890 6.425696
 [4,] 100.0886 6.425796
  ...
[56,] 100.0898 6.425751
[57,] 100.0897 6.425714

แต่ถ้าเราใช้คำสั่ง

TH.map@polygons[[1 ]]@Polygons[[1]]@Polygon

ก็จะได้ผลลัพธ์เป็น

Error: no slot of name "Polygon" for this object of class "Polygon"

หรือคำสั่ง

TH.map@polygons[[1 ]]@Polygons[[1]]@Polygon[[1]]@coords

ก็จะได้ผลลัพธ์เป็น

Error: no slot of name "Polygon" for this object of class "Polygon"

แต่หากเราใช้คำสั่ง

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[[1]]

ผลลัพธ์ที่ได้คือ

[1] 100.0897

หรือค่าพิกัด x พิกัดแรก

หรือถ้าใช้คำสั่ง

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[[1,1]]

ผลลัพธ์ที่ได้คือ

[1] 100.0897

หรือลองสังเกตผลลัพธ์จากคำสั่งข้างล่างดูนะครับ

ผลลัพธ์ที่ได้อาจจะดูแล้วปวดหัวนิดนึงนะครับเพราะเป็นเรื่องของข้อมูลที่อยู่ในรูปของมิติ (dimension) ครับ

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[1,2]
[1] 6.425714

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[[1,2]]
[1] 6.425714

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[1,]
[1] 100.089722   6.425714

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[1,2]
[1] 6.425714

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[2,2]
[1] 6.425607

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[1,1]
[1] 100.0897

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[2,1]
[1] 100.0894

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[1,]
[1] 100.089722   6.425714

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[2,]
[1] 100.089417   6.425607

คำสั่งด้านล่างจะเป็นการแสดงค่าพิกัด x ทั้งหมดในรูปหลายเหลี่ยมรูปที่ ๑

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[,1]
 [1] 100.0897 100.0894 100.0890 100.0886 100.0883 100.0883 100.0883 100.0883 100.0883 100.0883 100.0882 100.0881 100.0881 100.0881 100.0882 100.0881 100.0881
[18] 100.0881 100.0881 100.0881 100.0879 100.0879 100.0880 100.0880 100.0881 100.0881 100.0881 100.0881 100.0881 100.0881 100.0883 100.0882 100.0881 100.0881
[35] 100.0883 100.0883 100.0885 100.0886 100.0892 100.0896 100.0898 100.0899 100.0901 100.0902 100.0905 100.0905 100.0906 100.0908 100.0908 100.0910 100.0912
[52] 100.0912 100.0910 100.0905 100.0904 100.0898 100.0897

คำสั่งด้านล่างจะเป็นการแสดงค่าพิกัด y ทั้งหมดในรูปหลายเหลี่ยมรูปที่ ๑

TH.map@polygons[[1 ]]@Polygons[[1]]@coords[,2]
 [1] 6.425714 6.425607 6.425696 6.425796 6.426209 6.426517 6.426717 6.427152 6.427307 6.427513 6.427802 6.428034 6.428274 6.428550 6.428871 6.429081 6.429190
[18] 6.429557 6.429871 6.430017 6.430389 6.430904 6.431417 6.431522 6.432018 6.432130 6.432741 6.433055 6.433288 6.433390 6.433612 6.433705 6.433890 6.434443
[35] 6.434744 6.435278 6.435303 6.435241 6.434443 6.434298 6.433689 6.433593 6.432677 6.432137 6.431490 6.431367 6.430330 6.429427 6.428661 6.427759 6.427478
[52] 6.426852 6.426177 6.425938 6.425915 6.425751 6.425714

หากต้องการดูค่าพิกัด x, y ในรูปหลายเหลี่ยมรูปที่ ๒ ก็เปลี่ยนคำสั่งเป็น @Polygons[[2]] แทนหรือคือ

TH.map@polygons[[1 ]]@Polygons[[2]]@coords

          [,1]     [,2]
 [1,] 100.0643 6.453319
 [2,] 100.0644 6.453308
 [3,] 100.0648 6.453308
 [4,] 100.0652 6.453000
 ...
[64,] 100.0638 6.453201
[65,] 100.0641 6.453269
[66,] 100.0643 6.453319

รูปหลายเหลี่ยม (Polygon) รูปที่ ๒ จะมีพิกัด x, y ทั้งหมด ๖๖ พิกัด

งงเพิ่มขึ้นไหมครับท่านผู้อ่าน ถ้างงเพิ่มขึ้นก็อ่านเฉพาะที่ไม่งงนะครับ เขียนไปเขียนมาพาไปออกทะเล(เลือด)ได้ไงนี่

เราเอง

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

บันทึกอื่นๆ

ความเห็น

เพลงอดีตที่ไม่ได้ฟังมานาน โอเคเลยครับ

 

เอิ้ก เอิ้ก

 

"ใจสั่งมา"

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

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