More Related Content
PDF
PDF
เกมส์รถถังออนไลน์ ผลงานนักศึกษามหาวิทยาลัยศรีปทุม บางเขน PDF
PDF
รายงานการปฏิบัติงานสหกิจศึกษา PDF
PDF
DOC
PDF
Knowledge Sharing for Travelling in Thailand, ICT, Sripatum University What's hot
PDF
PDF
PDF
PDF
PDF
PDF
PDF
เอกสารประกอบการเรียน ภาษา HTML เบื้องต้น DOCX
DOC
DOC
แผนการสอน ระบบเครือข่าย ม.3 PDF
Similar to บทคัดย่อ
PDF
PDF
PDF
PDF
PDF
Developing Web-Enabled Considering Decision Support System for Staff Dormitor... PDF
PDF
PDF
ระบบฐานข้อมูลสำหรับร้านค้าปลีก โดย สันติ พันไธสง PDF
ใบความรู้ 3.2ตัวอย่างเค้าโครงข้อเสนอโครงงานคอมพิวเตอร์ DOC
DOCX
PDF
Budget estimation for commuting by bts and mrt, information technology, sripa... PPT
Spat Db 1 Intro Spat Rdbms PPT
PDF
PDF
PPT
จุลนิพนธ์ Power Pointครั้งที่ 2 PDF
PDF
PDF
More from butest
PDF
EL MODELO DE NEGOCIO DE YOUTUBE PPT
DOC
MAC Printing on ITS Printers.doc.doc DOC
DOC
DOC
DOC
DOC
DOC
PPTX
Social Networks: Twitter Facebook SL - Slide 1 PPTX
PPT
DOC
Welcome to the Dougherty County Public Library's Facebook and ... DOCX
Executive Summary Hare Chevrolet is a General Motors dealership ... DOCX
The MYnstrel Free Press Volume 2: Economic Struggles, Meet Jazz PDF
LESSONS FROM THE MICHAEL JACKSON TRIAL DOCX
Popular Reading Last Updated April 1, 2010 Adams, Lorraine The ... PDF
LESSONS FROM THE MICHAEL JACKSON TRIAL PPT
Timeline: The Life of Michael Jackson DOC
บทคัดย่อ
- 1.
โครงงานวิศวกรรมคอมพิวเตอร์<br />เรื่องระบบช่วยในการตัดสินใจเพื่อหาพื้นที่สร้างที่พักโดยอ้างอิงจากสถานที่ที่เหมาะสมDecision-support systemfor suggesting locations for building construction<br />โดยนายณัฐกรณ์ ตั้งพูนทรัพย์<br />เสนอ<br />ภาควิชาวิศวกรรมคอมพิวเตอร์คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์<br />เพื่อความสมบูรณ์แห่งปริญญาวิศวกรรมศาสตร์บัณฑิตพ.ศ. 2551<br />ใบรับรองโครงงานวิศวกรรมภาควิชาวิศวกรรมคอมพิวเตอร์<br />เรื่อง<br />ระบบช่วยในการตัดสินใจเพื่อหาพื้นที่สร้างที่พักโดยอ้างอิงจากสถานที่ที่เหมาะสมDecision-support system for suggesting locations for building constructionโดยนายณัฐกรณ์ ตั้งพูนทรัพย์ เลขประจำตัว 48051858พิจารณาเห็นชอบโดย<br />อาจารย์ที่ปรึกษาโครงงาน……………………………………..<br /> (รศ.ดร.กฤษณะ ไวยมัย)<br />หัวหน้าภาควิชาวิศวกรรมคอมพิวเตอร์……………………………………..<br />(ผศ.ดร. เขมะฑัต วิภาตะวนิช)<br />วันที่…...เดือน…………..พ.ศ….…<br />ณัฐกรณ์ ตั้งพูนทรัพย์ 2551: ระบบช่วยในการตัดสินใจเพื่อหาพื้นที่สร้างที่พักโดยอ้างอิงจากสถานที่ที่เหมาะสม, โครงงานวิศวกรรมคอมพิวเตอร์ ปริญญาวิศวกรรมศาสตร์บัณฑิต (วิศวกรรมคอมพิวเตอร์) ที่ปรึกษาโครงงาน: รศ.ดร.กฤษณะ ไวยมัย<br />บทคัดย่อ<br />ในชีวิตของคนในปัจจุบัน จำเป็นที่จะต้องมีที่อยู่อาศัย ทำให้คนเราต้องหาทำเลที่เหมาะสมสำหรับใช้เป็นที่พัก จึงกลายมาเป็นปัญหาที่ว่า เราควรจะสร้างที่พักบริเวณใดจึงจะดึงดูดความสนใจให้คนมาพักได้มากที่สุด สำหรับผู้ประกอบการบางส่วนที่ต้องการสร้างที่พัก อาทิเช่น หอพัก อพาร์ตเมนท์ เป็นต้น อาจจะเคยมีความคิดประการหนึ่งว่า หากสามารถหาพื้นที่ที่มีความสมบูรณ์พร้อมในด้านต่างๆ อาทิเช่น ความปลอดภัย การศึกษา เป็นต้น ก็น่าจะสามารถดึงดูดให้ผู้คนมาเช่าหรือมาพักได้มาก จึงน่าจะมีบางสิ่งบางอย่างที่นำมาช่วยวิเคราะห์ได้ว่าพื้นที่บริเวณใดถ้านำไปสร้างที่พักแล้วจะมีโอกาสประสบความสำเร็จสูง จึงนำปัญหามาวิเคราะห์โดยอาศัยเทคนิคของการทำเหมืองข้อมูล (Data Mining) โดยการนำข้อมูลเชิงแผนที่และเชิงจำนวนที่เป็นข้อมูลคุณภาพชีวิต มาทำการวิเคราะห์โดยแบ่งกลุ่มข้อมูลออกเป็นหลายๆกลุ่ม โดยจะอนุมานว่าพื้นที่รอบๆกลุ่มสถานที่ที่ดีที่สุดจะถือว่าเป็นพื้นที่ที่มีอัตราประสบความสำเร็จในการสร้างที่พักสูงที่สุด และใช้กูเกิลแม็พเพื่อแสดงพื้นที่ที่เหมาะสมสำหรับสร้างที่พักระบบช่วยในการตัดสินใจเพื่อหาพื้นที่สร้างที่พักโดยอ้างอิงจากสถานที่ที่เหมาะสมจะช่วยเป็นเครื่องมือช่วยในการตัดสินใจได้ในระดับหนึ่งว่า หากต้องการสร้างที่พักในลักษณะที่ผู้ใช้ต้องการแล้ว ควรจะเลือกสร้างที่พักบนพื้นที่บริเวณใดจึงจะเหมาะสมและมีโอกาสประสบความสำเร็จสูงสุด <br />Nuttakorn Tungpoonsup 2008: Decision-support system for suggesting locations for building construction, Bachelor of Engineering (Computer Engineering) , Project Advisors: Assoc. Prof. Kitsana Waiyamai, Ph.D. <br />Abstract<br />Nowadays, determine whether a building construction is possible or not for a given location is quite a challenging problem. Finding appropriate location for constructing a new building depends on many factors such as life quality, how far from the living area, number of nearby school, hospitals etc. Part of the possible solution is to develop a decision support system for suggesting the best location to construct a building.In this project, geographical data about health and education such as hospital sites and academic sites are collected from Google Map. Then, descriptive data from these geographical data are extracted.Both spatial data and descriptive data are used as input of K-mean algorithm to find clusters of locations that are close to the user-specified area. The developped system assist users for making their decision in suggesting appropriate and most successful location to construct a building.<br />กิตติกรรมประกาศ<br />โครงงานระบบช่วยในการตัดสินใจเพื่อหาพื้นที่สร้างที่พักโดยอ้างอิงจากสถานที่ที่เหมาะสมที่จัดทำขึ้นนี้ ไม่อาจสำเร็จได้ หากขาดการสนับสนุน ให้ความช่วยเหลือ แนะนำ และดูแลเอาใจใส่จากหลายๆท่าน ผู้พัฒนาจึงขอขอบคุณทุกท่านไว้ ณ ที่นี้ขอขอบคุณ รศ.ดร.กฤษณะ ไวยมัย และอาจารย์ธนาวิน รักธรรมานนท์ ที่คอยให้คำปรึกษาเกี่ยวกับโครงงาน รวมถึงคอยเอาใจใส่ให้คำแนะนำ และดูแลความก้าวหน้าอย่างสม่ำเสมอตลอดมาขอขอบคุณ พี่ชาย และ พี่ป๋อม ที่ให้ความรู้และแนวความคิดที่แปลกใหม่ รวมทั้งเป็นที่ปรึกษาในการทำโครงงานด้วยขอขอบคุณพี่ๆปริญญาโทและปริญญาเอกทุกท่านจากห้องปฏิบัติการ DAKDL ที่ให้คำแนะนำและคอยดูแลช่วยเหลือขอขอบคุณครอบครัว ที่คอยเป็นกำลังใจให้ในการทำโครงงานนี้ ทั้งนี้หากมีข้อผิดพลาดประการใด ทางผู้พัฒนาก็ขออภัยมา ณ ที่นี้ด้วย<br />ณัฐกรณ์ ตั้งพูนทรัพย์<br />สารบัญ<br /> หน้า<br /> TOC \o \"
2-3\"
\h \z \t \"
หัวเรื่อง 1,1,หัวเรื่อง 4,4,หัวเรื่อง 5,4\"
บทคัดย่อ(1)<br />Abstract(2)<br />กิตติกรรมประกาศ(3)<br />บทที่ 1<br />บทนำ PAGEREF _Toc191827198 \h 1<br />1.1 ที่มาของโครงงาน PAGEREF _Toc191827199 \h 1<br />1.2 วัตถุประสงค์ของโครงงาน21.3 ขอบเขตของโครงงาน21.4 ประโยชน์ที่คาดว่าจะได้รับ3<br />บทที่ 2<br />ทฤษฎีที่เกี่ยวข้องและระบบใกล้เคียง42.1 ทฤษฎีที่เกี่ยวข้อง4 2.1.1 การทำเหมืองข้อมูล (Data Mining)4 2.1.1.1 กระบวนการค้นพบความรู้จากฐานข้อมูล4 2.1.1.2 การเตรียมข้อมูล (Data preparation)5 2.1.1.3 การทำเดต้าไมน์นิ่ง (Data mining)6 2.1.1.4 การประเมินรูปแบบ/กฎเกณฑ์ที่ได้ (Pattern evaluation)6 2.1.1.5 การนำเสนอความรู้ (Knowledge presentation)6 2.1.1.6 เทคนิคต่างๆ ของการทำดาต้าไมน์นิ่ง6 2.1.1.7 การแบ่งกลุ่มข้อมูล7 2.1.1.8 Weka14 2.1.2 ระบบข้อมูลเชิงภูมิศาสตร์ (Geographic Information System)15 2.1.2.1 Google Maps API16 2.1.3 การแสดงผลและการพัฒนาระบบ16 2.1.3.1 Adobe Flex16 2.1.3.2 เอแจ็กซ์ (AJAX)19 2.1.3.3 จาวาสคริปต์ (Javascript)212.2 ระบบใกล้เคียง23 2.2.1 Google Maps23 2.2.2 Google Earth24 2.2.3 ตารางเปรียบเทียบความสามารถของระบบที่ใช้ดูสภาพภูมิศาสตร์26<br />บทที่ 3<br />การออกแบบระบบโดยรวม273.1 ระบบโดยรวม273.2 ขั้นตอนการทำงาน28 3.2.1 ขั้นตอนการค้นหาข้อมูล28 3.2.2. ขั้นตอนการออกแบบและเก็บข้อมูลลงในฐานข้อมูล29 3.2.2.1 ข้อมูลที่ได้จากการใช้ Google Maps และการสืบค้นจาก searach engine29 3.2.2.2 ข้อมูลเชิงจำนวนและที่อยู่จากกระทรวงมหาดไทย33 3.2.2.3 ข้อมูลที่ได้จากการแบ่งกลุ่มข้อมูลโดยใช้วิธีการแบ่งกลุ่มข้อมูล353.3 อุปกรณ์และซอฟต์แวร์ที่ใช้ในระบบ39บทที่ 4การพัฒนาระบบ414.1 การพัฒนาระบบการแบ่งกลุ่มข้อมูล41 4.1.1 การแบ่งกลุ่มข้อมูลตามประเภทของสถานที่สำคัญ41 4.1.2 การแบ่งกลุ่มข้อมูลขั้นที่สองโดยแบ่งกลุ่มข้อมูลจากสถานที่ทั้งหมด434.2 การนำข้อมูลที่ได้จากการวิเคราะห์มาใช้434.3 การพัฒนาแอพพลิเคชันบนหน้าเว็บ45 4.3.1 การสร้างแผนที่กูเกิลแม็พ45 4.3.2 การพัฒนาระบบการค้นหาสถานที่48 4.3.2.1 การค้นหาสถานที่โดยใช้ชื่อสถานที่ในการค้นหา48 4.3.2.2 การค้นหาสถานที่โดยผู้ใช้กำหนดจุดบนแผนที่เอง49 4.3.3 การพัฒนาระบบการค้นหาสถานที่สำคัญที่อยู่ภายในขอบเขตที่ผู้ใช้กำหนด50 4.3.3.1 ส่วนของการกำหนดขอบเขตระยะทางบนแผนที่ตามที่ผู้ใช้กำหนด50 4.3.3.2 ส่วนของการแสดงสถานที่สำคัญที่อยู่ภายในขอบเขตที่ผู้ใช้กำหนด53 4.3.4 การพัฒนาระบบสำหรับเปรียบเทียบเพื่อหาความคล้ายคลึงของกลุ่มข้อมูลที่มีอยู่จากข้อมูล55 นำเข้าของผู้ใช้4.4 ตารางเปรียบเทียบความสามารถของระบบที่มีอยู่เดิมและระบบช่วยตัดสินใจ57บทที่ 5การวิเคราะห์ผล58บทที่ 6สรุปผล ปัญหาและแนวทางการพัฒนา596.1 สรุปผลการทำงานของระบบ596.2 ปัญหาและอุปสรรค596.3 แนวทางการพัฒนาต่อ60 <br />เอกสารอ้างอิง61<br />ภาคผนวก<br />ก.คู่มือการติดตั้ง62<br />คู่มือการติดตั้งสำหรับผู้พัฒนาต่อ62 1. การติดตั้ง AppServ62 2. การติดตั้ง Weka69<br />ข. คู่มือการใช้งาน72<br />1. การค้นหาสถานที่โดยการกรอกชื่อสถานที่722. การค้นหาสถานที่โดยผู้ใช้กำหนดจุดเอง733. การตรวจสอบสถานที่ที่อยู่ภายในขอบเขตระยะที่ผู้ใช้กำหนด744. การเปรียบเทียบเพื่อหากลุ่มข้อมูลที่คล้ายคลึงกับตำแหน่งที่ผู้ใช้เลือกมากที่สุด77<br />สารบัญรูป<br />หน้า<br /> TOC \h \z \t \"
Pic00,1\"
รูปที่ 2.1 แสดงถึงกระบวนการไหลของข้อมูลมาสู่การตัดสินใจ4รูปที่ 2.2 กระบวนการค้นพบความรู้จากฐานข้อมูล5รูปที่ 2.3 แปลงข้อมูลที่เป็นมิติเชิงกลุ่มให้อยู่ในรูปมิติไบนารี8รูปที่ 2.4 ตัวอย่างการวัดค่าความแตกต่างด้วยวิธีของมาฮาลาโนบิส9รูปที่ 2.5 ขั้นตอนการใช้ Explorer ใน Weka14รูปที่ 2.6 ตัวอย่าง data grid component17รูปที่ 2.9 ตัวอย่างแผนภูมิแบบต่างๆจาก Chart component18รูปที่ 2.10 ภาพแสดงการทำงานของ Adobe Flex ร่วมกับภาษา PHP19รูปที่ 2.11 แบบจำลองการทำงานบนเว็บแบบดั้งเดิมและแบบที่ใช้เอแจ็กซ์20รูปที่ 2.12 การสืบค้นสถานที่ที่ต้องการด้วยการใช้กูเกิลแม็พ23รูปที่ 2.13 รูปและข้อมูลบางส่วนจากการสืบค้นด้วยกูเกิลแม็พ24รูปที่ 2.14 ภาพถ่ายจากโปรแกรมกูเกิลเอิร์ธที่เป็นภาพสามมิติ25รูปที่ 3.1 ภาพรวมและการทำงานคร่าวๆของระบบ27รูปที่ 3.2 ตัวอย่างการหาตำแหน่งพิกัดจุดของสถานที่28รูปที่ 4.1 แสดงการเลือกใช้วิธีการแบ่งกลุ่มข้อมูลโดยใช้โปรแกรม Weka41รูปที่ 4.2 แสดงการเลือกจำนวนกลุ่มในการแบ่งกลุ่มข้อมูลด้วยวิธี Simple K-Means42รูปที่ 4.3 แสดงรายละเอียดค่าต่างๆของแต่ละกลุ่มที่ได้จากการแบ่งกลุ่มข้อมูล42รูปที่ 4.4 แสดงการ์ฟของกลุ่มข้อมูลที่ถูกแบ่ง44รูปที่ 4.5 แสดงรายละเอียดต่างๆของสมาชิกแต่ละตัวที่ถูกแบ่งกลุ่ม44รูปที่ 4.6 แสดงแอพพลิเคชันแผนที่ด้วยการมองแบบ Satellite46รูปที่ 4.7 แสดงแอพพลิเคชันแผนที่ด้วยการมองแบบ Terrain46รูปที่ 4.8 แสดงแถบเลื่อนเพื่อเลื่อนดูระยะความใกล้หรือความไกลของแผนที่47รูปที่ 4.9 แสดงตัวอย่างแอพพลิเคชันแผนที่บนหน้าเว็บ47รูปที่ 4.10 แสดงการค้นหาสถานที่ผิดพลาดอันเนื่องจากโปรแกรมไม่สามารถค้นหาสถานที่ที่ผู้ใช้ป้อนได้48รูปที่ 4.11 แสดงการค้นหาถูกต้องตามข้อมูลที่ผู้ใช้ป้อน49รูปที่ 4.12 แสดงการค้นสถานที่ที่ตรงกับข้อมูลที่ผู้ใช้ป้อน49รูปที่ 4.13 แสดงการตีกรอบบนแผนที่เพื่อแสดงขอบเขตที่ผู้ใช้กำหนด53รูปที่ 4.14 แสดงตำแหน่งของสถานที่ที่อยู่ภายในขอบเขตระยะที่ผู้ใช้กำหนด54รูปที่ 4.15 แสดงรายชื่อของสถานที่สำคัญต่างๆที่อยู่ภายในขอบเขตที่ผู้ใช้กำหนด54รูปที่ 4.16 แสดงที่ตั้งและรายละเอียดโดยรอบของสถานที่ที่สนใจ55รูปที่ 4.17 แสดงสูตรสำเร็จสำหรับการหาค่าฟังก์ชันระยะห่าง55รูปที่ 4.18 แสดงรายชื่อสถานที่ที่อยู่กลุ่มเดียวกับตำแหน่งที่ผู้ใช้เลือกพร้อมทั้งเรียงลำดับความคล้ายคลึง56รูปที่ 4.19 การแสดงข้อมูลเชิงจำนวนและเชิงภูมิศาสตร์โดยใช้ Flex Builder56รูปที่ 5.1 กราฟแสดงค่าเฉลี่ยของแต่ละหัวข้อจากการประเมินผลโดยผู้ใช้จำนวน 10 คน58รูปที่ ก.1 แสดงการเริ่มติดตั้งโปรแกรม AppServ62รูปที่ ก.2 แสดงเงื่อนไขและข้อตกลงตามลิขสิทธิ์ของ GNU63รูปที่ ก.3 แสดงการเลือกไดรฟ์และไดเร็คทอรีตามที่ผู้ใช้ต้องการ63รูปที่ ก.4 แสดงการเลือก Package Components ที่ต้องการติดตั้ง64รูปที่ ก.5 แสดงการปรับแต่งค่าต่างๆของเว็บเซิฟเวอร์ Apache65รูปที่ ก.6 แสดงการปรับแต่งค่าต่างๆของ MySQL Server66รูปที่ ก.7 แสดงหน้าต่างเมื่อติดตั้งโปรแกรมเสร็จสิ้นแล้ว66รูปที่ ก.8 หน้าแรกของ phpMyAdmin ในการสร้างฐานข้อมูล67รูปที่ ก.9 แสดงฐานข้อมูลที่ถูกสร้างขึ้นแล้ว67รูปที่ ก.10 การ Import ฐานข้อมูลของระบบเข้าสู่ MySQL68รูปที่ ก.11 ขั้นตอนการติดตั้ง Weka69รูปที่ ก.12 ข้อตกลงการใช้งานโปรแกรม Weka69รูปที่ ก.13 ขั้นตอนการเลือกลงโปรแกรม Weka70รูปที่ ก.14 การเลือกที่อยู่เพื่อติดตั้งโปรแกรม Weka70รูปที่ ก.15 เริ่มต้นติดตั้งโปรแกรม Weka71รูปที่ ก.16 การติดตั้งโปรแกรม Weka เสร็จสิ้น71รูปที่ ข.1 แสดงการเลือกค้นหาสถานที่โดยกรอกชื่อสถานที่72รูปที่ ข.2 แสดงการกรอกชื่อสถานที่ลงบน textbox ที่กำหนด72รูปที่ ข.3 แสดงหน้าต่างขึ้นเตือนผู้ใช้เมื่อไม่สามารถค้นหาสถานที่ตามชื่อที่กรอกได้72รูปที่ ข.4 แสดงหน้าต่างยืนยันเมื่อค้นหาสถานที่พบ73รูปที่ ข.5 แสดงสถานที่ที่ได้จากการค้นหาด้วยการกรอกชื่อสถานที่73รูปที่ ข.6 แสดงการเลือกค้นหาสถานที่โดยผู้ใช้กำหนดตำแหน่งหรือจุดด้วยตนเอง73รูปที่ ข.7 แสดงการเตือนเพื่อให้ผู้ใช้ยืนยันการเลือกตำแหน่ง74รูปที่ ข.8 แสดงการเลือกระยะของผู้ใช้เพื่อดูสถานที่ที่อยู่ภายในขอบเขตระยะที่กำหนด74รูปที่ ข.9 แสดงหน้าต่างยืนยันการค้นหาสถานที่ที่อยู่ภายในระยะที่ผู้ใช้กำหนด75รูปที่ ข.10 แสดงขอบเขตและไอคอนของสถานที่ต่างๆที่อยู่ภายในขอบเขต75รูปที่ ข.11 แสดงตารางเพื่อเลือกดูรายชื่อของสถานที่ต่างๆ75รูปที่ ข.12 แสดงตารางรายชื่อสถานที่ประเภทโรงพยาบาลที่ถูกพบภายในขอบเขตที่ผู้ใช้เลือก76รูปที่ ข.13 แสดงการเลือกดูสถานที่ที่พบภายในขอบเขตที่ผู้ใช้เลือกในระยะใกล้76รูปที่ ข.14 แสดงรายชื่อสถานที่ที่อยู่ภายในกลุ่มเดียวกับตำแหน่งที่โปรแกรมวิเคราะห์ได้77รูปที่ ข.15 แสดงการเลือกดูสภาพโดยรอบของสถานที่ที่สนใจ77รูปที่ ข.16 แสดงกราฟและรายละเอียดต่างๆของสถานที่ที่สนใจ78<br />สารบัญตาราง<br />หน้าตารางที่ 2.1 แสดงข้อมูลที่เป็นมิติเชิงกลุ่มได้แก่ เพศและพาหนะ7ตารางที่ 2.2 ตารางเปรียบเทียบความสามารถระหว่างกูเกิลแม็พและกูเกิลเอิร์ธ26ตารางที่ 4.1 ตารางเปรียบเทียบความสามารถระหว่างกูเกิลแม็พและกูเกิลเอิร์ธและระบบช่วยตัดสินใจ57 ในการหาพื้นที่เพื่อสร้างที่พักโดยอ้างอิงจากสถานที่ที่เหมาะสม <br />บทที่ 1 บทนำ<br />ในปัจจุบันคงต้องยอมรับว่า ที่พัก ที่อยู่อาศัยนั้น มีผลต่อการใช้ชีวิตประจำวันของมนุษย์เป็นอย่างมาก เห็นได้จากสภาพสังคมของแต่ละท้องถิ่นหรือแต่ละท้องที่ กล่าวคือ สังคมแต่ละแห่งจะมีสภาพของสังคมที่แตกต่างกัน ทำให้คนที่อาศัยอยู่ในละแวกหรือบริเวณที่ต่างกันนั้น มีชีวิตและสภาพความเป็นอยู่ที่ค่อนข้างแตกต่างกัน ทำให้เกิดความสงสัยขึ้นว่า “อะไรเป็นปัจจัยที่มีผลในการเลือกสถานที่และแหล่งที่อยู่”<br />โครงงานนี้มุ่งประเด็นการพัฒนาออกเป็น 3 ด้าน คือ<br />1. โปรแกรมสำเร็จสำหรับวิเคราะห์หาที่พักที่เหมาะสม คือ จะนำเสนอโดยเป็นโปรแกรมสำเร็จรูปที่สามารถวิเคราะห์ตามปัจจัยที่ผู้ใช้ต้องการ หรือผู้ใช้เลือกได้2. การพัฒนาส่วนติดต่อผู้ใช้ (User Interface) โดยจะพัฒนาให้อยู่ในรูปแบบเว็บแอพพลิเคชัน ซึ่งง่ายและสะดวกต่อผู้ใช้3. นำไปใช้กับสถานที่หรือท้องถิ่นอื่นได้ คือ จะออกแบบมาให้สามารถใช้กับข้อมูลของสถานที่ หรือจังหวัดอื่นๆได้<br />ที่มาของโครงงานจากที่ได้กล่าวมาแล้วเบื้องต้นว่าสภาพสังคมหรือปัจจัยต่างๆนั้นมีผลกับการเลือกถิ่นที่อยู่อาศัยของมนุษย์ค่อนข้างมาก ในปัจจุบันนี้การจะสร้างโครงการที่อยู่ ไม่ว่าจะเป็น คอนโดมีเนียม หอ หรืออพาร์ตเมนท์ ก็ต้องมีการจ้างคนหรือผู้เชี่ยวชาญมาวิเคราะห์ว่าควรจะสร้างที่พักอยู่ในทำเลใดจึงจะทำให้คนเข้ามาอยู่ หรือซื้อได้มากที่สุด จึงควรจะมีสิ่งที่สามารถนำมาวิเคราะห์แทนคนได้ว่าควรจะไปสร้างที่พักหรือสถานที่ตรงส่วนไหนมากที่สุด ซึ่งสถานที่นั้นก็ควรจะมีปัจจัยต่างๆที่สอดคล้องกับความต้องการของมนุษย์ด้วยเช่นกันจึงจะสามารถทำให้คนเลือกที่จะเช่าหรือซื้อได้<br />ดังนั้นจึงน่าจะมีโปรแกรมสำเร็จรูปสำหรับวิเคราะห์ที่พักที่เหมาะสมกับความต้องการของผู้ใช้ โดยนำข้อมูลที่มีอยู่ในท้องถิ่นหรือท้องที่นั้นๆ มาวิเคราะห์รวมกับข้อมูลคุณภาพชีวิตภายในท้องที่นั้นๆ แล้วสรุปออกมาว่าพื้นที่ส่วนไหนที่เหมาะสมที่สุด<br />วัตถุประสงค์ของโครงงาน - 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
สามารถพัฒนาแอพพลิเคชั่นแผนที่บนเว็บให้ใช้งานได้หลากหลายมากขึ้นบทที่ 2 ทฤษฎีที่เกี่ยวข้องและระบบใกล้เคียง<br/>2.1 ทฤษฎีที่เกี่ยวข้อง<br />ทฤษฎีพื้นฐานต่างๆที่เกี่ยวข้องกับโครงงานนี้ แบ่งออกได้เป็น 2 ส่วน คือ ส่วนของการทำเหมืองข้อมูลและ ระบบข้อมูลทางภูมิศาสตร์<br />2.1.1 การทำเหมืองข้อมูล (Data Mining)<br />ดาต้าไมน์นิ่ง (Data Mining)[3] หรือการทำเหมืองข้อมูล คือ วิธีการค้นหาความรู้ความสัมพันธ์และรูปแบบทั้งหมดที่ถูกซ่อนอยู่ในฐานข้อมูลที่มีปริมาณข้อมูลจำนวนมาก การทำเหมืองข้อมูลจะทำการสำรวจและวิเคราะห์อย่างอัตโนมัติจากข้อมูลที่มีอยู่แล้วให้อยู่ในรูปแบบที่เต็มไปด้วยความหมายและอยู่ในรูปของกฎ <br />ActionDecisionKnowledgeDataโดยที่ความสัมพันธ์เหล่านี้แสดงให้เห็นถึงความรู้ต่างๆที่เป็นประโยชน์และน่าสนใจ ประโยชน์หลักของการทำเหมืองข้อมูลคือการสืบค้นความรู้ในฐานข้อมูลขนาดใหญ่เมื่อได้ความรู้นั้นมาแล้วจึงนำมาใช้ในการตัดสินใจ ดังรูปที่ 2.1<br />รูปที่ 2.1 แสดงถึงกระบวนการไหลของข้อมูลมาสู่การตัดสินใจ<br />2.1.1.1 กระบวนการค้นพบความรู้จากฐานข้อมูล<br />กระบวนการค้นพบความรู้[3] จากฐานข้อมูลขนาดใหญ่มาก เป็นกระบวนการสร้างแบบจำลองหรือรูปแบบจากกลุ่มของข้อมูล ทำให้เกิดความเข้าใจในลักษณะรูปแบบความเกี่ยวข้องสัมพันธ์กันของกลุ่มข้อมูล และแนวโน้มเพื่อใช้ในการทำนายข้อมูลนั้นๆ โดยมีกระบวนการตามทฤษฎีรวม 4 ขั้นตอนดังรูป 2.2<br />รูปที่ 2.2[1] กระบวนการค้นพบความรู้จากฐานข้อมูล<br />2.1.1.2 การเตรียมข้อมูล (Data preparation)<br />ขั้นตอนนี้เป็นขั้นตอนที่สำคัญและใช้เวลามากที่สุด เนื่องจากข้อมูลที่ผิดย่อมนำมาสู่ผลลัพธ์ที่ผิดพลาดเช่นกัน บ่อยครั้งที่การเลือกข้อมูลมาไม่เหมาะสมและไม่ถูกต้องหรือมีการนำข้อมูลมาจากหลายแหล่งมารวมเข้ากันเพื่อพิจารณาความสัมพันธ์ของข้อมูล ซึ่งจะส่งผลให้เกิดความผิดพลาด การเตรียมข้อมูลสามารถแบ่งออกได้เป็น 3 ขั้นตอนย่อยคือ<br />1.) การคัดเลือกข้อมูล (Data Selection) จุดประสงค์หลักคือการระบุลักษณะข้อมูลที่ต้องการ แล้วทำการคัดเลือกข้อมูลที่ต้องการและขจัดข้อมูลที่ไม่ต้องการออกไป ทั้งนี้ตามจุดประสงค์ที่ได้กำหนดไว้<br />2.) การกลั่นกรองข้อมูล (Data Cleaning) จุดประสงค์เพื่อทำให้มั่นใจว่าคุณภาพของข้อมูลที่ถูกเลือกนั้นถูกต้องและเหมาะสมที่จะนำไปไมน์นิ่ง เนื่องจากข้อมูลอาจจะยังมีที่ไม่ถูกต้องหลงเหลืออยู่<br />3.) การแปลงรูปข้อมูล (Data Transformation) จุดประสงค์เพื่อทำการแปลงข้อมูลให้อยู่ในรูปที่พร้อมจะนำไปวิเคราะห์ตามอัลกอริทึมของเดต้าไมน์นิ่งที่เลือกใช้<br />2.1.1.3 การทำเดต้าไมน์นิ่ง (Data mining)<br />เป็นการประมวลผลข้อมูลตามอัลกอริทึมที่ได้กำหนดไว้ ในขั้นตอนนี้จะมีความสัมพันธ์กับการวิเคราะห์ข้อมูลและขั้นตอนที่ผ่านมา โดยเมื่อทำขั้นตอนนี้แล้วอาจต้องย้อนกลับไปทำขั้นตอนการเตรียมข้อมูลใหม่ ในขั้นตอนนี้จะเกี่ยวข้องกับการใช้อัลกอริทึมแบบต่างๆ ซึ่งแต่ละแบบก็จะมีข้อดีข้อด้อยต่างกันไป<br />2.1.1.4 การประเมินรูปแบบ/กฎเกณฑ์ที่ได้ (Pattern evaluation)<br />เป็นขั้นตอนการวิเคราะห์และประเมินผลของรูปแบบหรือกฎเกณฑ์ที่หาได้จากขั้นตอนการหาความรู้จากข้อมูล การทำงานในส่วนนี้จำเป็นต้องใช้ทักษะในการวิเคราะห์ข้อมูลและการวิเคราะห์ทางธุรกิจเข้าช่วยโดยอาจจะอาศัยการสนับสนุนจากเครื่องมือทางด้าน Graphical Visualization เพื่อจะช่วยวิเคราะห์ข้อมูลได้อย่างสะดวกและรวดเร็วยิ่งขึ้น ภายหลังการวิเคราะห์ผลลัพธ์ที่ได้ออกมาคือความรู้นั้นอาจนำเสนอในรูปแบบต่างๆ กัน เช่น visualization, transformation, removing redundant patterns เป็นต้น<br />2.1.1.5 การนำเสนอความรู้ (Knowledge presentation)<br />นำความรู้ที่ค้นพบไปประยุกต์ใช้งานจริงต่อไป เช่นเมื่อพบว่า 80% ของลูกค้าที่ซื้อทีวีจะซื้อเครื่องเล่นวิดีโอด้วยเวลาถัดไป ดังนั้นผู้จัดการร้านสามารถเพิ่มยอดขายเครื่องเล่นวิดีโอโดยทำการเสนอขายในราคาพิเศษให้กับกลุ่มลูกค้าที่เคยซื้อทีวีกับทางร้าน หรือเสนอลดราคาพิเศษสำหรับผู้ที่ซื้อทั้งสองอย่าง<br />เทคนิคต่างๆ ของการทำดาต้าไมน์นิ่ง - 26.
- 27.
- 28.
- 29.
2.1.1.7 การแบ่งกลุ่มข้อมูลการแบ่งกลุ่มข้อมูล[1] หรือClustering เป็นเทคนิคการแบ่งกลุ่มข้อมูลขนาดใหญ่ให้กลายเป็นกลุ่มย่อยๆ เราเรียกกลุ่มย่อยที่ถูกแบ่งออกนี้ว่า คลัสเตอร์ โดยใช้ความคล้ายคลึงกันของข้อมูลเป็นเกณฑ์ในการแบ่ง โดยข้อมูลที่ถูกแบ่งแยกออกจากกันจะถือว่ามีความคล้ายคลึงกันน้อย ส่วนข้อมูลที่อยู่กลุ่มเดียวกันจะถือว่ามีความคล้ายคลึงกันมาก<br />การแบ่งกลุ่มข้อมูลมีประโยชน์ในการใช้วิเคราะห์ข้อมูลที่ไม่ทราบรายละเอียดที่แน่นอน และเหมาะสมสำหรับการแบ่งกลุ่มข้อมูลที่มีการจำแนกประเภทข้อมูลที่ต้องการกลุ่มเป้าหมายที่ชัดเจน<br />ตัววัดค่าคล้ายคลึง เป็นตัวสำหรับกำหนดความคล้ายคลึงกันของข้อมูล ซึ่งจะให้ค่ามากเมื่อข้อมูลที่วัดมีความคล้ายคลึงกันมาก และจะให้ค่าน้อยเมื่อข้อมูลมีความคล้ายคลึงกันน้อย <br />ตัววัดค่าความแตกต่างสำหรับข้อมูลไบนารี่ เป็นการวัดค่าความแตกต่างโดยบ่งบอกความแตกต่างของข้อมูลโดยใช้ค่าเพียงสองค่า คือเลข 0 และ 1 หรืออาจใช้ Yes หรือ No แทนก็ได้<br />ตัววัดค่าความแตกต่างสำหรับข้อมูลเชิงกลุ่ม สามารถทำได้โดยการแปลงข้อมูลให้อยู่ในรูปของไบนารี่ก่อน แล้วจึงหาค่าความแตกต่างด้วยตัววัดของข้อมูลไบนารี่ มิติไบนารี่ที่ได้จากมิติเชิงกลุ่มตัวเดียวกันต้องนำมาคำนวณร่วมกันก่อน จึงสามารถนำไปคำนวณร่วมกับมิติอื่นได้ค่าความแตกต่างของมิติเชิงกลุ่ม 1 ตัวหาได้จากค่าความแตกต่างของมิติไบนารี่แต่ละตัว<br />ตัวอย่าง เรามีมิติเชิงกลุ่มสองตัวคือเพศและพาหนะที่ใช้เดินทาง ดังตารางที่ 2.1<br />ตารางที่ 2.1[1] แสดงข้อมูลที่เป็นมิติเชิงกลุ่มได้แก่ เพศและพาหนะ<br />จากตารางที่ 2.1 จะสามารถนำไปแปลงเป็นมิติไบนารี่ได้ดังรูป 2.3<br />รูปที่ 2.3[3] แปลงข้อมูลที่เป็นมิติเชิงกลุ่มให้อยู่ในรูปมิติไบนารี<br />ตัววัดค่าความแตกต่างสำหรับข้อมูลเชิงปริมาณ เป็นการบอกลักษณะความแตกต่างของข้อมูลโดยใช้ปริมาณเป็นตัววัด ถ้ามีความแตกต่างกันมากปริมาณก็จะมีค่ามาก แบ่งได้เป็นหลายวิธีดังนี้<br />ตัววัดค่าความแตกต่างแมนฮัตตัน เป็นผลรวมของระยะห่างที่วัดในแต่ละมิติของข้อมูล - 30.
- 31.
- 32.
- 33.
- 34.
รูปที่ 2.4[1]ตัวอย่างการวัดค่าความแตกต่างด้วยวิธีของมาฮาลาโนบิสวิธีการแบ่งกลุ่มนั้นสามารถทำได้หลายวิธี ซึ่งวิธีที่นิยมใช้มากวิธีหนึ่ง ได้แก่K-means algorithm เป็นวิธีการแบ่งกลุ่มแบบพาร์ทิชันวิธีหนึ่งซึ่งนิยมใช้กันมาก เป็นการแบ่งกลุ่มข้อมูลให้ได้ k กลุ่ม โดยค่า k จะถูกกำหนดโดยผู้ใช้อัลกอริทึมของ K- means 1. ทำการสุ่มข้อมูลออกมา k ตัว เป็นศูนย์กลางกลุ่ม (center) เริ่มต้น2. ทำการอ่านข้อมูลทั้งหมดจากฐานข้อมูลแล้ว จัดให้ข้อมูลแต่ละตัวอยู่ในกลุ่มที่มีค่าระยะห่างกับมันน้อยที่สุด (นั่นคือ เหมือนกับมันมากที่สุดนั่นเอง) 3. หาจุดศูนย์กลางกลุ่มใหม่โดยเฉลี่ยจากข้อมูลที่อยู่ในกลุ่มนั้น4. ทำการหากลุ่มให้ข้อมูลทุกตัวจากจุดศูนย์กลางใหม่ที่ได้5. ทำจนกว่าข้อมูลทุกตัวจะไม่มีการเปลี่ยนกลุ่มเพื่อความเข้าใจง่าย จึงขอยกตัวอย่างพร้อมรูปภาพดังต่อไปนี้<br />ตัวอย่างการทำ K-means<br />สมมติเราต้องการจะแบ่งกลุ่มข้อมูลที่กระจายกันอยู่ดังนี้ ออกเป็น 3 กลุ่ม โดยใช้ k-means <br /> <br />ขั้นแรก ทำการสุ่มข้อมูลออกมา 3 ตัว เป็นศูนย์กลางกลุ่ม (center) เริ่มต้น<br /> ขั้นที่สอง อ่านข้อมูลทั้งหมดจากฐานข้อมูลแล้ว จัดให้ข้อมูลแต่ละตัวอยู่ในกลุ่มที่มีค่าระยะห่างกับมันน้อยที่สุด<br />ขั้นที่สาม หาจุดศูนย์กลางกลุ่มใหม่โดยเฉลี่ยจากข้อมูลที่อยู่ในกลุ่มนั้น<br />ขั้นที่สี่ ทำการหากลุ่มให้ข้อมูลทุกตัวจากจุดศูนย์กลางใหม่ที่ได้<br />กลับมาขั้นที่สามอีกครั้ง หาจุดศูนย์กลางกลุ่มใหม่โดยเฉลี่ยจากข้อมูลที่อยู่ในกลุ่มนั้น<br />ขั้นที่สี่ ทำการหากลุ่มให้ข้อมูลทุกตัวจากจุดศูนย์กลางใหม่ที่ได้<br /> <br />ขั้นสุดท้าย พบว่าข้อมูลไม่มีการเปลี่ยนกลุ่ม จึงหยุดการทำงาน<br />2.1.1.8 WekaWeka[6] ย่อมาจาก Waikato Environment for Knowledge Analysis เป็นซอฟต์แวร์ฟรีที่แจกจ่ายภายใต้ GPL license โดยทั้งหมดนี้สร้างด้วยภาษาจาวาโปรแกรมจาวาซึ่งประกอบไปด้วยอุปกรณ์การวิเคราะห์ข้อมูลและเพื่อนำไปใช้ไมน์ข้อมูลได้ เน้นการเรียนรู้ด้วยเครื่อง (Machine learning) กับ การทำเหมืองข้อมูล (Data mining) มีโมดูลย่อยสำหรับจัดการข้อมูล และตัวแสดงผลใช้ GUI และคำสั่ง ในการสั่งให้ซอฟต์แวร์ประมวลผล<br />โปรแกรมหลักของซอฟต์แวร์ Weka<br />Simple CLI (Command Line Interface) เป็นโปรแกรมรับคำสั่งการทำงานผ่านการพิมพ์<br />Explorer เป็นโปรแกรมที่ออกแบบในลักษณะ GUI<br />Experimenter เป็นโปรแกรมที่ออกแบบการทดลองและการทดสอบผล<br />KnowledgeFlow เป็นโปรแกรมออกแบบผังการไหลของความรู้<br />ArffViewer เป็นโปรแกรมที่ใช้สำหรับแก้ไขแฟ้มประเภท Arff<br />Log เป็นโปรแกรมที่ใช้อ่านข้อความบันทึกเก็บระหว่างการทำงาน<br />โดยปกติแล้วเราจะใช้เฉพาะโปรแกรม Explorer เนื่องจากใช้งานง่ายซึ่งมีขั้นตอนการทำงานดังรูปที่ 2.5<br />รูปที่ 2.5 ขั้นตอนการใช้ Explorer ใน Weka<br />เมนูหลักของ Explorer<br />Preprocess การเตรียมข้อมูล<br />Classify รวมโมดูลการทำเหมืองข้อมูลแบบจัดแบ่งประเภท<br />Cluster รวมโมดูลการทำเหมืองข้อมูลแบบการเกาะกลุ่ม<br />Associate รวมโมดูลการทำเหมืองข้อมูลแบบกฎเชื่อมโยง<br />Select attributes รวมโมดูลสำหรับการวิเคราะห์ความเกี่ยวพันของลักษณะประจำ<br />Visualize นำเสนอข้อมูลด้วยภาพนามธรรมสองมิติ<br />ประเภทของแฟ้มข้อมูลที่รับได้ <br />แฟ้มข้อมูลที่รับต้องอยู่ในรูปแบบ ASCII อาจเป็น arff, csv, C45<br />ในกรณีแฟ้มข้อมูลอยู่ในเครือข่ายผู้ใช้สามารถเรียกใช้โดยอาศัย URL<br />หรืออาจใช้ข้อมูลที่อยู่ในฐานข้อมูลที่เชื่อมโยงผ่าน JDBC<br />2.1.2 Geographic Information System<br />ระบบข้อมูลทางภูมิศาสตร์[4] หรือที่เรียกและรู้จักกันอย่างแพร่หลายว่า GIS เป็นระบบที่ใช้สำหรับการนำเสนอข้อมูลสภาพภูมิศาสตร์ต่างๆ ออกมาให้อยู่ในรูปข้อมูลคอมพิวเตอร์ มีประโยชน์ค่อนข้างมากสำหรับการใช้ศึกษาเพื่อเดินทาง ทำแผนที่ภูมิศาสตร์ แผนที่ประเทศ หรืออื่นๆที่ต้องใช้ข้อมูลทางภูมิศาสตร์<br />2.1.2.1 Google Maps API<br />กูเกิลแม็พ[2] (Google Maps) เป็นแอพพลิเคชันหน้าเว็บที่ผลิตโดยบริษัทกูเกิล มีลักษณะคล้ายคลึงกับกูเกิลเอิร์ธ (Google Earth) ใช้สำหรับดูสภาพภูมิศาสตร์และรายละเอียดต่างๆบนพื้นโลกได้ สามารถเลือกดูได้หลายระดับชั้น (Layer) ดังนี้<br />- Map Layer เป็นระดับชั้นที่บ่งบอกสภาพภูมิศาสตร์หรือภูมิประเทศหลักๆของพื้นที่ ได้แก่ ทะเลสาบ ทะเล แม่น้ำ ภูเขา เป็นต้น ซึ่งระดับชั้นนี้จะมีเส้นแบ่งเขตแดนของแต่ละเขตอย่างชัดเจน<br />- Satellite Layer เป็นระดับชั้นที่บ่งบอกรายละเอียดเกือบทุกอย่างจากพื้นที่นั้น เสมือนว่ากำลังใช้ดาวเทียมจับภาพขณะใดขณะหนึ่งอยู่ นิยมใช้กันมากในกรณีที่ต้องการรู้รายละเอียดต่างๆ เช่น จำนวนบ้านเรือน สถานที่ท่องเที่ยว สภาพพื้นที่ เป็นต้น - 35.
- Terrain Layerเป็นระดับชั้นที่บ่งบอกรายละเอียดสำคัญของภูมิประเทศ เหมาะกับการไปนำไปศึกษาและเขียนแผนที่ของพื้นที่นั้นๆกูเกิลแม็พจะมีส่วนของการโปรแกรมแอพพลิเคชัน (Application Programming Interfact หรือ API)หรือที่เรียกกันว่า Google Map API[3] ให้ใช้ด้วย ซึ่งผู้ใช้สามารถนำโค้ดของ Google Map API ไปเขียนโปรแกรมสำหรับใช้ประโยชน์ต่างๆได้ ส่วนของ API ที่ใช้มีดังนี้<br />- GMap2 เป็นคลาสที่ใช้สำหรับสร้างแอพพลิเคชันแผนที่บนหน้าเว็บ<br />- GKeyBoardHandler เป็นคลาสสำหรับอำนวยความสะดวกกับผู้ใช้ โดยผู้ใช้จะสามารถนำคีย์บอร์ดมากดปุ่มเพื่อใช้กูเกิลแม็พได้ เช่น กดเลื่อนแผนที่ไปทางด้านซ้ายและขวา กดซูม(zoom)เข้าไปใกล้มากขึ้นเพื่อดูรายละเอียด เป็นต้น<br />- GMarker เป็นคลาสสำหรับใช้ทำเครื่องหมายบันทึกตำแหน่ง (Mark point) เพื่อสะดวกและง่ายสำหรับจำตำแหน่งสถานที่ต่างๆ - 36.
- GScreenSizeเป็นคลาสสำหรับปรับเปลี่ยนขนาดของแอพพลิเคชันแผนที่บนหน้าเว็บให้เหมาะสมกับความต้องการของผู้ใช้ - 37.
- GPoint, GLatLng เป็นคลาสสำหรับหาพิกัดจุดของสถานที่ต่างๆ ซึ่งจะคืนค่าออกมาทั้งค่าของละติจูดและลองติจูด - 38.
- GLayerเป็นคลาสสำหรับเลือกระดับชั้นที่ต้องการดู ได้แก่ Map , Satellite และ Terrain- GRoute เป็นคลาสสำหรับเลือกดูเส้นทางจากจุดหนึ่งไปยังอีกจุดหนึ่ง สามารถตรวจสอบระยะทางและทิศทางที่ใช้เดินทางได้อีกด้วย2.1.3 การแสดงผลและการพัฒนาระบบ2.1.3.1 Adobe Flex<br />Adobe Flex[7] เป็นเทคโนโลยีที่จัดทำขึ้นโดยบริษัท Adobe Systems Incorporated ในเดือนมีนาคมปี พ.ศ. 2547 เพื่อเป็นเครื่องมือในการพัฒนา Rich Internet applications (RIAs) ได้อย่างมีประสิทธิภาพ โดย Adobe Flex มีพื้นฐานมาจาก Adobe Flash นั่นเอง เริ่มต้นนั้น Adobe Flex ออกมาในลักษณะ Flex Data Services (ประกอบไปด้วย software development kit, Integrated Development Environment (IDE) และ Java Platform, Enterprise Edition (J2EE)) ซึ่งต้องเสียค่าลิขสิทธิ์ (license) หากต้องการใช้งานแต่ต่อมาบริษัท Adobe ได้นำเสนอ Flex 3 SDK ซึ่งเป็น open source ติดตั้งไว้กับ Java Eclipse platform ในการพัฒนาส่วนการแสดงผลนั้นใช้ Adobe Flash Player ทำให้เราสามารถใช้ Adobe Flex ในการพัฒนาได้โดยไม่ต้องเสียค่าลิขสิทธิ์<br />Adobe Flex เป็นการผสมผสานเทคโนโลยี 2 ส่วนเข้าด้วยกัน1. MXML เป็นภาษามาร์กอัพเช่นเดียวกันและมีพื้นฐานมาจากภาษา XML ซึ่งพัฒนาโดย Macromedia (ซึ่งต่อมารวมเป็น Adobe Systems Incorporated) ในส่วน MXML นี้จะใช้ในการออกแบบ Layout ของ User Interface ไวยากรณ์ของ MXML มีความคล้ายคลึงกับ XML มากแต่ในส่วนของชื่อแท็กของ element จะมีการกำหนดความหมายซึ่งก็คือองค์ประกอบ(Component) ของ User Interface ที่เราสามารถกำหนดแอตทริบิวต์ให้ได้แตกต่างกันออกไป สามารถดูตัวอย่าง Component ใน Adobe Flex ได้ในรูปที่ 2.6-2.9<br /> ตัวอย่างของ Component ใน Adobe Flex<br />รูป 2.6 ตัวอย่าง data grid component<br />รูป 2.7 ตัวอย่าง Date Choosercomponent Menu Barรูป 2.8 ตัวอย่าง Menu Barcomponent<br />รูปที่ 2.9[8] ตัวอย่างแผนภูมิแบบต่างๆ จาก Chart component<br />2. Action Script เป็น scripting language ที่สร้างขึ้นในช่วงแรกเพื่อควบคุมการทำงานของ Adobe Flash มีความคล้ายคลึงกับการเขียนโปรแกรมที่เราสามารถประกาศตัวแปรและเขียนคำสั่งควบคุมการทำงานได้ ใน Adobe Flex นี้เราสามารถใช้ติดต่อกับภาษาที่ทำงานอยู่เบื้องหลัง (Back-end) ได้เพื่อใช้การแลกเปลี่ยนข้อมูลที่อาจจะอยู่ในรูปของภาษา xml, .net, jsp, php ได้รวมถึงผลข้อมูลที่ได้จาก ฐานข้อมูล (database) จะเห็นได้ว่า Flex เป็นเหมือนตัวกลางในการติดต่อระหว่างคอมพิวเตอร์ทางฝั่งผู้ใช้และคอมพิวเตอร์ส่วนกลางนั่นเองโดยนำเอาข้อดีของการแสดงผลที่สวยงาม เข้าใจง่าย มีความเป็น dynamic ของ Adobe Flash เอาไว้ในส่วนของการทำงานก็มี Action Script ใช้ติดต่อกับส่วนภาษาที่เราถนัดซึ่งใช้เขียนเป็นระบบการทำงานของเราได้อย่างง่ายดาย และมีโครงสร้างที่เป็นระบบระเบียบ ง่ายในการทำความเข้าใจและแก้ไขในอนาคต แผนผังการทำงานร่วมกันของ Adobe Flex และภาษา PHP สามารถดูได้จากรูปที่ 2.10โปรแกรมที่เราเขียนด้วย Adobe flex เราจะสามารถคอมไพล์เป็นไฟล์ .swf เช่นเดียวกับ Adobe flash ทำให้เราสามารถรวมเอาโปรแกรมส่วนนี้เข้ากับหน้าเว็บที่เราต้องการได้อย่างง่ายดาย ในขณะเดียวกันก็สามารถกำหนดให้หน้าเว็บเป็นไฟล์ .mxml แล้วเมื่อมีผู้ใช้เรียกหน้าเว็บนั้น Flex จะคอมไพล์เป็นไฟล์ .swf บนบราวเซอร์ให้เลย เป็นการทำงานบนฝั่งเครื่องคอมพิวเตอร์ของผู้ใช้และลดภาระของคอมพิวเตอร์ส่วนกลางตามหลักของ Rich Internet Applications (RIAs) นั่นเอง<br />รูปที่ 2.10 [9] ภาพแสดงการทำงานของ Adobe Flex ร่วมกับภาษา PHP<br />2.1.3.2 เอแจ็กซ์ (AJAX)AJAX[10] ย่อมาจาก Asynchronous JavaScript and XML วิวัฒนาการของเอแจ็กซ์เริ่มต้นเมื่อปีพุทธศักราช 2545 บริษัทไมโครซอฟท์ได้คิดค้น XMLHttpRequest ขึ้นมาเพื่อเป็นทางเลือกในการเขียนโปรแกรมบนหน้าเว็บ ใช้ติดต่อแลกเปลี่ยนข้อมูลกับคอมพิวเตอร์ส่วนกลางXMLHttpRequest เป็น API ที่สามารถเรียกใช้ได้จากภาษาสคริปต์ เช่น จาวาสคริปต์, วีบีสคริปต์ เป็นต้น ใช้ในการแลกเปลี่ยนและปรับรูปแบบ XML จากคอมพิวเตอร์ส่วนกลางโดยใช้โพรโตคอล HTTP สร้างการเชื่อมต่อระหว่างเว็บบราวเซอร์ของผู้ใช้และคอมพิวเตอร์ส่วนกลาง ในขั้นต้นมีแต่เพียงอินเทอร์เน็ตเอกซ์พลอเรอร์ (IE) เท่านั้นที่มีความสามารถนี้ ต่อมาเว็บบราวเซอร์อื่นๆ เช่น มอซิลลา ไฟร์ฟอกซ์ ก็นำ API ตัวนี้ไปใส่ในบราวเซอร์ของตนด้วย ปัจจุบันได้กลายเป็นมาตรฐานที่ทุกเว็บบราวเซอร์ต้องมี ผู้คิดค้นคำว่าเอแจ็กซ์คือ Jeese Jams Garett เมื่อปีพุทธศักราช 2548 เอแจ็กซ์เป็นการนำเทคนิคต่างๆ เช่น<br />ใช้ HTML, CSS ในส่วนแสดงผล<br />ใช้ DOM (Document Object Model) ในส่วนของ Dynamic Display and Interaction<br />ใช้ XML, XSLT ในการแลกเปลี่ยนข้อมูลและการจัดการข้อมูล<br />ใช้ XMLHttpRequest ในส่วนของ Asynchronous Data Retrieval<br />ใช้ Javascript รวมเทคนิคเหล่านี้เข้าด้วยกัน เพื่อประสิทธิภาพการทำงานที่ดียิ่งขึ้น<br />โดยปกติแล้ว เมื่อผู้ใช้ร้องขอข้อมูลจากคอมพิวเตอร์ส่วนกลาง เว็บบราวเซอร์จะส่งการร้องขอให้คอมพิวเตอร์ส่วนกลาง จากนั้น คอมพิวเตอร์ส่วนกลางจะประมวลผลแล้วส่งผลลัพธ์ทั้งหน้าให้กับเว็บบราวเซอร์ ด้วยวิธีนี้ ผู้ใช้จึงต้องรอให้คอมพิวเตอร์ส่วนกลางประมวลผลจนเสร็จสิ้น เรียกว่าการทำงานแบบ Synchronous ซึ่งการรับ-ส่งข้อมูลทั้งหน้าทุกครั้งที่มีการร้องขอจะทำให้กินแบนด์วิดธ์ (Bandwidth) มากแต่หลักการของเอแจ็กซ์เป็นการทำงานแบบ Asynchronous หรือการสื่อสารแบบไม่ต่อเนื่อง ลดการติดต่อกันระหว่างผู้ใช้และคอมพิวเตอร์ส่วนกลาง เพราะมี AJAX Engine เป็นสื่อกลางในการติดต่อระหว่างผู้ใช้และคอมพิวเตอร์ส่วนกลาง หลักการนี้แตกต่างกับการทำงานบนเว็บแบบดั้งเดิมดังที่เห็นในรูป 2.1<br />รูปที่ 2.11 แบบจำลองการทำงานบนเว็บแบบดั้งเดิมและแบบที่ใช้เอแจ็กซ์<br />ที่มา: http://www.adaptivepath.com/ideas/essays/archives/000385.php<br />AJAX Engine จะทำงานอยู่ในฉากหลัง ทำหน้าที่รับคำร้องขอจากผู้ใช้ จากนั้นก็ส่งคำร้องขอไปยังคอมพิวเตอร์ส่วนกลาง คอมพิวเตอร์ส่วนกลางจะส่งผลลัพธ์ให้กับ AJAX Engine โดยไม่ต้องรอให้ประมวลผลเสร็จเรียบร้อยก่อน ในขณะเดียวกัน AJAX Engine ก็จะส่งผลลัพธ์กลับไปแสดงบนเว็บบราวเซอร์แทนคอมพิวเตอร์ส่วนกลาง โดยจะส่งไปเมื่อผู้ใช้ทำการร้องขอหรือส่งไปเฉพาะรหัสที่มีการเปลี่ยนแปลงเท่านั้น จึงทำให้ขนาดข้อมูลในการรับส่งลดลง ผู้ใช้รู้สึกว่าได้รับการตอบสนองรวดเร็วขึ้น คล้ายคลึงกับการใช้โปรแกรมคอมพิวเตอร์แทนที่จะเป็นการตอบสนองในรูปแบบของหน้าเว็บตามปกติ <br />ในโครงงานนี้ เราใช้เอแจ็กซ์เพื่อส่งข้อมูลไปให้คอมพิวเตอร์ส่วนกลางในฉากหลัง ผู้ใช้จะไม่รู้ว่ามีการส่งข้อมูลเกิดขึ้น และสามารถใช้งานเว็บไซต์ได้ตามปกติ<br />2.1.3.3 จาวาสคริปต์ (Javascript)จาวาสคริปต์[11]เป็นสคริปต์ประเภทหนึ่งที่ทำงานแบบดำเนินงานทีละคำสั่ง เริ่มพัฒนาโดย Brendan Eich พนักงานบริษัทเน็ตสเคป โดยเริ่มแรกใช้ชื่อว่าโมคา ภายหลังได้เปลี่ยนชื่อเป็นไลฟ์สคริปต์ และเป็นจาวาสคริปต์ในปัจจุบันการทำงานของภาษาจาวาสคริปต์จะเกิดขึ้นบนเว็บบราวเซอร์ที่สนับสนุนจาวาสคริปต์ เรียกว่า Client-Side Script สามารถเก็บข้อมูลจากทางฝั่งผู้ใช้ได้ ในปัจจุบันเว็บบราวเซอร์ส่วนใหญ่รับรองภาษาจาวาสคริปต์แล้ว ดังนั้น ไม่ว่าผู้ใช้จะใช้เว็บบราวเซอร์อะไรก็สามารถแปลคำสั่งจาวาสคริปต์ได้ ภาษาจาวาสคริปต์มี Object ต่างๆ ให้เลือกใช้เพื่อดึงข้อมูลจากคอมพิวเตอร์ทางฝั่งของผู้ใช้ Object โดยการเรียกใช้ Object จะต้องเรียกไปตามลำดับขั้นดังนี้<br />Parent object<br />Child object<br />Child property<br />Child object <br />Event<br />Method()<br />Parent Object คือ window หรือ self<br />Child object ได้แก่ Location, Document, Screen, Navigator, Math เป็นต้น ส่วน Child Property, Child object, Event และ Method() จะของแต่ละ Child Object จะแตกต่างกันตามลักษณะการใช้งาน <br />ตัวอย่างเช่น window.document.title เป็นคำสั่งเรียกหัวข้อของหน้าเว็บนั้นๆ <br />window คือ Parent Object <br />document คือ Child object<br />title คือ Child property<br />จาวาสคริปต์ยังมี Object ที่เป็นประโยชน์อีกมากมาย เช่น<br />window.location เก็บข้อมูลรายละเอียดของหน้าเว็บในขณะนั้น เช่น โปรโตคอล, โฮสต์ เป็นต้น<br />window.screen เก็บข้อมูลที่เกี่ยวกับหน้าจอของผู้ใช้ เช่น ขนาดความกว้างและความยาวของหน้าจอ เป็นต้น<br />window.document เก็บข้อมูลเอกสารที่ผู้ใช้กำลังชม เช่น แหล่งที่มา(referrer), วันเวลาที่แก้ไขเอกสารครั้งสุดท้าย, สีพื้นหลัง, สีอักษรมาตรฐาน เป็นต้น<br />window.navigator เก็บข้อมูลบราวเซอร์ของผู้ใช้ เช่น ภาษาที่ใช้ในระบบปฏิบัติการ, ภาษาที่ใช้ในบราวเซอร์, โปรแกรมเสริมต่างๆ สามารถตรวจสอบได้ว่าเว็บบราวเซอร์สนับสนุนจาว่า, แฟลช หรือไม่<br />window.math ใช้ในการคำนวณ<br />window.pageXOffset และ window.pageYOffset คือค่าระยะที่ผู้ใช้เลื่อนแถบเลื่อน (Scroll bar) มีหน่วยเป็นพิกเซล<br />clientX และ client Y เป็น Event เก็บตำแหน่งของลูกศร (Cursor) ตรงจุดที่ผู้ใช้คลิก<br />ฯลฯ<br />แต่จาวาสคริปต์ก็มีข้อจำกัดคือ ไม่สามารถรับส่งข้อมูลกับคอมพิวเตอร์ส่วนกลางได้โดยตรง เราจึงไม่สามารถใช้ภาษาจาวาสคริปต์รับข้อมูลจากฝั่งผู้ใช้ไปเก็บใส่ฐานข้อมูลบนคอมพิวเตอร์ส่วนกลาง หรือ นำข้อมูลจากคอมพิวเตอร์ส่วนกลางมาแสดงบนหน้าเว็บได้ จำเป็นต้องอาศัยภาษาสคริปต์อื่นๆ ที่ทำงานบนคอมพิวเตอร์ส่วนกลาง(Server-Side Script) เช่น PHP, ASP แล้วแต่ว่าคอมพิวเตอร์ส่วนกลางจะสนับสนุนภาษาใด โดยจาวาสคริปต์จะติดต่อกับภาษาสคริปต์เหล่านี้ด้วยการส่งข้อมูลไปทางตัวแปร ใช้คำสั่ง window.location.href<br />ตัวอย่างเช่น window.location.href = \"
http://localhost/main.php?width=\"
+ width + \"
&height=\"
+ height; เป็นการสั่งให้ไปที่หน้าเว็บ main.php และส่งตัวแปร width และ height ไปยัง main.php ด้วย Method Get <br />2.2 ระบบใกล้เคียง<br />2.2.1 Google Maps<br />กูเกิลแม็พเป็นสถาปัตยกรรมหนึ่งของบริษัทกูเกิล ถูกผลิตออกมาให้อยู่ในรูปเว็บแอพพลิเคชัน ง่ายต่อการใช้งาน เนื่องจากเป็นเว็บแอพพลิเคชันที่เชื่อมต่อกับฐานข้อมูลของบริษัทกูเกิล ทำให้ข้อมูลภาพที่แสดงมาจากกูเกิลแม็พเป็นข้อมูลที่มีการอัพเดทอยู่เรื่อยๆ ลักษณะเด่นต่างๆของกูเกิลแม็พมีดังนี้<br />สามารถสืบค้น (search) สถานที่ที่ต้องการได้โดยการป้อนข้อความลงไป ตามรูปที่ 2.12 เป็นตัวอย่างการสืบค้นสถานที่ตามความต้องการของผู้ใช้ - 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
ไม่สามารถเลือกดูสภาพภูมิศาสตร์หรือสถานที่ต่างๆในรูปของวัตถุสามมิติ เพราะกูเกิลแม็พเป็นแอพพลิเคชันที่แสดงผลออกมาเป็นภาพ2.2.2 GoogleEarth<br />กูเกิลเอิร์ธ[5] เป็นซอฟต์แวร์สำเร็จรูปที่พัฒนาโดยบริษัทกูเกิล สำหรับใช้กับคอมพิวเตอร์ส่วนบุคคล สามารถดูภาพถ่ายทางอากาศ แผนที่ เส้นทางการเดินทาง และผังเมืองต่างๆ รวมทั้งระบบ GIS ในรูปแบบ 3 มิติได้ด้วยตามรูปที่ 2.14<br />รูปที่ 2.14 ภาพถ่ายจากโปรแกรมกูเกิลเอิร์ธที่เป็นภาพสามมิติ<br />กูเกิลเอิร์ธจะใช้ข้อมูลจากภาพถ่ายทางอากาศของ U.S. public domain และภาพถ่ายดาวเทียมของคีย์โฮล ทำให้ภาพที่ออกมาเป็นภาพเสมือนจริงและสามารถแสดงผลเป็นภาพสามมิติได้ อีกทั้งยังสามารถดูตำแหน่งพิกัดจุดของสถานที่นั้นๆได้อีกด้วย <br />ในปัจจุบันกูเกิลเอิร์ธได้ถูกพัฒนาออกมาหลายเวอร์ชันนอกจากฟรีเวอร์ชัน ได้แก่<br />กูเกิลเอิร์ธพลัส เพิ่มเติมความสามารถในการทำงานร่วมกับ GPS รับปรึกษาทางโทรศัพท์ และอ่านข้อมูลในรูปแบบ CSV ได้ - 47.
กูเกิลเอิร์ธโปร เป็นเวอร์ชันสูงสุดของกูเกิลเอิร์ธ นิยมใช้กับงานทางธุรกิจใช้สร้างเป็นวีดีโอได้ หาค่าของพื้นที่ได้ และนำข้อมูลจาก GIS มาใช้ได้ด้วยเนื่องจากกูเกิลเอิร์ธเป็นโปรแกรมที่พัฒนาเพื่อใช้กับคอมพิวเตอร์ส่วนบุคคล ทำให้ไม่จำเป็นต้องมีการเชื่อมต่อกับอินเตอร์เน็ทเพื่อรับข้อมูลทางฐานข้อมูลของบริษัทกูเกิล ทำให้มีความจำเป็นต้องอัพเดทเวอร์ชั่นบ่อยๆ เพื่อเพิ่มเติมข้อมูลที่เวอร์ชันเก่าไม่มี<br />2.2.3 ตารางเปรียบเทียบความสามารถของระบบที่ใช้ดูสภาพภูมิศาสตร์<br />เนื่องจากความสามารถ (feature) ของแต่ละระบบหรือแต่ละโปรแกรมมีความแตกต่างกัน จึงควรที่จะพิจารณาดูความสามารถของระบบต่างๆ ว่ามีความเหมือนหรือแตกต่างกันอย่างไรบ้าง เพื่อที่จะได้เลือกใช้ให้ตรงกับความต้องการของผู้ใช้ ซึ่งผลของการเปรียบเทียบขีดความสามารถจะเป็นไปตามตาราง 2.2 <br />Feature \ ToolGoogle MapsGoogle Earthระบบค้นหาสถานที่ระบบแสดงภาพสามมิติระบบแสดงภาพตามลำดับชั้นหาเส้นทางจากจุดหนึ่งไปยังอีกจุดหนึ่งหาระยะทางสั้นที่สุดจากจุดหนึ่งไปยังอีกจุดหนึ่งรูปภาพของสถานที่ตำแหน่งหรือพิกัดจุดGPS SystemGIS Systemการอัพเดทข้อมูลความต้องการการเชื่อมต่อกับอินเตอร์เน็ท<br />ตารางที่ 2.2 ตารางเปรียบเทียบความสามารถระหว่างกูเกิลแม็พและกูเกิลเอิร์ธ<br />บทที่ 3 การออกแบบระบบโดยรวม<br />3.1 ระบบโดยรวม<br />รูปที่ 3.1 ภาพรวมและการทำงานคร่าวๆของระบบ<br />การทำงานของระบบตั้งแต่เริ่มต้นจนถึงขั้นตอนการแสดงผลโดยรวม จะแบ่งออกเป็น 4 ส่วนตามรูปที่ 3.1 ดังนี้ส่วนที่ 1 เป็นระบบสำหรับรับข้อมูลนำเข้าจากผู้ใช้ โดยข้อมูลนำเข้าที่ระบบต้องการแบ่งออกได้เป็น 2 ส่วน ดังนี้1. ชื่อสถานที่หรือจุดที่ผู้ใช้ต้องการค้นหา ซึ่งผู้ใช้สามารถเลือกได้ทั้งใส่ชื่อสถานที่เพื่อค้นหา หรือกำหนดจุดที่ต้องการพิจารณาเองก็ได้2. กำหนดขอบเขตพื้นที่และระยะที่ต้องการวิเคราะห์และพิจารณา เพื่อดูว่ามีสถานที่สำคัญใดบ้างอยู่ภายในระยะที่ผู้ใช้กำหนดส่วนที่ 2 วิเคราะห์ข้อมูลโดยใช้โปรแกรม Weka โดยเริ่มจากรวบรวมข้อมูลจากที่ต่างๆ ข้อมูลที่รวบรวมได้ ได้แก่ ข้อมูลเชิงจำนวนของสถานที่สำคัญต่างๆ ข้อมูลเชิงภูมิศาสตร์ของสถานที่สำคัญต่างๆ และข้อมูลคุณภาพชีวิตของตำบลต่างๆในจังหวัดเชียงใหม่ เป็นต้น หลังจากรวบรวมข้อมูลได้แล้วก็นำมาเข้า Weka Module โดยเลือกใช้วิธีการแบ่งกลุ่มข้อมูลในการวิเคราะห์ข้อมูล<br />ส่วนที่ 3 นำข้อมูลนำเข้าที่ได้รับจากผู้ใช้มาวิเคราะห์ร่วมกับข้อมูลทั้งหมดจากในฐานข้อมูล พร้อมทั้งคำนวณค่าน้ำหนักหรือค่าระยะห่างเพื่อนำไปใช้ในการตัดสินใจเพื่อเลือกกลุ่มข้อมูลที่ดีที่สุดส่วนที่ 4 เป็นส่วนของการแสดงผลให้กับผู้ใช้ โดยจะแสดงเป็นแผนที่กูเกิลแม็พบนหน้าเว็บแอพพลิเคชัน สามารถเลือกดูสถานที่ต่างๆทั้งหมดที่อยู่ภายในกรอบหรือขอบเขตที่พิจารณาได้ อีกทั้งผู้ใช้สามารถเลือกดูได้ว่ากลุ่มสถานที่ใดเป็นกลุ่มที่เหมาะสมหรือและถือว่ามีโอกาสประสบความสำเร็จสูงในการสร้างที่พัก พร้อมทั้งมีกราฟแสดงข้อมูลและรายละเอียดต่างๆของสถานที่ที่เหมาะสมสำหรับสร้างที่พักให้ผู้ใช้ได้เลือกดูอีกด้วย3.2 ขั้นตอนการทำงาน<br />3.2.1 ขั้นตอนการค้นหาข้อมูล1. ใช้กูเกิลแม็พไล่เก็บข้อมูลตำแหน่งละติจูดและลองติจูด พร้อมทั้งข้อมูลเชิงภูมิศาสตร์อันได้แก่ ที่อยู่ ตำบลและอำเภอที่สถานที่นั้นตั้งอยู่ของสถานที่ต่างๆเอาไว้ สถานที่ที่ต้องการเก็บข้อมูลมีดังนี้- โรงพยาบาลทั้งหมดที่อยู่ในจังหวัดเชียงใหม่- มหาวิทยาลัยรัฐ มหาวิทยาลัยเอกชน และมหาวิทยาลัยราชภัฎต่างๆที่อยู่ในจังหวัดเชียงใหม่- โรงเรียนต่างๆที่อยู่ในจังหวัดเชียงใหม่หมายเหตุ ใช้คลาส GPoint , GLatLng ในการหาตำแหน่งพิกัดจุดของแต่ละสถานที่ รูปที่ 3.2 ตัวอย่างการหาตำแหน่งพิกัดจุดของสถานที่2. นำชื่อและที่อยู่ของสถานที่ที่หาได้จากกูเกิลแม็พมาหาข้อมูลและรายละเอียดของแต่ละสถานที่ โดยข้อมูลส่วนใหญ่ที่หาได้นั้นจะเป็นข้อมูลเชิงจำนวน ดังนี้2.1 ข้อมูลเชิงจำนวนของโรงพยาบาล มีข้อมูลที่ต้องนำมาใช้วิเคราะห์ดังต่อไปนี้ - จำนวนหมอทั้งหมดของโรงพยาบาล - จำนวนเตียงผู้ป่วยทั้งหมดของโรงพยาบาล - จำนวนห้องพักทั้งหมดของโรงพยาบาล2.2 ข้อมูลเชิงจำนวนของมหาวิทยาลัย มีข้อมูลที่ต้องนำมาใช้วิเคราะห์ดังต่อไปนี้ - จำนวนของคณะที่เปิดให้นิสิตลงทะเบียนทั้งหมดของมหาวิทยาลัย - จำนวนของภาควิชาทั้งหมดของมหาวิทยาลัย - จำนวนห้องปฏิบัติการทั้งหมดของมหาวิทยาลัย - จำนวนนิสิตหรือนักศึกษาทั้งหมดของมหาวิทยาลัย - จำนวนอาจารย์ที่จบการศึกษาระดับปริญญาตรีของมหาวิทยาลัย - จำนวนอาจารย์ที่จบการศึกษาระดับปริญญาโทของมหาวิทยาลัย - จำนวนอาจารย์ที่จบการศึกษาระดับปริญญาเอกของมหาวิทยาลัย2.3 ข้อมูลเชิงจำนวนของโรงเรียน มีข้อมูลที่ต้องนำมาใช้วิเคราะห์ดังต่อไปนี้ - จำนวนนักเรียนทั้งหมดภายในโรงเรียน - จำนวนอาจารย์ทั้งหมดภายในโรงเรียน - จำนวนห้องเรียนทั้งหมดภายในโรงเรียนซึ่อข้อมูลเชิงจำนวนทั้งหมดที่หาได้จะถูกนำไปใช้ในการแบ่งกลุ่มข้อมูลต่อไป <br />3.2.2 ขั้นตอนการออกแบบและเก็บข้อมูลลงในฐานข้อมูลฐานข้อมูลที่นำข้อมูลมาวิเคราะห์สามารถแบ่งออกได้เป็น 3 ส่วน ได้แก่3.2.2.1. ข้อมูลที่ได้จากการใช้ Google Maps และการสืบค้นจาก search engine เป็นข้อมูลเชิงจำนวนและข้อมูลเชิงภูมิศาสตร์ทั้งหมดที่เกี่ยวข้องกับสถานที่ต่างๆ ดังนี้ - Hospital เป็นตารางสำหรับเก็บข้อมูลของโรงพยาบาลและรายละเอียดของโรงพยาบาลภายในจังหวัดเชียงใหม่<br />AttributeTypeDetailHospital_idint เป็น Primary Key ของตารางHospital_name_thvarchar(60)ชื่อโรงพยาบาลเป็นภาษาไทยHospital_name_engvarchar(60)ชื่อโรงพยาบาลเป็นภาษาอังกฤษHospital_addressvarchar(20)ที่อยู่ของโรงพยาบาลHospital_moovarchar(10)หมู่ที่โรงพยาบาลตั้งอยู่Hospital_roadvarchar(60)ถนนที่โรงพยาบาลตั้งอยู่Hospital_tambolvarchar(60)ตำบลที่โรงพยาบาลตั้งอยู่Hospital_ampurvarchar(60)อำเภอที่โรงพยาบาลตั้งอยู่Hospital_latdoubleตำแหน่งละติจูดที่โรงพยาบาลตั้งอยู่Hospital_lngdoubleตำแหน่งลองติจูดที่โรงพยาบาลต้องอยู่Num_of _doctorsintจำนวนแพทย์ทั้งหมดที่มีในโรงพยาบาลNum_of_roomsintจำนวนห้องพักรักษาตัวของคนไข้ทั้งหมดที่มีในโรงพยาบาลNum_of_bedsintจำนวนเตียงผู้ป่วยทั้งหมดที่มีในโรงพยาบาลTechnologyintตัวบ่งชี้ว่ามีเทคโนโลยีการรักษาอยู่ในขั้นสูงหรือไม่ (1=ใช่,0=ไม่ใช่)<br />- University เป็นตารางสำหรับเก็บข้อมูลของมหาวิทยาลัยต่างๆที่อยู่ในจังหวัดเชียงใหม่ รวมทั้งรายละเอียดสำคัญAttributeTypeDetailuni_idint เป็น Primary Key ของตารางuni_name_thVarchar(60)ชื่อมหาวิทยาลัยเป็นภาษาไทยuni _name_engvarchar(60)ชื่อมหาวิทยาลัยเป็นภาษาอังกฤษuni _addressvarchar(20)ที่อยู่ของมหาวิทยาลัยuni _moovarchar(10)หมู่ที่มหาวิทยาลัยตั้งอยู่uni _roadvarchar(60)ถนนที่มหาวิทยาลัยตั้งอยู่uni _tumbolvarchar(60)ตำบลที่มหาวิทยาลัยตั้งอยู่uni _amphorvarchar(60)อำเภอที่มหาวิทยาลัยตั้งอยู่uni _latdoubleตำแหน่งละติจูดที่มหาวิทยาลัยตั้งอยู่uni _lngdoubleตำแหน่งลองติจูดที่มหาวิทยาลัยตั้งอยู่university_typeintประเภทของมหาวิทยาลัย(มหาวิทยาลัยรัฐ = 3, มหาวิทยาลัยเอกชน = 2,มหาวิทยาลัยราชภัฎ = 1)Nums_of_facultyintจำนวนคณะทั้งหมดของมหาวิทยาลัยNums_of_majorintจำนวนภาควิชาหรือสาขาทั้งหมดของมหาวิทยาลัยNums_of_labintจำนวนห้องปฏิบัติการทั้งหมดของมหาวิทยาลัยNums_of_studentintจำนวนนิสิตนักศึกษาทั้งหมดของมหาวิทยาลัยTreeintจำนวนอาจารย์ที่จบการศึกษาระดับปริญญาตรีToeintจำนวนอาจารย์ที่จบการศึกษาระดับปริญญาโทEakintจำนวนอาจารย์ที่จบการศึกษาระดับปริญญาเอกAwardintตัวบ่งชี้ว่าเคยได้รับรางวัลหรือมีชื่อเสียงหรือไม่ (เคย = 1, ไม่เคย = 0)<br />- School เป็นตารางที่เก็บข้อมูลและรายละเอียดต่างๆของโรงเรียนที่อยู่ในจังหวัดเชียงใหม่AttributeTypeDetailschool_idint เป็น Primary Key ของตารางschool _name_thvarchar(60)ชื่อโรงเรียนเป็นภาษาไทยschool_name_engvarchar(60)ชื่อโรงเรียนเป็นภาษาอังกฤษschool _addressvarchar(30)ที่อยู่ของโรงเรียนschool _moovarchar(10)หมู่ที่โรงเรียนตั้งอยู่school _roadvarchar(60)ถนนที่โรงเรียนตั้งอยู่school _tumbolvarchar(60)ตำบลที่โรงเรียนตั้งอยู่school _amphorvarchar(60)อำเภอที่โรงเรียนตั้งอยู่school _latdoubleตำแหน่งละติจูดที่โรงเรียนตั้งอยู่school _lngdoubleตำแหน่งลองติจูดที่โรงเรียนต้องอยู่Nums_of_studentintจำนวนนักเรียนทั้งหมดภายในโรงเรียนNums_of_teacherintจำนวนอาจารย์ทั้งหมดภายในโรงเรียนNums_of_roomintจำนวนห้องเรียนทั้งหมดภายในโรงเรียนSchool_typeintประเภทของโรงเรียน (โรงเรียนสาธิต = 3,โรงเรียนรัฐ = 2,โรงเรียนเอกชน = 1)awardintตัวบ่งชี้ว่าเคยได้รับรางวัลหรือมีชื่อเสียงหรือไม่ (เคย = 1, ไม่เคย = 0)<br />3.2.2.2. ข้อมูลเชิงจำนวนและที่อยู่จากกระทรวงมหาดไทย เป็นข้อมูลครัวเรือนของประชากรในจังหวัดเชียงใหม่ เหมาะสำหรับนำมาวิเคราะห์สภาพความเป็นอยู่และสภาพสังคมของประชากร มีรายละเอียดดังนี้- Amphor เป็นตารางที่เก็บรหัสอำเภอและชื่ออำเภอ - 48.
- 49.
- 50.
- 51.
- 52.
AttributeTypeDetailTamidvarchar(6)รหัสตำบลYearintปีล่าสุดที่ทำการรวบรวมข้อมูลได้NumHHintจำนวนบ้านเรือนNumMemberintจำนวนประชากรQ03intเด็กที่อายุไม่เกิน1 ปีเต็มมีน้ำหนักแรกเกิดไม่ต่ำกว่า 2,500กรัมQ04intเด็กที่อายุไม่เกิน 1 ปีเต็ม ได้รับวัคซีนครบQ06intเด็กที่มีอายุไม่เกิน 5 ปี เจริญเติบโตตามเกณฑ์มาตรฐานQ07intเด็กอายุระหว่าง 6 ถึง15 ปี เจริญเติบโตตามเกณฑ์มาตรฐานQ08intเด็กอายุระหว่าง 6 ถึง 12 ปี ได้รับวัคซีนครบQ11intคนอายุตั้งแต่ 35 ปีขึ้นไปได้รับการตรวจสุขภาพทั่วไปประจำปีQ12intครัวเรือนมีความมั่นคงในที่อยู่อาศัย และบ้านมีสภาพคงทนถาวรQ13intครัวเรือนมีน้ำสะอาดสำหรับดื่มและบริโภคเพียงพอตลอดปี อย่างน้อยคนละ 5 ลิตรต่อวันQ14intครัวเรือนมีน้ำใช้เพียงพอตลอดปี อย่างน้อยคนละ 45 ลิตรQ16intครัวเรือนถูกรบกวนจากเสียง ความสั่นสะเทือน ฝุ่นละออง กลิ่นQ17intครัวเรือนได้มีการป้องกันอุบัติภัยอย่างถูกวิธีด้วยQ19intครัวเรือนที่มีลักษณะเป็นครอบครัวอบอุ่นQ20intเด็กอายุระหว่าง 3 ถึง 5 ปีเต็ม ได้รับการเลี้ยงดูเตรียมความพร้อมQ21intเด็กอายุระหว่าง 6 ถึง 15 ปี ได้เรียนชั้น ป.1 ถึง ม.3Q22intเด็กจบชั้น ม.3 ได้เรียนต่อชั้น ม.4 หรือเทียบเท่าQ24intคนอายุระหว่าง 15 ถึง 60 ปีเต็ม อ่านออกและเขียนภาษาไทยได้Q26intคนอายุระหว่าง 18 ถึง 60 ปี มีการประกอบอาชีพและมีรายได้Q27intคนในครัวเรือนมีรายได้เฉลี่ยไม่ต่ำกว่าคนละ 20,000 บาทQ27_totalincomeintรายได้ทั้งหมดของทุกคนในครัวเรือนQ29intคนไม่ติดสุราQ30intคนไม่สูบบุหรี่Q32intคนสูงอายุได้รับการดูแลเอาใจใส่จากคนในครัวเรือน - 53.
3.2.2.3 ข้อมูลที่ได้จากการแบ่งกลุ่มข้อมูลโดยใช้วิธีการแบ่งกลุ่มข้อมูล (DataClustering Algorithm)- Hospital clustering เป็นตารางและข้อมูลเชิงจำนวนของโรงพยาบาลในเชียงใหม่ พร้อมทั้งบ่งบอกด้วยว่าโรงพยาบาลที่สนใจอยู่นั้นจัดอยู่ในกลุ่มใดAttributeTypeDetailHospital_name_thvarchar(60)ชื่อโรงพยาบาลเป็นภาษาไทยHospital_name_engvarchar(60)ชื่อโรงพยาบาลเป็นภาษาอังกฤษNum_of _doctorsIntจำนวนแพทย์ทั้งหมดที่มีในโรงพยาบาลNum_of_roomsIntจำนวนห้องพักรักษาตัวของคนไข้ทั้งหมดที่มีในโรงพยาบาลNum_of_bedsIntจำนวนเตียงผู้ป่วยทั้งหมดที่มีในโรงพยาบาลTechnologyIntตัวบ่งชี้ว่ามีเทคโนโลยีการรักษาอยู่ในขั้นสูงหรือไม่ (1=ใช่,0=ไม่ใช่)Clustervarchar(8)ลำดับของกลุ่มที่โรงพยาบาลอยู่<br />- University clustering เป็นตารางและข้อมูลเชิงจำนวนของมหาวิทยาลัยในเชียงใหม่ พร้อมทั้งบ่งบอกด้วยว่ามหาวิทยาลัยที่สนใจอยู่นั้นจัดอยู่ในกลุ่มใดAttributeTypeDetailuni_name_thvarchar(60)ชื่อมหาวิทยาลัยเป็นภาษาไทยuni _name_engvarchar(60)ชื่อมหาวิทยาลัยเป็นภาษาอังกฤษuniversity_typeIntประเภทของมหาวิทยาลัย(มหาวิทยาลัยรัฐ = 3, มหาวิทยาลัยเอกชน = 2,มหาวิทยาลัยราชภัฎ = 1)Nums_of_facultyIntจำนวนคณะทั้งหมดของมหาวิทยาลัยNums_of_majorIntจำนวนภาควิชาหรือสาขาทั้งหมดของมหาวิทยาลัยNums_of_labIntจำนวนห้องปฏิบัติการทั้งหมดของมหาวิทยาลัยNums_of_studentIntจำนวนนิสิตนักศึกษาทั้งหมดของมหาวิทยาลัยTreeIntจำนวนอาจารย์ที่จบการศึกษาระดับปริญญาตรีToeIntจำนวนอาจารย์ที่จบการศึกษาระดับปริญญาโทEakIntจำนวนอาจารย์ที่จบการศึกษาระดับปริญญาเอกAwardIntตัวบ่งชี้ว่าเคยได้รับรางวัลหรือมีชื่อเสียงหรือไม่ (เคย = 1, ไม่เคย = 0)ClusterIntลำดับของกลุ่มที่มหาวิทยาลัยอยู่<br />- School clustering เป็นตารางและข้อมูลเชิงจำนวนของโรงเรียนในเชียงใหม่ พร้อมทั้งบ่งบอกด้วยว่าโรงเรียนที่สนใจอยู่นั้นจัดอยู่ในกลุ่มใดAttributeTypeDetailschool _name_thvarchar(60)ชื่อโรงเรียนเป็นภาษาไทยschool_name_engvarchar(60)ชื่อโรงเรียนเป็นภาษาอังกฤษNums_of_studentIntจำนวนนักเรียนทั้งหมดภายในโรงเรียนNums_of_teacherintจำนวนอาจารย์ทั้งหมดภายในโรงเรียนNums_of_roomIntจำนวนห้องเรียนทั้งหมดภายในโรงเรียนSchool_typeIntประเภทของโรงเรียน (โรงเรียนสาธิต = 3,โรงเรียนรัฐ = 2,โรงเรียนเอกชน = 1)AwardIntตัวบ่งชี้ว่าเคยได้รับรางวัลหรือมีชื่อเสียงหรือไม่ (เคย = 1, ไม่เคย = 0)ClusterIntลำดับของกลุ่มที่โรงเรียนอยู่<br />- Training data เป็นตารางที่นำข้อมูลเชิงจำนวนที่เป็นข้อมูลคุณภาพชีวิตมารวมกับข้อมูลที่ได้จากการจัดกลุ่มข้อมูล - 54.
- 55.
- Training DataClustering เป็นตารางที่เก็บข้อมูลสถานที่ที่ถูกจัดกลุ่มโดยคิดรวมกับสถานที่ทั้งหมด - 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
ใช้สำหรับแสดงผลข้อมูลและรายละเอียดต่างๆ ออกมาให้อยู่ในรูปกราฟบทที่ 4การพัฒนาระบบ<br />4.1 การพัฒนาระบบการแบ่งกลุ่มข้อมูล4.1.1 การแบ่งกลุ่มข้อมูลตามประเภทของสถานที่สำคัญนำข้อมูลเชิงจำนวนของสถานที่สำคัญต่างๆ ดังนี้ มาทำการแบ่งกลุ่มข้อมูล- โรงพยาบาล- มหาวิทยาลัย- โรงเรียนการแบ่งกลุ่มข้อมูลในที่นี้ จะเลือกใช้วิธีแบ่งกลุ่มข้อมูลที่เรียกว่า K-Means Algorithm ซึ่งเป็นการแบ่งกลุ่มข้อมูลตามจำนวนกลุ่มที่ผู้ใช้ต้องการ เช่น หากผู้ใช้ต้องการแบ่งข้อมูลออกเป็นสามกลุ่ม ก็ให้เลือกค่า K เป็น 3 หรือหากผู้ใช้ต้องการแบ่งข้อมูลออกเป็นสิบกลุ่ม ก็ให้เลือกค่า K เป็น 10 เป็นต้น โดยค่า K หรือจำนวนกลุ่มที่เลือกควรมีความเหมาะสมและพิจารณาแล้วว่า หากเลือกจำนวนกลุ่มดังที่คาดไว้แล้วต้องมีจำนวนสมาชิกข้อมูลที่อยู่ในแต่ละกลุ่มไม่น้อยหรือมากเกินไปด้วยซึ่งการแบ่งกลุ่มข้อมูลในที่นี้จะเลือกใช้โปรแกรม Weka ซึ่งเป็น Data Mining Tools ที่สามารถใช้วิธีการแบ่งกลุ่มได้ เพื่อความสะดวกในการแบ่งกลุ่มที่รวดเร็ว โดยหลังจากที่เปิดโปรแกรม Weka มาแล้วก็ให้เลือกหัวข้อแบ่งกลุ่มข้อมูล หรือ Cluster ดังรูปที่ 4.1 รูปที่ 4.1 แสดงการเลือกใช้วิธีการแบ่งกลุ่มข้อมูลโดยใช้โปรแกรม Wekaหลังจากเลือกวิธีการแบ่งกลุ่มข้อมูลแล้วก็จะมีหน้าต่างสำหรับเลือกวิธีการแบ่งกลุ่ม ซึ่งจะมีอยู่หลากหลายประเภท แต่ในที่นี้จะเลือกใช้ Simple K-Means หรือ K-Means Algorithm หลังจากเลือกแล้วโปรแกรมก็จะให้ผู้ใช้กำหนดค่าจำนวนกลุ่มหรือค่า K เพื่อบ่งบอกว่าจะให้โปรแกรมแบ่งกลุ่มออกเป็นกี่กลุ่ม ดังรูปที่ 4.2 รูปที่ 4.2 แสดงการเลือกจำนวนกลุ่มในการแบ่งกลุ่มข้อมูลด้วยวิธี Simple K-Meansหลังจากกำหนดจำนวนกลุ่มตามความต้องการแล้ว โปรแกรม Weka จะระบุค่ากลาง (Mean) และค่าเบี่ยงเบนมาตรฐาน (Sd) ออกมาแสดงให้ผู้ใช้ทราบว่าแต่ละกลุ่มที่ผ่านการแบ่งกลุ่มนั้น มีจุดกึ่งกลางของกลุ่มอยู่ที่ค่าใดบ้างในแต่ละแอททริบิวต์ และมีขอบเขตของกลุ่มที่ค่าใด โดยขอบเขตของกลุ่มนั้นสามารถได้จากค่า Sd ที่โปรแกรมแสดงออกมา ดังรูปที่ 4.3 รูปที่ 4.3 แสดงรายละเอียดค่าต่างๆของแต่ละกลุ่มที่ได้จากการแบ่งกลุ่มข้อมูลเนื่องจากการกำหนดจำนวนกลุ่มนั้นผู้ใช้ต้องทำการกำหนดเอง ทำให้ยากต่อการคาดเดาว่าจำนวนกลุ่มเท่าใดจึงจะเหมาะสมสำหรับการแบ่งกลุ่ม ซึ่งผู้ใช้สามารถสังเกตุได้จากค่า sum square errors ซึ่งเป็นค่าที่บ่งบอกว่ามีค่า error หรือขาดความแม่นยำเท่าใด ในที่นี้ในการกำหนดจำนวนกลุ่มแต่ละครั้ง ควรกำหนดไว้ว่าไม่ควรมีค่า sum square errors เกินกว่า 10ทำการแบ่งกลุ่มข้อมูลเช่นนี้ต่อไปเรื่อยๆจนครบตามประเภทของสถานที่ จะได้กลุ่มของแต่ละสถานที่ออกมา4.1.2 การแบ่งกลุ่มข้อมูลขั้นที่สองโดยแบ่งกลุ่มข้อมูลจากสถานที่ทั้งหมดนำข้อมูลที่ได้จากการแบ่งกลุ่มของสถานที่สำคัญต่างๆมาแบ่งกลุ่มรวมกับข้อมูลคุณภาพชีวิต (ตาราง Quality) โดยกำหนดว่าข้อมูลคุณภาพชีวิตที่เลือกนำมาใช้ของแต่ละสถานที่ต้องเป็นข้อมูลคุณภาพชีวิตของตำบลที่สถานที่นั้นๆตั้งอยู่วิธีการแบ่งกลุ่มให้ทำเช่นเดียวกับหัวข้อ 4.1.1 ซึ่งหลังจากแบ่งกลุ่มออกมาแล้วจะได้ผลลัพธ์ออกมาว่าแต่ละสถานที่สำคัญที่นำมาจัดกลุ่มนั้นถูกจัดกลุ่มให้อยู่กลุ่มใด เพื่อที่จะนำไปพิจารณาต่อว่าหากมีข้อมูลนำเข้าที่ไม่รู้จักเข้ามา (Unssen data) ข้อมูลนั้นควรถูกจัดให้อยู่ภายในกลุ่มใดเมื่อเทียบกับข้อมูลที่มีอยู่ (Training Data)4.2 การนำข้อมูลที่ได้จากการวิเคราะห์มาใช้การบันทึกข้อมูลที่ได้รับจากการแบ่งกลุ่มเป็นการบันทึกรายละเอียดต่างๆของสมาชิกข้อมูลในแต่ละกลุ่มว่าสมาชิกแต่ละตัวมีแอตทริบิวต์เป็นเท่าใดบ้าง และสุดท้ายแล้วถูกจัดให้อยู่ในกลุ่มใด โดยข้อมูลที่ถูกบันทึกนี้จะมีชนิดของไฟล์เป็น .arff โดยหลังจากทำการแบ่งกลุ่มข้อมูลตามรูป 4.3 แล้ว ก็ให้คลิกขวาแล้วเลือก Visualize cluster assignment จะได้ผลลัพธ์เป็นหน้าต่างดังรูปที่ 4.4 รูปที่ 4.4 แสดงการ์ฟของกลุ่มข้อมูลที่ถูกแบ่งหลังจากได้การ์ฟมาให้กดปุ่ม save บนหน้าต่างดังกล่าว ซึ่งจะได้ไฟล์ผลลัพธ์เป็นชนิดไฟล์ .arff โดยหลังจากเปิดไฟล์ดังกล่าวแล้วจะสามารถวิเคราะห์ออกมาได้ว่า สมาชิกข้อมูลแต่ละตัวถูกจัดให้อยู่ในกลุ่มใดบ้าง ดังรูปที่ 4.5รูปที่ 4.5 แสดงรายละเอียดต่างๆของสมาชิกแต่ละตัวที่ถูกแบ่งกลุ่มหมายเหตุ- @relation คือ ชื่อไฟล์ของข้อมูลที่นำมาใช้แบ่งกลุ่ม- @attribute คือ ชื่อของแต่ละแอตทริบิวต์ของข้อมูล และชนิดข้อมูล เช่น Numeric คือ แอตทริบิวต์ที่มีค่าเป็นตัวเลข เป็นต้น- @data คือ ข้อมูลรวมทุกแถวที่นำมาแบ่งกลุ่ม พร้อมทั้งแสดงว่าแถวใดถูกจัดให้อยู่ในกลุ่มใด4.3 การพัฒนาแอพพลิเคชันบนหน้าเว็บ4.3.1 การสร้างแผนที่กูเกิลแม็พเนื่องจากบริษัทกูเกิลมี API หรือ Application Programming Interface ของกูเกิลแม็พอยู่แล้ว จึงทำให้สะดวกต่อการนำมาพัฒนาต่อ โดยสามารถพัฒนาแผนที่กูเกิลแม็พได้ดังนี้- สร้าง Div Element ขึ้นมาหนึ่งตัว ซึ่ง ณ ที่นี้ให้มีค่า id เป็น map_canvas โดยโปรแกรมกูเกิลแม็พมีข้อกำหนดว่าต้องมีการเรียก Div Element ขึ้นมาหนึ่งตัวเป็นอย่างน้อยเสมอเพื่อใช้ในการจองพื้นที่สำหรับสร้างแอพพลิเคชันแผนที่บนพื้นที่นั้น- ใช้คลาส GBrowserIsCompatible() เพื่อตรวจสอบว่าเว็บบราวน์เซอร์ที่ใช้อยู่นั้นเหมาะสมหรือ support กับ API ของกูเกิลแม็พหรือไม่ หากสามารถใช้ได้ก็จะ return true ออกมาเพื่อบ่งบอกว่าผ่านการตรวจสอบแล้วว่าสามารถนำมาสร้างแผนที่ได้- ใช้คลาส GLatLng ในการกำหนดที่ตั้งของจุดที่กำหนด โดยคลาสนี้ต้องมีการกำหนดพารามิเตอร์เป็นตำแหน่งละติจูดและตำแหน่งลองติจูดที่แน่นอนทุกครั้งที่มีการเรียกใช้คลาส ตัวอย่างเช่น new GLatLng(18.8056647,98.986926) เป็นต้น- ใช้คลาส GMarker ในการแสดงไอคอนที่ตั้ง เพื่อดูว่าจุดที่ผู้ใช้สนใจอยู่นั้นอยู่ ณ จุดใดบนแอพพลิเคชันแผนที่- ใช้คลาส GClientGeocoder ในการแสดงผลรายละเอียดอื่นๆบนแอพพลิเคชันแผนที่ ซึ่งคลาสนี้จะทำให้สามารถดูรายละเอียดแผนที่ได้เหมือนกับการใช้ดาวเทียมสำรวจ ทำให้มองเห็นวัตถุได้เสมือนกับการใช้ดาวเทียมจริง แทนที่จะเห็นเพียงแค่เลเยอร์ของกูเกิลแม็พปกติเท่านั้น โดยจะแบ่งออกได้เป็น 3 ระดับ ดังนี้1. Map คือเลเยอร์ที่แสดงผลออกมาเสมือนแผนที่ปกติ คือจะมีเพียงแค่เส้นของถนน ภูมิประเทศและตัวอักษรบ่งบอกสถานที่หรือถนนเท่านั้น แต่จะมีความพิเศษที่สามารถมองหาพื้นที่สำคัญๆได้อย่างชัดเจน เช่น ตึกใหญ่ๆ สถานทีรถไฟฟ้า โรงพยาบาล โรงเรียน เป็นต้น2. Satellite คือเลเยอร์ที่แสดงผลเปรียบเสมือนการใช้ดาวเทียมส่องลงมา ทำให้มองเห็นรายละเอียดต่างๆรอบด้านมากขึ้น เช่น ต้นไม้ ภูเขา ตึก เป็นต้น เหมาะกับบุคคลที่ต้องการสำรวจสภาพต่างๆโดยรอบอย่างละเอียด ดังรูปที่ 4.6 รูปที่ 4.6 แสดงแอพพลิเคชันแผนที่ด้วยการมองแบบ Satellite3. Terrain คือเลเยอร์ที่แสดงผลออกมาให้มีความชัดเจนในแง่ของการเดินทาง โดยจะมีความละเอียดค่อนข้างมากในเรื่องของการดู ตรอก ซอก หรือซอยต่างๆ ดังรูปที่ 4.7รูปที่ 4.7 แสดงแอพพลิเคชันแผนที่ด้วยการมองแบบ Terrain- ใช้คลาส GSmallMapControl เพื่อซูมหาระดับความใกล้หรือไกลในการมองแอพพลิเคชันแผนที่ได้ มีประโยชน์มากสำหรับการซูมเข้าใกล้เพื่อดูรายละเอียดโดยรอบ สังเกตุระดับความใกล้หรือไกลได้จากแถบเลื่อนดังรูปที่ 4.8 รูปที่ 4.8 แสดงแถบเลื่อนเพื่อเลื่อนดูระยะความใกล้หรือความไกลของแผนที่ซึ่งหลังจากสร้างแอพพลิเคชันแผนที่ออกมาแล้ว จะได้ผลลัพธ์ดังรูปที่ 4.9รูปที่ 4.9 แสดงตัวอย่างแอพพลิเคชันแผนที่บนหน้าเว็บ<br />4.3.2 การพัฒนาระบบการค้นหาสถานที่ระบบการค้นหาสถานที่เป็นระบบที่ผู้ใช้สามารถเลือกจุดที่สนใจตามความพอใจของผู้ใช้ได้ โดยสามารถแบ่งการค้นหาออกได้เป็น 2 ประเภท คือ4.3.2.1 การค้นหาสถานที่โดยใช้ชื่อสถานที่ในการค้นหาเป็นระบบที่ให้ผู้ใช้กรอกชื่อสถานที่เพื่อค้นหาสถานที่ตามชื่อที่ได้กรอกลงไป มีลำดับการพัฒนาดังนี้- สร้าง textbox ขึ้นมาเพื่อรองรับการกรอกข้อมูลนำเข้าจากผู้ใช้ โดย text ที่ผู้ใช้ป้อนเข้าไปจะถูกนำไปเก็บไว้ในตัวแปร address- สร้างตัวแปร map ขึ้นมาหนึ่งตัวและกำหนดว่าเป็น object Gmap2 เพื่อสร้างแอพพลิเคชันแผนที่บนหน้าเว็บตามโค้ดดังนี้ map = new GMap2(document.getElementById(\"
map_canvas\"
));- ใช้คลาส getLatLng(address,point) เพื่อกำหนดที่ตั้งหรือจุดที่ผู้ใช้ต้องการค้นหา โดยควรจะตรวจสอบทุกครั้งว่า ตามตัวแปร address หรือ text ที่ผู้ใช้ป้อนเข้ามานั้น มีค่า point หรือที่ตั้งอยู่จริงหรือไม่ หากไม่มีก็ให้ขึ้นเตือนกับผู้ใช้ ดังนี้ alert(\"
การค้นหาผิดพลาด!! กรุณาตรวจสอบชื่อสถานที่ที่ท่านกรอก แล้วลองค้นหาอีกครั้ง\"
); ดังรูปที่ 4.10 แต่หากว่าตัวแปร point มีค่า แสดงว่าโปรแกรมสามารถค้นหาสถานที่นั้นได้จริง ก็ควรแสดงให้ผู้ใช้รู้ว่าการค้นหาเสร็จสิ้นแล้ว โดยขึ้นเตือนดังนี้ alert(\"
ยืนยันการค้นหาตามชื่อสถานที่ถูกต้อง\"
); ดังรูปที่ 4.11รูปที่ 4.10 แสดงการค้นหาสถานที่ผิดพลาดอันเนื่องจากโปรแกรมไม่สามารถค้นหาสถานที่ที่ผู้ใช้ป้อนได้ รูปที่ 4.11 แสดงการค้นหาถูกต้องตามข้อมูลที่ผู้ใช้ป้อน- ใช้คลาส GMarker ในการสร้างไอคอนแสดงจุดที่สนใจ พร้อมทั้งใช้คลาส setCenter เพื่อกำหนดให้จุดที่ค้นหาได้นั้นอยู่ตรงกลางแผนที่- หลังจากทำการค้นหาเสร็จสิ้นแล้ว จะได้ผลลัพธ์ดังรูปที่ 4.12 รูปที่ 4.12 แสดงการค้นหาสถานที่ที่ตรงกับข้อมูลที่ผู้ใช้ป้อน4.3.2.2 การค้นหาสถานที่โดยให้ผู้ใช้กำหนดจุดบนแผนที่เองต่างกับระบบในหัวข้อ 4.3.2.1 ตรงที่ผู้ใช้สามารถเลื่อนไอคอนบนแผนที่ได้เอง หรือสามารถกำหนดจุดได้เองว่าสนใจจุดใดบนแผนที่อยู่ เหมาะกับผู้ที่ไม่ทราบชื่อสถานที่สำคัญๆภายในพื้นที่นั้นๆ และผู้ที่ต้องการหาสถานที่ใหม่ๆเอง ซึ่งมีลำดับการพัฒนาดังนี้- สร้างแอพพลิเคชันแผนที่ขึ้นมาเช่นเดียวกันการค้นหาสถานที่โดยใช้ชื่อสถานที่ในการค้นหา แต่เพิ่ม event ลงไปใน option ของคลาส GMarker- event ที่เพิ่มลงไปคือ event draggable ซึ่งเป็น event ที่อนุญาติให้ผู้ใช้สามารถลากหรือเคลื่อนย้ายไอคอน marker นั้นไปยังตำแหน่งอื่นได้- หากต้องการให้ไอคอนเคลื่อนย้ายได้ให้กำหนดดังนี้ var marker = new GMarker(point, {draggable: true});- หากต้องการให้ไอคอนไม่สามารถเคลื่อนย้ายให้กำหนดดังนี้ var marker = new GMarker(point, {draggable: false});- หลังจากมีการเคลื่อนย้ายจุดหรือตำแหน่งดังกล่าวแล้ว โปรแกรมก็ควรที่จะเก็บค่าตำแหน่งล่าสุดหรือตำแหน่งปัจจุบันไว้ โดยใช้คลาส getPoint() ในการ return ตำแหน่งปัจจุบันได้ เช่น var marker = new GMarker(point, {draggable: true});var point = marker.getPoint();หมายเหตุ ควรมีการเช็คทุกครั้งด้วยว่าตัวแปร point มีค่าจริงหรือไม่ หากไม่มีค่าจริงแสดงว่าโปรแกรมไม่สามารถหาจุดนั้นได้ ควรมีการกำหนดให้ผู้ใช้กำหนดจุดใหม่อีกครั้งด้วย4.3.3 การพัฒนาระบบการค้นหาสถานที่สำคัญที่อยู่ภายในขอบเขตที่ผู้ใช้กำหนดเป็นระบบที่ต้องการข้อมูลนำเข้าจากผู้ใช้เพื่อกำหนดขอบเขตระยะตามที่ผู้ใช้ต้องการ เพื่อที่จะสามารถแสดงให้ผู้ใช้ดูได้ว่าภายในขอบเขตที่ผู้ใช้กำหนดอยู่นั้น มีสถานที่สำคัญ อาทิเช่น โรงพยาบาล มหาวิทยาลัย โรงเรียน ใดๆอยู่บ้าง โดยขอบเขตที่ระยะที่ผู้ใช้ป้อนจะต้องมีค่าเป็นตัวเลขจำนวนเต็มเพียงอย่างเดียวเท่านั้น ระบบนี้สามารถแบ่งออกได้เป็น 2 ส่วน ดังนี้4.3.3.1 ส่วนของการกำหนดขอบเขตระยะทางบนแผนที่ตามที่ผู้ใช้กำหนดเป็นระบบที่ทำการคำนวณและตีกรอบกำหนดขอบเขตลงบนแผนที่ โดยผู้ใช้จะต้องกำหนดค่ามาเป็นตัวเลขจำนวนเต็ม โปรแกรมจะอ่านว่าผู้ใช้กำหนดค่ามาเป็นจำนวนเท่าใดในหน่วยกิโลเมตร แล้วจะการตีกรอบลงบนแผนที่ตามระยะที่อ่านได้ ซึ่งมีขั้นตอนการพัฒนาดังนี้- คำนวณจุดหรือตำแหน่งทั้งสี่ที่ต้องการกำหนดลงไปบนแผนที่ โดยจะใช้คลาส GPolyline ในการลากเส้นเชื่อมระหว่างจุดต่อจุดที่เป็นคู่อันดับ (x,y)- กำหนดตัวแปลเพื่อแปลงหน่วยจากองศาให้กลายเป็นเรเดียน เนื่องจากค่าละติจูดและลองจิจูดของกูเกิลแม็พนั้นมีค่าเป็นองศาจึงต้องแปลงให้กลายเป็นเรเดียนก่อน ถึงจะสามารถนำมาคำนวณได้ จึงกำหนดตัวแปลขึ้นมาดังนี้$to_deg = 57.295779513082321311048228964117;- จากนั้นนำมาเข้าสูตรสำเร็จรูปเพื่อคำนวณหาจุดทั้งสี่จุดที่ต้องการ ซึ่งเป็นดังโค้ดต่อไปนี้$lat_rad = $lat/$to_deg;<br />$z = $r/$R;<br />$y = (pi()/2) - $lat_rad;<br />$a = 1;<br />$b = (-2)*($y);<br />$c = pow($y,2) - pow($z,2);<br />$sq = sqrt(pow($b,2)-(4*($a)*($c)) );<br />$x = ( ((-1)*($b)) + ($sq) )/ (2*($a));<br />$lat_north = (pi()/2) - $x;<br />$lat_south = $lat_rad - ($lat_north - $lat_rad);<br />//Convert from radians to degrees<br />$lat_north = $lat_north * $to_deg;<br />$lat_south = $lat_south * $to_deg;<br />//Find others longitude<br />$a = (pi()/2) - $lat_rad;<br />$b = $a;<br />$lng_rad = $lng/$to_deg;<br />$c = $r/$R;<br />$zeta = (pow($a,2) + pow($a,2) - pow($c,2)) / (2*($a)*($a));<br />$arc = acos($zeta);<br />$lng_east = $arc + $lng_rad;<br />$lng_west = $lng_rad - ($lng_east - $lng_rad);<br />//Convert from radians to degrees<br />$lng_east = $lng_east * $to_deg;<br />$lng_west = $lng_west * $to_deg;หมายเหตุ กำหนดให้ $R = 6378.137; ซึ่งเป็นค่าคงที่รัศมีของโลกในหน่วยกิโลเมตร ซึ่งต้องนำมาใช้คำนวณ- ใช้คลาส Polyline ลากผ่านคู่อันดับทั้ง 4 จุดโดยต้องกำหนดค่าพารามิเตอร์ตามทิศทางของการลากเส้นผ่าน โดยในที่นี้กำหนดให้ลากผ่านในทิศตามเข็มนาฬิกา ซึ่งจะได้ตามโค้ดดังนี้var polyline = new GPolyline([<br /> new GLatLng({$lat_north},{$lng}),<br /> new GLatLng({$lat_north},{$lng_east}),<br /> new GLatLng({$lat},{$lng_east} ),<br /> new GLatLng({$lat_south},{$lng_east}),<br /> new GLatLng({$lat_south},{$lng}),<br /> new GLatLng({$lat_south},{$lng_west}),<br /> new GLatLng({$lat},{$lng_west} ),<br /> new GLatLng({$lat_north},{$lng_west}),<br /> new GLatLng({$lat_north},{$lng}),<br />], '#ff0000', 10);<br />map.addOverlay(polyline);//กำหนดเพื่อใส่กรอบลงไปบนแผนที่- จากวิธีดังกล่าว จะได้ผลลัพธ์ออกมาดังรูปที่ 4.13 รูปที่ 4.13 แสดงการตีกรอบบนแผนที่เพื่อแสดงขอบเขตที่ผู้ใช้กำหนด4.3.3.2 ส่วนของการแสดงสถานที่สำคัญที่อยู่ภายในขอบเขตที่ผู้ใช้กำหนดเป็นระบบต่อเนื่องจากระบบกำหนดขอบเขตระยะบนแผนที่ตามที่ผู้ใช้กำหนด ซึ่งระบบนี้ผู้ใช้จำเป็นที่จะต้องกำหนดขอบเขตระยะเสียก่อน จึงจะสามารถมองเห็นว่ามีสถานที่สำคัญใดอยู่บ้าง และสามารถเลือกดูได้ว่าสถานที่สำคัญแต่ละแห่งนั้นอยู่บนจุดหรือตำแหน่งใดบนแผนที่ ซึ่งมีขั้นตอนการพัฒนาดังนี้- เพิ่มคลาส GMarker เข้าไปใหม่ทุกครั้งที่มีการค้นพบสถานที่สำคัญที่อยู่ภายในขอบเขตที่กำหนด เสมือนเป็นการ new object ใหม่ขึ้นมาเรื่อยๆเพื่อจองตำแหน่งให้กับสถานที่- ใช้คลาส GIcon ในการเพิ่มออพชันให้กับคลาส GMarker โดยคลาส GIcon จะมีคลาสย่อยที่เรียกว่า image ซึ่งสามารถกำหนดได้ว่าแทนที่ผู้ใช้จะใช้ไอคอนเป็น Marker สีแดงตาม default ของกูเกิลแม็พ ผู้ใช้ก็สามารถเปลี่ยนรูปไอคอนอื่นๆได้ เช่น ใช้รูปไอคอนโรงพยาบาลแทนจุดที่โรงพยาบาลตั้งอยู่ เป็นต้นซึ่งจะใช้ได้ผลลัพธ์ดังรูปที่ 4.14 รูปที่ 4.14 แสดงตำแหน่งของสถานที่ที่อยู่ภายในขอบเขตระยะที่ผู้ใช้กำหนด- สร้างตารางสำหรับบ่งบอกว่ามีสถานที่ใดอยู่ภายในขอบเขตบ้างตามรูปที่ 4.15 พร้อมทั้งสามารถดูตำแหน่งและรายละเอียดรอบด้านของสถานที่ที่สนใจได้ด้วย ดังรูปที่ 4.16 โดยการกำหนดเพื่อดูตำแหน่งโดยรอบอย่างละเอียดนั้นให้ใช้คลาส setCenter โดยเพิ่ม parameter ลำดับที่ 3 เป็นขนาดในการซูม รูปที่ 4.15 แสดงรายชื่อของสถานที่สำคัญต่างๆที่อยู่ภายในขอบเขตที่ผู้ใช้กำหนด รูปที่ 4.16 แสดงที่ตั้งและรายละเอียดโดยรอบของสถานที่ที่สนใจ4.3.4 การพัฒนาระบบสำหรับเปรียบเทียบเพื่อหาความคล้ายคลึงของกลุ่มข้อมูลที่มีอยู่จากข้อมูลนำเข้าของผู้ใช้เป็นระบบที่ใช้สำหรับจัดกลุ่มให้กับข้อมูลนำเข้าที่ไม่เคยพบเห็นมาก่อน (unseen input) ว่าถ้าหากมีข้อมูลในลักษณะนี้เข้ามา ก็จะตรวจสอบว่ามีลักษณะเฉพาะเป็นแบบใด และควรจัดกลุ่มให้อยู่ในกลุ่มข้อมูลเดียวกับกลุ่มข้อมูลชุดใดที่เคยผ่านการแบ่งกลุ่มมาแล้ว ซึ่งมีขั้นตอนการพัฒนาดังนี้- รับค่าตำแหน่งหรือจุดที่ผู้ใช้สนใจจากระบบค้นหาจุดหรือสถานที่ตามที่ผู้ใช้กำหนด ซึ่งค่าของตำแหน่งหรือจุดนี้จะถูกเก็บอยู่ในตัวแปร point ซึ่งเป็นตำแหน่งปัจจุบัน- หลังจากผู้ใช้กำหนดขอบเขตระยะแล้ว ก็ให้วน loop เก็บรายชื่อของแต่ละตำบลภายในขอบเขตนั้น จากนั้นก็นำมาหาค่าคุณภาพชีวิตของแต่ละตำบลพร้อมทั้งหาค่าเฉลี่ยของข้อมูลแต่ละแอตทริบิวต์ออกมา - นำค่าเฉลี่ยของแต่ละแอตทริบิวต์ที่หาได้นั้นมาเทียบกับข้อมูลแต่ละแอตทริบิวต์ของกลุ่มข้อมูลที่ได้แบ่งไว้แล้ว โดยการเปรียบเทียบนี้สามารถหากลุ่มได้จากการหาค่าฟังก์ชันระยะห่าง (Euclidean Distance) ดังรูปที่ 4.17รูปที่ 4.17 แสดงสูตรสำเร็จสำหรับการหาค่าฟังก์ชันระยะห่าง- สร้างตารางเพื่อบ่งบอกว่ามีสถานที่สำคัญใดบ้างที่อยู่กลุ่มเดียวกับตำแหน่งหรือจุดที่ผู้ใช้เลือก พร้อมทั้งจัดลำดับตามความใกล้เคียงของข้อมูลโดยหากมีความใกล้เคียงมากจะมีค่าฟังก์ชันระยะห่างน้อย ถ้ามีความใกล้เคียงต่ำจะมีค่าฟังก์ชันระยะห่างมาก ดังรูปที่ 4.18 รูปที่ 4.18 แสดงรายชื่อสถานที่ที่อยู่กลุ่มเดียวกับตำแหน่งที่ผู้ใช้เลือกพร้อมทั้งเรียงลำดับตามความคล้ายคลึง- ใช้ Adobe Flex ทำกราฟสำหรับแสดงรายละเอียดเชิงจำนวน และตารางแสดงข้อมูลเชิงภูมิศาสตร์ของแต่ละสถานที่ โดยใช้ tag HTTPService ในการติดต่อกับข้อมูลในฐานข้อมูลผ่านพีเอชพี โดยจะได้ผลลัพธ์ดังรูปที่ 4.19 รูปที่ 4.19 การแสดงข้อมูลเชิงจำนวนและเชิงภูมิศาสตร์โดยใช้ Flex Builder<br />4.4 ตารางเปรียบเทียบความสามารถของระบบที่มีอยู่เดิมและระบบช่วยตัดสินใจ<br />เนื่องจากความสามารถ (feature) ของแต่ละระบบหรือแต่ละโปรแกรมมีความแตกต่างกัน จึงควรที่จะพิจารณาดูความสามารถของระบบต่างๆ ว่ามีความเหมือนหรือแตกต่างกันอย่างไรบ้าง เพื่อที่จะได้เลือกใช้ให้ตรงกับความต้องการของผู้ใช้ ซึ่งผลของการเปรียบเทียบขีดความสามารถจะเป็นไปตามตาราง 4.1 <br />Feature \ ToolGoogle MapsGoogle Earthระบบช่วยตัดสินใจระบบค้นหาสถานที่ระบบแสดงภาพสามมิติระบบแสดงภาพตามลำดับชั้นหาเส้นทางจากจุดหนึ่งไปยังอีกจุดหนึ่งหาระยะทางสั้นที่สุดจากจุดหนึ่งไปยังอีกจุดหนึ่งรูปภาพของสถานที่ตำแหน่งหรือพิกัดจุดGPS SystemGIS Systemการอัพเดทข้อมูลความต้องการการเชื่อมต่อกับอินเตอร์เน็ทการเปลี่ยนแปลงรูปไอคอนการวิเคราะห์เพื่อหาพื้นที่สำหรับสร้างที่พัก<br />ตารางที่ 4.1 ตารางเปรียบเทียบความสามารถระหว่างกูเกิลแม็พและกูเกิลเอิร์ธและระบบช่วยตัดสินใจในการหาพื้นที่เพื่อสร้างที่พักโดยอ้างอิงจากสถานที่ที่เหมาะสม<br />บทที่ 5 การวิเคราะห์ผล<br />ระบบช่วยตัดสินใจในการหาพื้นที่เพื่อสร้างที่พักโดยอ้างอิงจากสถานที่ที่เหมาะสมนี้จะวิเคราะห์ผลการใช้ระบบจากการประเมิน โดยจะประเมินจากการให้ผู้ใช้จำนวน 10 คนประเมินโปรแกรมจากหัวข้อต่างๆ ดังนี้1. ความคิดสร้างสรรค์2. รูปแบบในการนำเสนอ3. ความรวดเร็วในการประมวลผล4. ความสวยงามและรูปแบบของส่วนติดต่อกับผู้ใช้ (User Interface)5. ความถูกต้องของข้อมูลโดยการประเมินนั้นจะแบ่งออกเป็น 5 ระดับ คือระดับที่ 1 คือ ต้องปรับปรุงระดับที่ 2 คือ ไม่ดีระดับที่ 3 คือ ค่อนข้างดีระดับที่ 4 คือ ค่อนข้างดีมากระดับที่ 5 คือ ดีมากซึ่งจากผลการประเมินจากผู้ใช้ทั้ง 10 คน จะได้กราฟผลลัพธ์ดังรูปที่ 5.1 รูปที่ 5.1 กราฟแสดงค่าเฉลี่ยของแต่ละหัวข้อจากการประเมินผลโดยผู้ใช้จำนวน 10 คน<br />บทที่ 6 สรุปผล ปัญหาและแนวทางการพัฒนาต่อ<br />6.1 สรุปผลการทำงานของระบบโครงงานนี้พัฒนาขึ้นเพื่อเป็นระบบช่วยตัดสินใจสำหรับหาพื้นที่ที่เหมาะสมและมีโอกาสประสบความสำเร็จสูงในการสร้างที่พัก ผู้ใช้สามารถเลือกจุดหรือสถานที่ที่ต้องการวิเคราะห์ได้เอง ทั้งนี้ผู้ใช้สามารถเลือกจำกัดขอบเขตที่ต้องการพิจารณาสถานที่ต่างๆได้ จากนั้นระบบจะทำการวิเคราะห์ข้อมูลด้วยวิธีการแบ่งกลุ่ม ข้อมูลที่นำมาใช้วิเคราะห์ได้แก่ ข้อมูลเชิงจำนวนของสถานที่ต่างๆ ข้อมูลเชิงภูมิศาสตร์ของสถานที่ต่างๆ ข้อมูลคุณภาพชีวิตของตำบลต่างๆ เป็นต้น หลังจากระบบวิเคราะห์ข้อมูลเสร็จแล้วจะแสดงผลออกมาในรูปของแผนที่บนหน้าเว็บเพจ พร้อมทั้งมีกราฟแสดงข้อมูลและรายละเอียดต่างๆของสถานที่ที่เหมาะสมสำหรับสร้างที่พักให้ผู้ใช้ได้ดูอีกด้วยระบบนี้มีความแม่นยำในการวิเคราะห์ข้อมูลอยู่ในระดับที่น่าพอใจ อาจมีข้อมูลบางส่วนที่หาได้ยากและเกิดความผิดพลาได้ นอกจากนี้ระบบนี้ถูกพัฒนาขึ้นด้วยภาษา php เป็นส่วนมาก ซึ่งเป็นภาษาที่เรียนรู้และทำความเข้าใจได้ง่าย และง่ายต่อการนำไปพัฒนาต่อ6.2 ปัญหาและอุปสรรค1. เนื่องจากกูเกิลแม็พเป็น API (Application Programming Interface) ที่เริ่มเปิดใช้ได้ไม่นาน ทั้งยังมีการเรียกที่ใช้ที่ค่อนข้างยากและซับซ้อน จึงทำให้การศึกษาเพื่อนำไปใช้พัฒนาระบบทำได้ยากลำบาก2. การติดต่อเพื่อรับข้อมูลจากกูเกิลแม็พโดยผ่าน AJAX มีการประมวลผลที่ค่อนข้างใช้เวลานาน ทำให้บางครั้งผู้ใช้ต้องเสียเวลาในการรอให้โปรแกรมประมวลผลในขณะที่ใช้3. ข้อมูลของสถานที่สำคัญต่างๆหาได้ค่อนข้างยาก ทำให้การวิเคราะห์ข้อมูลเกิดความผิดพลาดได้4. การวิเคราะห์ข้อมูลโดยการใช้ Clustering Algorithm จำเป็นต้องใช้เวลานาน จึงจำเป็นต้องทำ Clustering เป็นแบบ offline แทนที่การทำแบบ online เพื่อลดระยะเวลาการประมวลผล5. ข้อมูลที่นำมาวิเคราะห์อาจจะไม่ใช่ข้อมูลล่าสุดหรือข้อมูลปัจจุบัน6. ข้อมูลคุณภาพชีวิตที่หาได้มีเพียงข้อมูลคุณภาพชีวิตของจังหวัดเชียงใหม่ ทำให้โปรแกรมสามารถใช้กับแผนที่กูเกิลแม็พของจังหวัดเชียงใหม่ได้เท่านั้น6.3 แนวทางการพัฒนาต่อ1. พัฒนาระบบรองรับการแบ่งกลุ่มข้อมูลจากฐานข้อมูลของผู้ใช้ โดยสามารถรองรับข้อมูลได้จากทุกที่ทุกจังหวัด แทนที่จะพัฒนาเพื่อให้ใช้ได้กับจังหวัดเชียงใหม่ที่เดียวเท่านั้น2. การรับส่งข้อมูลระหว่าง API ของกูเกิลแม็พกับเว็บเซิฟเวอร์ผ่าน AJAX ต้องใช้เวลาค่อนข้างนาน จึงควรนำ algorithm อื่นๆมา implement ให้สามารถรับส่งข้อมูลกันได้เร็วขึ้น3. พัฒนาให้ระบบสามารถทำ Simple K-Means Clustering ได้แบบอัตโนมัติโดยที่ไม่ต้องเลือกค่า K ในการทำการแบ่งกลุ่มเอง แทนที่จะต้องมีการกำหนดค่า K ทุกครั้งที่มีการทำการแบ่งกลุ่ม4. พัฒนาส่วนของการติดต่อกับผู้ใช้ (Graphic User Interface) ให้เข้าใจง่าย และสะดวกต่อผู้ใช้มากขึ้น<br />เอกสารอ้างอิง<br />[1]รศ.ดร. กฤษณะ ไวยมัย, เอกสารคำสอน วิชา 214544 คลังข้อมูลและการทำเหมืองข้อมูล (Data Warehouse and Data Mining) , ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเกษตรศาสตร์, พ.ศ. 2549<br />[2]Google Map - Wikipedia, http://en.wikipedia.org/wiki/Google_Maps<br />[3]Google Maps API Reference , http://code.google.com/apis/maps/documentation/reference.html<br />[4]Google Maps , http://maps.google.com/<br />[5]Google Earth , http://th.wikipedia.org/wiki/กูเกิล_เอิร์ธ<br />[6] ผศ.ดร.กรุง สินอภิรมย์สราญ, ภาควิชาคณิตศาสตร์ คณะวิทยาศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย เอกสารคำสอนวิชา CSC662 Data Mining, Data Warehouse and Visualization: ปฏิบัติการ 5[7] Adobe Flex Developer Connection เว็บไซต์ทางการ http://www.adobe.com/devnet/flex/[8] http://examples.adobe.com/flex2/inproduct/sdk/explorer/explorer.html<br />[9] http://learn.adobe.com/wiki/display/Flex/Flex+and+PHP[10] Jesse James Garrett .AJAX: A New Approach to Web Applications In AdaptivePath.com , February 18, 2005.<br /> [11] Mark \"
Tarquin\"
Wilton-Jones, The JavaScript object, http://www.howtocreate.co.uk/, 2001<br />ภาคผนวก กคู่มือการติดตั้ง<br />คู่มือการติดตั้งสำหรับผู้พัฒนาต่อ1. ติดตั้งโปรแกรม AppServ เวอร์ชัน 2.5.7 หรือสูงกว่า เพื่อใช้พัฒนาเว็บแอพพลิเคชัน โดยโปรแกรม AppServ จะประกอบไปด้วยส่วนประกอบหลัก ดังนี้- Apache HTTP Server ใช้สำหรับจำลองเว็บเซิฟเวอร์บนเครื่องที่ลงโปรแกรมไว้- MySQL Database ใช้สำหรับเขียนภาษา MySQL เพื่อจัดการฐานข้อมูลของเว็บเซิฟเวอร์- PHP ใช้สำหรับเขียนโปรแกรมบนเว็บเซิฟเวอร์- phpMyadmin ใช้สำหรับเป็นฐานข้อมูลบนเว็บเซิฟเวอร์ซึ่งมีขั้นตอนการติดตั้งโปรแกรม ดังต่อไปนี้1.1. ดาวน์โหลดโปรแกรม AppServ ได้จาก http://prdownloads.sourceforge.net/appserv/appserv-win32-2.6.0.exe?download ซึ่งเป็นตัว setup ที่ใช้ลงโปรแกรม มีขนาดไฟล์เท่ากับ 20.8 เม็กกะไบต์1.2. เริ่มต้นลงโปรแกรมโดยการดับเบิ้ลคลิกที่ไอคอน appserv-win32-2.6.0.exe1.3. หลังจากดับเบิ้ลคลิกไอคอนตัว setup แล้วจะได้ผลลัพธ์เป็นหน้าต่างดังรูปที่ ก.1รูปที่ ก.1 แสดงการเริ่มติดตั้งโปรแกรม AppServ1.4. หลังจากกดปุ่ม Next จะปรากฎเงื่อนไขต่างๆลิขสิทธิ์ของ GNU License ดังรูปที่ ก.2 โดยเมื่ออ่านเงื่อนไขและทำความเข้าใจครบแล้วก็ให้กดปุ่ม I Agree เพื่อยอมรับตามเงื่อนไขและไปขั้นตอนต่อไปรูปที่ ก.2 แสดงเงื่อนไขและข้อตกลงตามลิขสิทธิ์ของ GNU1.5. หลังจากกดปุ่ม I Agree จะปรากฎหน้าต่างสำหรับให้ผู้ใช้ได้เลือกไดร์ฟและไดเร็คทอรี่ที่ต้องการ ดังรูปที่ ก.3 โดยโปรแกรมจะใช้เนื้อที่ 48.8 เม็กกะไบต์ เมื่อเลือกไดร์ฟและไดเร็คทอรี่เสร็จแล้วก็ให้กดปุ่ม Next เพื่อไปขั้นตอนต่อไป รูปที่ ก.3 แสดงการเลือกไดร์ฟและไดเร็คทอรีตามที่ผู้ใช้ต้องการ1.6. หลังจากกด Next มาแล้วจะปรากฎหน้าต่างให้เลือก Package Components ที่ต้องการจะลงดังรูป ก.4 ซึ่งสามารถเลือกได้ว่า component ใดที่ไม่ต้องการใช้ก็สามารถเอาเครื่องหมายถูกออกได้ และ components ใดที่ต้องการลงเพื่อใช้งานก็สามารถใส่เครื่องหมายถูกลงไปได้ หลังจากเลือกครบแล้วก็ให้กดปุ่ม Next เพื่อไปขั้นตอนถัดไป รูปที่ ก.4 แสดงการเลือก Package Components ที่ต้องการติดตั้ง1.7. หลังจากกดปุ่ม Next จะปรากฎหน้าต่างสำหรับปรับแต่งค่าของเว็บเซิฟเวอร์ดังรูป ก.5 โดยจะมีส่วนประกอบต่างๆ ดังนี้- Server Name ใช้ระบุชื่อเว็บเซิฟเวอร์ของผู้ใช้เวลาที่ต้องการเรียกใช้ - Administrator’s Email Address ใช้ระบุอีเมล์ของผู้เจ้าของเว็บเซิฟเวอร์- Apache HTTP Port ใช้ระบุ port ที่ใช้เชื่อมต่อกับเว็บเซิฟเวอร์ โดยปกติแล้วจะเข้าสู่เว็บเซิฟเวอร์ผ่าน port 80หลังจากกำหนดค่าเรียบร้อยแล้ว ให้กดปุ่ม Next เพื่อไปขั้นตอนต่อไปรูปที่ ก.5 แสดงการปรับแต่งค่าต่างๆของเว็บเซิฟเวอร์ Apache1.8. หลังจากกดปุ่ม Next จะเป็นขั้นตอนในการปรับแต่งค่าของ MySQL Server โดยปรากฎหน้าต่างดังรูป ก.6 ซึ่งจะมีรายละเอียดหลักๆ ดังนี้- Enter root password และ Re-enter password ใช้ระบุรหัสผ่านเพื่อตรวจสอบว่าเป็นเจ้าของเว็บเซิฟเวอร์จริงหรือไม่- Character sets ใช้ระบุการกำหนดค่าระบบภาษาที่ใช้ในการจัดเก็บฐานข้อมูล โดย default จะถูกตั้งไว้ที่ UTF-8 Unicode- Old Password ใช้เพื่อหลีกเลี่ยงการเกิดปัญหาการใช้งาน PHP หรือ MySQL รุ่นเก่า- Enable InnoDB หากต้องการใช้งานฐานข้อมูลในรูปแบบ InnoDB ให้ใส่เครื่องหมายถูกลงบนช่องซึ่งหลังจากปรับแต่งค่าเสร็จสิ้นแล้ว ก็ให้กดปุ่ม Install เพื่อลงโปรแกรมทั้งหมด รูปที่ ก.6 แสดงการปรับแต่งค่าต่างๆของ MySQL Server1.9. รอสักครู่จนโปรแกรมถูกติดตั้งเสร็จแล้ว จะปรากฎหน้าต่างดังรูป ก.7 ว่าการติดตั้งเสร็จเรียบร้อยแล้ว ให้กดปุ่ม Finish เพื่อจบการติดตั้ง รูปที่ ก.7 แสดงหน้าต่างเมื่อติดตั้งโปรแกรมเสร็จสิ้นแล้วการนำเข้าฐานข้อมูลของระบบกับ MySQL Database1. เปิด phpMyAdmin ผ่าน web browser ที่ http://localhost/phpmyadmin/ จากนั้นใส่ชื่อตรงช่องสร้างฐานข้อมูลใหม่ว่า proanalysis แล้วกด สร้าง ดังรูปที่ ก.8 รูปที่ ก.8 หน้าแรกของ phpMyAdmin ในการสร้างฐานข้อมูล2. จากรูปที่ ก.9 จะเห็นได้ว่าฐานข้อมูลที่ต้องการถูกสร้างขึ้นแล้ว จากนั้นจึงกดเลือก Import เพื่อนำฐานข้อมูลจากไฟล์ sql เข้าสู่ฐานข้อมูลที่ได้สร้างไว้รูปที่ ก.9 แสดงฐานข้อมูลที่ถูกสร้างขึ้นแล้ว<br />3. เริ่มการ Import ฐานข้อมูลจาก โดยกดเลือก Browse… แล้วเลือกไฟล์ sql จากนั้นจึงกด ลงมือ ดังรูปที่ ก.10 ก็จบการนำฐานข้อมูลระบบเข้าสู่ฐานข้อมูล MySQL<br />รูปที่ ก.10 การ Import ฐานข้อมูลของระบบเข้าสู่ MySQL<br />2.ติดตั้งโปรแกรม Weka เวอร์ชัน 3-4 หรือสูงกว่า เพื่อใช้ในการวิเคราะห์ข้อมูลต่างๆ ซึ่งมีขั้นตอนการติดตั้งโปรแกรม ดังต่อไปนี้2.1 กดตัว Installation เมื่อโปรแกรมเริ่มทำงาน กด Next แสดงดังรูปที่ ก.11 - 72.
- 73.
- 74.
- 75.
- 76.
- 77.
2.6 เมื่อการติดตั้งโปรแกรมเสร็จสิ้น กดปุ่มNext เพื่อให้โปรแกรม weka ทำงานดังรูป ก.16 รูปที่ ก.16 การติดตั้งโปรแกรม weka เสร็จสิ้นภาคผนวก ข<br />คู่มือการใช้งาน<br />1. การค้นหาสถานที่โดยการกรอกชื่อสถานที่- เลือกหัวข้อดังรูป ข.1 เพื่อเลือกวิธีการค้นหาสถานที่ตามชื่อสถานที่ที่กรอกรูปที่ ข.1 แสดงการเลือกค้นหาสถานที่โดยกรอกชื่อสถานที่- กรอกชื่อของสถานที่ที่ต้องการค้นหาลงบน textbox ที่กำหนด ดังรูป ข.2รูปที่ ข.2 แสดงการกรอกชื่อสถานที่ลงบน textbox ที่กำหนด- ยืนยันการค้นหาด้วยการกดปุ่ม Search- หากโปรแกรมไม่สามารถค้นหาสถานที่ที่ตรงกับข้อมูลนำเข้าที่ผู้ใช้กรอก จะขึ้นเตือนผู้ใช้ดังรูป ข.3 รูปที่ ข.3 แสดงหน้าต่างขึ้นเตือนผู้ใช้เมื่อไม่สามารถค้นหาสถานที่ตามชื่อที่กรอกได้- หากโปรแกรมค้นหาสถานที่ที่ตรงกับข้อมูลนำเข้าที่ผู้ใช้กรอกพบ จะขึ้นยืนยันให้ผู้ใช้ทราบ ดังรูป ข.4 พร้อมทั้งแสดงออกมาบนแอพพลิเคชันแผนที่ ดังรูป ข.5 รูปที่ ข.4 แสดงหน้าต่างยืนยันเมื่อค้นหาสถานที่พบ รูปที่ ข.5 แสดงสถานที่ที่ได้จากการค้นหาด้วยการกรอกชื่อสถานที่2. การค้นหาสถานที่โดยผู้ใช้กำหนดจุดเอง- เลือกหัวข้อ ดังรูป ข.6 เพื่อเลือกค้นหาสถานที่โดยกำหนดจุดหรือตำแหน่งด้วยตัวผู้ใช้เอง รูปที่ ข.6 แสดงการเลือกค้นหาสถานที่โดยผู้ใช้กำหนดตำแหน่งหรือจุดด้วยตนเอง- คลิกที่ไอคอนบนแอพพลิเคชันแผนที่ค้างไว้ ลากไอคอนไปยังจุดหรือตำแหน่งที่ผู้ใช้ต้องการ เมื่อพบจุดที่ต้องการแล้วจึงปล่อยเมาส์ จากนั้นโปรแกรมจะขึ้นเตือนให้ผู้ใช้กดปุ่ม Confirm เพื่อยืนยันว่าจุดที่เลือกปัจจุบันเป็นจุดที่ผู้ใช้สนใจอยู่ ดังรูป ข.7 รูปที่ ข.7 แสดงการเตือนเพื่อให้ผู้ใช้ยืนยันการเลือกตำแหน่ง- กดปุ่ม Confirm เพื่อยืนยันการเลือกจุด โดยหลังจากกดปุ่ม Confirm แล้วผู้ใช้จะไม่สามารถลากไอคอนบนแอพพลิเคชันแผนที่ได้อีก3. การตรวจสอบสถานที่ที่อยู่ภายในขอบเขตระยะที่ผู้ใช้กำหนด- ผู้ใช้ต้องเลือกระยะตามที่โปรแกรมกำหนดมาให้ ดังรูป ข.8 โดยระยะที่ผู้ใช้สามารถเลือกได้จะอยู่ในช่วง 1 กิโลเมตร – 10 กิโลเมตร รูปที่ ข.8 แสดงการเลือกระยะของผู้ใช้เพื่อดูสถานที่ที่อยู่ภายในขอบเขตระยะที่กำหนด<br />- หลังจากกดปุ่ม Submit โปรแกรมจะขึ้นหน้าต่างยืนยันว่าค้นหาเสร็จเรียบร้อยแล้ว ดังรูป ข.9 รูปที่ ข.9 แสดงหน้าต่างยืนยันการค้นหาสถานที่ที่อยู่ภายในระยะที่ผู้ใช้กำหนด- หลังจากโปรแกรมประมวลผลเสร็จ จะปรากฎกรอบสีแดงบนแผนที่เพื่อบ่งบอกว่าขอบเขตที่กำหนดมีขนาดเท่าใด พร้อมทั้งมีไอคอนบ่งบอกด้วยว่าพบสถานที่ใดในขอบเขตนั้นบ้าง ดังรูป ข.10 รูปที่ ข.10 แสดงขอบเขตและไอคอนของสถานที่ต่างๆที่อยู่ภายในขอบเขต- สามารถเลือกดูรายชื่อของสถานที่ประเภทต่างๆได้จากตารางที่ปรากฎในรูป ข.11 โดยหากต้องการเลือกให้ดูให้เลือกแสดง และหากไม่ต้องการให้เลือกไม่แสดงรูปที่ ข.11 แสดงตารางเพื่อเลือกดูรายชื่อของสถานที่ต่างๆ- หากเลือก แสดง จะปรากฎตารางดังรูป ข.12 เพื่อบ่งบอกว่ามีสถานที่ใดบ้างที่ถูกพบภายในขอบเขตที่กำหนด พร้อมทั้งสามารถเลือกดูสถานที่นั้นๆในระยะใกล้ได้โดยการกดปุ่ม Click Here ซึ่งจะได้ผลลัพธ์ตัวอย่าง ดังรูป ข.13 รูปที่ ข.12 แสดงตารางรายชื่อสถานที่ประเภทโรงพยาบาลที่ถูกพบภายในขอบเขตที่ผู้ใช้เลือก<br /> รูปที่ ข.13 แสดงการเลือกดูสถานที่ที่พบภายในขอบเขตที่ผู้ใช้เลือกในระยะใกล้4. การเปรียบเทียบเพื่อหากลุ่มข้อมูลที่คล้ายคลึงกับตำแหน่งที่ผู้ใช้เลือกมากที่สุด- หลังจากโปรแกรมประมวลผล และได้กลุ่มที่ใกล้เคียงหรือคล้ายคลึงกับตำแหน่งที่ผู้ใช้เลือกมากที่สุดแล้ว จะแสดงรายชื่อของสถานที่ที่อยู่ภายในกลุ่มนั้นออกมาบนตาราง ดังรูป ข.14 โดยรายชื่อของสถานที่ที่มีความใกล้เคียงมากจะอยู่บนและรายชื่อของสถานที่ที่มีความใกล้เคียงต่ำจะอยู่ล่างรูปที่ ข.14 แสดงรายชื่อสถานที่ที่อยู่ภายในกลุ่มเดียวกับตำแหน่งที่โปรแกรมเปรียบเทียบแล้วว่ามีความใกล้เคียงมากที่สุด- สามารถกดปุ่ม Click เพื่อดูสภาพโดยรอบสถานที่ที่ผ่านการวิเคราะห์แล้วได้ ดังรูป ข.15รูปที่ ข.15 แสดงการเลือกดูสภาพโดยรอบของสถานที่ที่สนใจ- สามารถดูกราฟและรายละเอียดของสถานที่นั้นๆได้จากการกดปุ่ม Detail โดยจะได้ผลดังรูป ข.16 รูปที่ ข.16 แสดงกราฟและรายละเอียดต่างๆของสถานที่ที่สนใจ<br />