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

Our Shangri-La
Ico64
Kittisakdi Choomalee

ภาควิชาเวชศาสตร์ชุมชน คณะแพทยศาสตร์ มหาวิทยาลัยสงขลานครินทร์
Network
Members · Following: 0 · Followed: 16

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

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

อยู่ทำ ไปทำ

ยกที่ ๓ ยกแห่งการปวดหัวกำลังเริ่มต้นขึ้นแล้วครับ

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

ผมเองนั้นไม่มีข้อมูลประเภทที่เป็น spatial data อยู่ในมือนะครับ ข้อมูลของนักศึกษาท่านนั้นผมก็ไม่ได้เก็บไว้ เนื่องจากทดลองทำในเครื่องคอมฯ ของนักศึกษาเอง

ผมก็เลยต้องไปตะเวณหาข้อมูล spatial เผื่อว่าจะมีแขวนๆ อยู่ที่ไหนสักแห่งในอินเตอร์เน็ต สิ่งที่ผมสนใจอย่างแรกเลยก็คือข้อมูล spatial ของจังหวัดสงขลา

หลังจากที่ค้นหาอยู่พักใหญ่ ผมพบว่าข้อมูล spatial หรือ GIS นั้นหายากมากครับ

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

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

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

เมื่อหลายปีก่อนผมจำได้ว่าตอนที่โปรแกรม EpiMap เวอร์ชันวินโดว์เพิ่งออกตัวมาใหม่ๆ นั้น ทางเวป CDC ของอเมริกามี shape file ให้ download มาใช้งานด้วย

ผมลองเข้าไปค้นหาดูอีกรอบผลปรากฏว่า ข้อมูลเหล่านี้หายไปหมดแล้ว มีแต่ลิงค์ข้อมูลแต่ไม่มีตัวข้อมูลอยู่แล้ว

หลังจากที่ค้นหาอยู่พักใหญ่ ข้อมูลที่ผมได้เป็นข้อมูลที่ได้จากเวปไซต์ต่างประเทศ ที่มีให้บริการ download

ผมเลือกข้อมูลประเทศไทยที่เป็นข้อมูลขอบเขต (Boundary) ของประเทศไทย

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

ผมได้ข้อมูลมาจากที่นี่ครับ

หลังจากที่ได้ข้อมูลมาผมนำเข้าข้อมูลในรูปแบบ shape file เข้าสู่โปรแกรม R โดยใช้คำสั่งเสริมในชุดของ maptools

ผมเก็บ shape file เอาไว้ที่โฟลเดอร์ c:\Rworkplace\THA_adm

shape file มีชื่อว่า THA_adm0.shp

หลังจากเปิดโปรแกรม R ที่ติดตั้ง package maptools ขึ้นมาแล้ว ให้โหลด package maptools ขึ้นมาเพื่อเรียกใช้คำสั่งใน package maptools ด้วยคำสั่ง library(maptools)

นำเข้าข้อมูลจาก shape file ชื่อ THA_adm0.shp เข้าโปรแกรม R โดยเก็บไว้ในวัตถุ (Object) ที่ชื่อ TH.map ใน workspace ของ R โดยใช้คำสั่ง readShapeSpatial(x) ของ package maptools

TH.map <- readShapeSpatial("c:/Rworkplace/THA_adm/THA_adm0.shp"))

เมื่อนำเข้าข้อมูลจาก shape file มาเก็บไว้ในวัตถุ (Object) ที่ชื่อ TH.map ในชั้น (Class) SpatialPolygonsDataFrame ใน work space ของโปรแกรม R เรียบร้อยแล้ว สั่งวาดแผนที่จากข้อมูลในวัตถุ (หรือ DataFrame) ที่ชื่อ TH.map ด้วยคำสั่ง plot(x)

ก็จะได้เป็นแผนที่(ขอบเขต)ประเทศไทย

ผมใช้คำสั่ง ๒ คำสั่ง (ที่กล่าวถึงในบันทึกนี้) ให้ท่านผู้อ่านที่รักเปรียบเทียบผลที่ได้จาก ๒ คำสั่งดังกล่าว โดยที่ผลจากคำสั่งทั้ง ๒ มีข้อมูลจำนวนมาก (หลายบรรทัด) ผมจึงทำการส่งผลที่ได้จากคำสั่งทั้ง ๒ เขียนเก็บไว้ในแฟ้มข้อมูลที่ชื่อ Thaimap00.txt และ Thaimap01.txt โดยคำสั่ง sink(x)

คำสั่ง ๒ คำสั่งที่ว่าคือคำสั่ง attributes(x)

และคำสั่ง str(x)

คำสั่ง sink(x) เป็นคำสั่งให้เขียนข้อมูลเก็บไว้ในแฟ้มข้อมูลที่ระบุ (x)
คำสั่ง sink() เป็นคำสั่งยุติการเขียนข้อมูลเก็บไว้ในแฟ้มข้อมูลที่ระบุ ให้ส่งผลลัพธ์จากคำสั่งแสดงที่จอภาพ

ตัวอย่างผลเปรียบเทียบผลลัพธ์ที่ได้จากคำสั่งทั้งสอง ด้านซ้ายมือจะเป็นผลลัพธ์จากคำสั่ง attributes(x) ด้านขวามือจะเป็นผลลัพธ์จากคำสั่ง str(x)

จะเห็นว่าผลจากคำสั่ง str(x) จะให้รายละเอียดที่ดีกว่าคำสั่ง attributes(x)

ผลลัพธ์จากคำสั่ง attributes(x) นั้นจะเริ่มต้นด้วย $bbox บอกข้อมูลสูงสุด และตำสุดของ x และ y ต่อด้วย $proj4string, $polygons และ $Polygons (โปรดสังเกต polygons และ Polygons) มี slot Polygons (class) เป็น slot ภายใต้ slot polygons (class) และมี slot Polygon (class) อยู่ภายใต้ slot Polygons อีกชั้นหนึ่ง

ภายใต้ slot Polygon ประกอบด้วย slot labpt, area, hole, ringDir, coords จากนั้นจะเป็นการวน slot ต่างๆ จนครบทุก slot ทุก class

ส่วนผลจากคำสั่ง str(x) นั้นจะเริ่มจากแจ้งให้ทราบว่าวัตถุที่ชื่อ TH.map นั้นเป็นชั้น (Class) SpatialPolygonsDataFrame ประกอบด้วย slot จำนวน ๕ slots

slot แรกคือ @data ซึ่งเป็นกรอบข้อมูล (data.frame) ประกอบไปด้วยตัวแปร (variables) จำนวน ๒๔ ตัวแปร มี ๑ ชุดข้อมูล (1 obs.)

ตัวแปรหรือข้อมูลใน slot data (@data) เริ่มต้นด้วย ID_0 ($ID_0) จนถึงตัวแปร EUmember ($EUmember)

เริ่มปวดหัวกันแล้วใช่ไหมครับผู้อ่านที่รัก

ผมเองก็เริ่มปวดหัวตะหงิดๆ เหมือนกัน

ต่อด้วย class polygons ซึ่งในระดับ class เดียวกันนี้มีแค่ ๑ slot

มี class Polygons อยู่ภายใต้ class polygons ซึ่ง Polygons ประกอบไปด้วย slot ๕ slots มีจำนวนข้อมูลที่อยู่ภายใต้ class Polygons ทั้งหมด ๕๙๕ ชุดข้อมูล slot ๕ slots ภายใต้ class Polygons คือ class Polygon ซึ่งมี slot ภายใต้ class Polygon ๕ slots คือ @labpt, @area, @hole, @ringDir และ @coords

จากนั้นก็วนรอบข้อมูลจนครบ ๕๙๕ ชุดข้อมูล

อีก ๓ slots ที่อยู่ใน class ระดับเดียวกับ @data และ @polygons คือ @plotOrder, @bbox และ @proj4string

ส่วนผลลัพธ์จากคำสั่ง attributes(x) นั้น slot ท้ายสุดที่แสดงคือ slot data ($data)

เจ้า slot coords นี่แหละครับที่ผมสนใจจะดึงข้อมูลออกมา

ผมใช้วิธีการไล่ลำดับชั้น (class) และ slot เข้าไปจนถึง slot coords โดยสั่งให้เลือกข้อมูลมาแสดงเฉพาะข้อมูลชุดที่ ๑ เท่านั้น ([[1]]) เพื่อเป็นข้อมูลตัวอย่างการดึงค่าที่เก็บไว้ใน slot coords ออกมา

ข้อมูลที่ได้ผมเก็บไว้ในวัตถุที่ชื่อ TH.map.coords001 ใน work space ของ R (เป็นวัตถุแยกต่างหากจาก TH.map)

จากนั้นสั่งให้แสดงค่าที่เก็บไว้ในวัตถุ TH.map.coords001 โดยการพิมพ์ชื่อวัตถุ TH.map.coords001 ที่ R console

ผลที่ได้เป็นข้อมูลพิกัด X, Y ของข้อมูลชุดที่ ๑ ตามที่ต้องการจริงๆ

จากนั้นสั่งเขียนข้อมูลที่เก็บไว้ในวัตถุ TH.map.coords001 เก็บไว้ในแฟ้มข้อมูลที่ชื่อ Thcoords01.csv วึ่งเป็นแฟ้มข้อมูลที่เป็น text file (Comma-separated values)ด้วยคำสั่ง write.csv(x, file_name) ซึ่งเป็นคำสั่งในชุดคำสั่ง(เสริม)ของ package foreign ของโปรแกรม R

จากนั้นทดลองเปิดแฟ้มข้อมูล Th.map.coords001.csv ด้วยโปรแกรม excel

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

มันเป็นเรื่องความซับซ้อนที่เราต้องเข้าใจถึงโครงสร้างของข้อมูล และระบบของข้อมูลในรูปแบบ spatial data ผมเองก็มั่วๆ ไปเหมือนกันครับกว่าจะดึงข้อมูลออกมาได้

อันที่จริงผมมีตัวอย่างของการดึงข้อมูลจาก slot ของแต่ละ class ให้ดูด้วยแต่ข้อมูลที่ได้จะมีจำนวนมาก การดูข้อมูลเพียงไม่กี่บรรทัดไม่สามารถแยกความแตกต่างระหว่างข้อมูลของแต่ละชั้นได้ จึงไม่เหมาะที่จะทำให้เห็นในบันทึกทั้งหมด ผมจึงไม่นำเสนอในบันทึกนี้ครับ

หากมีโอกาสผมอาจจะนำมาแสดงให้ชมกันครับ

เราเอง

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

บันทึกอื่นๆ

ความเห็น

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

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

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