วันพฤหัสบดีที่ 24 กุมภาพันธ์ พ.ศ. 2554

รู้จักการเขียนโปรแกรมภาษาจาวาเบื้องต้น



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

เมธอดหลักในคลาสนี้ ซึ่งมีรายละเอียดดังนี้

public เป็น Access Modifier นั่นคือ สามารถเข้าถึงสมาชิกภายในคลาส HelloWorld ได้จากทุกคลาสที่อยู่ภายในแอพพลิเคชั่นเดียวกัน

static คือ กำหนดให้เมธอดหลักเป็น static method ดังนั้นตัวแปรที่จะถูกใช้ในเมธอดหลักนี้ต้องเป็นตัวแปรที่เป็น static variable เท่านั้น

void คือกำหนดว่าเมธอดนี้ไม่มีการส่งค่ากลับ จะเห็นว่ามีการแสดงผลอย่างเดียว

main คือกำหนดให้เป็นเมธอดหลัก

String[] args คือ ค่าคงที่ที่ตัวแปร(arguments)ส่งเข้ามาจะแปลงเป็นสตริงแล้วเก็บไว้ในอาร์เรย์ ซึ่งต่างจากภาษาซีที่เวลาเก็บมันจะมองหาว่ามีพื้นที่ตรงไหนบ้างในหน่วยความจำที่ว่าง ประมาณว่าว่างตรงไหนก็เก็บตรงนั้น ทำให้มีการใช้ตัวแปร pointer ได้ ดังนั้นคนที่เขียนไวรัสเก่งๆคือคนที่ใช้ตัวแปร pointer เก่งๆนี่ล่ะครับ อีกอย่างภาษาซีเป็นภาษาที่ใช้ในการเขียนที่ทะลุทะลวงที่สุด สามารถใช้ในการควบคุม, สั่งการฮาร์ดแวร์ได้โดยตรง แต่ในภาษาจาวาแล้วจะไม่อนุญาตให้มีการใช้ตัวแปร pointer เด็ดขาดข้อมูลที่แปลงเป็นสตริงจะถูกจัดเก็บลงในอาร์เรย์ทั้งหมด นี่คือความปลอดภัยของภาษาจาวาครับ

บรรทัดที่ 5 คือคำสั่ง println คือ สั่งแสดงผล(print line) ซึ่งเมธอด println นี้จะอยู่ในคลาส System ส่วนคลาส System นี้ จะถูกเก็บอยู่ใน package java.lang.*; โดย package java.lang.*; นี้ จาวาจะมีการ import ไว้ให้เราอยู่แล้ว ดังนั้นจึงไม่ต้องมีการประกาศ import java.lang.*; ไว้ด้านบน

ข้อควรระวัง: เวลาเซฟไฟล์ให้ตั้งชื่อไฟล์ ให้ตรงกับชื่อคลาส และมีนามสกุลไฟล์เป็น .java

วันพุธที่ 8 ธันวาคม พ.ศ. 2553

การเขียน PHP เบื้องต้น

การแทรกรหัส PHPเนื่องจาก PHP เป็นภาษาในลักษณะฝังตัว (Embedded Script) โดยส่วนของภาษาจะ แทรกปนกับ Code อื่นๆ ด้วยเหตุนี้ในการเขียน PHP จึงต้องมีการแยก (Escape) ระหว่าง PHP Code และ HTML Code เพื่อให้ตัวแปรภาษาสามารถประมวลผลได้อย่างถูกต้อง ดังตัวอย่างต่อไปนี้

HTML
BODY
echo "Hello World";
?>
/BODY
/HTML
ตัวอย่างการแทรก Code PHP ลงใน Code HTML

ในการ escape ระหว่าง PHP Code และ HTML Code นั้นตามมาตรฐานที่ปรากฎในเอกสารจาก php.net มีด้วยกันทั้งสิ้น 4 วิธี ทั้งนี้บางวิธ ีจะสามารถใช้งานได้เมื่อมีการตั้งต่า Config บางค่าเท่านั้น

1. ? echo ("this is the simplest, an SGML processing instruction\n"); ?
2. ?php echo("if you want to serve XML documents, do like this\n"); ?
3.
script language="php"
echo ("some editors (like FrontPage) don't
like processing instructions");
/script

4. % echo ("You may optionally use ASP-style tags"); %>
%= $variable; # This is a shortcut for "<%echo .." %>

การแทรก Code PHP ลงใน Code HTML

วิธีที่ 1 นั้นเป็นวิธีที่นิยมใช้กันโดยทั่วไป ทั้งนี้การจะ escape โดยใช้วิธีที่นี้ เรียกว่า Short-Tag ซึ่งในการตั้งค่า PHP.INI จะต้อง กำหนดให้ short_open_tag=on ด้วย ส่วนวิธีที่ 2 นั้นเป็นการเขียนในลักษณะของ XML ซึ่งเป็นมาตรฐานปกติของตัวแปลภาษา PHP สำหรับวิธีที่ 3 นั้น เป็นวิธีการแบบดังเดิมที่นิยมใช้กันบน JavaScript หรือ Perl Script. ส่วนวิธีที่ 4 นี้มีต้นแบบมาจาก ASP ซึ่งนิยมเรียกว่า ASP tags โดยหากผู้ใช้ต้องการใช้วิธีนี้จะต้องตั้งค่า asp_tags=on ใน PHP.INI เช่นกัน

การเขียนคำสั่ง

ในการเขียนคำสั่งแต่ละอันบน PHP นั้นโครงสร้างคำสั่งแต่ละอันจะประกอบด้วยชุดคำสั่ง ค่า Parameter ต่างๆ และจบท้ายด้วยเครื่องหมาย Semicolon “;”เสมอ นอกจากนี้การจบ Escape ยังหมายถึงการจบประโยคไปในตัวด้วยเช่นกัน ดังตัวอย่างต่อไปนี้

?php
echo("1.Hello, World.\n");
echo("2.Hello, World.\n")
?

การจบประโยคของ PHP

จากตัวอย่างจะพบว่า “;” ใช้ขั้นระหว่าง Hello,World ที่ 1 และ 2 ส่วน Hello,World อันที่ 2 นั้น ไม่จำเป็นจะต้องใส่ “;” ก็ได้ เพราะว่าจบช่วง Escape ("?>") ก็มีความหมายว่าจบประโยคเช่นกัน

การเขียน Comment

Comment คือส่วนที่ใช้สำหรับอธิบายโปรแกรม ซึ่งจะไม่ถูกแปลและนำออกมาแสดงผล การเขียน Comment ในภาษา PHP นั้น จะใช้ลักษณะเช่นเดียวกับการเขึยน Comment ในภาษา C หรือ ภาษา C++ และการเขียน Coment ใน Unix-Sheสl ทั่วไป โดยการเขียนในแบบภาษา C ส่วน Comment จะขั้นอยู่ระหว่าง “/*” และ “*/” ส่วนกรณีของ Comment แบบ C++ นั้น จะนับตั้งแต่เครื่องหมาย “//” จนจบบรรทัด เช่นเดียวกันกับ Unix-Shell แต่ใน Unix-Shell นั้น จะใช้เครื่องหมาย “#” แทน ทั้งนี้การเขียนโปรแกรมที่ดี ผู้เขียนควรจะมีการแทรก Comment เพื่อใช้อธิบายการทำงานของโปรแกรมโดยย่อ และควรระมัดระวังการเขียน Comment ซ้อน ภายใน Comment ด้วย เพราะอาจมีการประมวลผลผิดพลาดใน PHP บาง Version.

?php
// This is the sample Comment (C++ Style)

# Shell Style Comment

echo("1.Hello, World.\n");

/* echo ("Test Comment (C Style)"); */

echo("2.Hello, World.\n");
?>
/*
This the comment /* (This should be avoid)*/
*/
?

การเขียน comment ในPHP

วันพฤหัสบดีที่ 2 ธันวาคม พ.ศ. 2553

การทำขั้นตอนซ้ำหรือวนลูป

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

-while-do loop
-do-while loop
-for-loop
ตัวอย่างการใช้ while-do loop เพื่อคำนวณค่า เลขยกกำลังสอง ซึ่งมีเลขฐานตั้งแต่ 1 ถึง 10

$x = 1;
while ($x <= 10) {
echo $x*$x,"\n";
$x++;
}

?>

เริ่มต้นด้วยการกำหนดตัวแปร $x ให้มีค่าเป็นหนึ่ง ซึ่งในกรณีนี้ เราใช้เป็นเลขฐาน ในการคำนวณเลขยกกำลังสอง เมื่อเข้าสู่การวนลูปแบบ while-do จะมีการตรวจดูเงื่อนไข ของการวนลูปในแต่ละครั้งว่า เงื่อนไขเป็นจริงอยู่หรือไม่ ในกรณีนี้ เรากำหนดเงื่อนไขในการวนลูปไว้ว่า ถ้าค่าของ $x มีค่าน้อยกว่าหรือเท่ากับ 10 ก็ให้ทำคำสั่งที่อยู่ภายในลูป ซึ่งก็คือ echo $x*$x,"\n"; โดยจะพิมพ์ค่าของผลคูณซึ่งหมายถึงเลขยกกำลังสองนั่นเอง หลังจากนั้น ก็ให้เพิ่มค่าของ $x ทีละหนึ่งในการวนลูปแต่ละครั้ง ค่าของ $x จะเพิ่มขึ้นเรื่อยๆจนมีค่ามากกว่า 10 เมื่อถึงเวลานั้น ก็จะเป็นการจบการวนลูป เพราะว่า เราจะได้ว่า เงื่อนไข ($x <= 10) มีค่าเป็นเท็จ

สมมุติว่า ถ้าเปลี่ยนจาก $x++ เป็น $x-- ปัญหาก็จะเกิดตามมาเวลาใช้งาน คือ แทนที่จะวนลูปแค่สิบครั้ง ก็กลับกลายเป็นว่า เป็นการวนลูปนับครั้งไม่ถ้วน เพราะว่า ค่าของ $x จะลดลงเรื่อยๆในการวนลูปแต่ละครั้ง คือเป็นลบ และค่าเป็นลบจะน้อยกว่า 10 เสมอ (ยกเว้นแต่ว่า เมื่อถึงจุดเวลาหนึ่งค่าเป็นลบมากๆ จะกระโดดกลับเป็นบวก)

ตัวอย่างการใช้ do-while loop เพื่อคำนวณค่าเลขยกกำลังสอง ซึ่งมีเลขฐานตั้งแต่ 1 ถึง 10

$x = 1;
do {
echo $x*$x,"
\n";
$x++;
} while ($x < 10);

?>

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

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

for ($x = 1; $x <=10; $x++) {
echo $x*$x,"
\n";
}

?>

ในบรรทัดที่เริ่มต้นด้วย for ระหว่างวงเล็บเปิดและปิด จะถูกแบ่งเป็นสามส่วนโดยเครื่องหมาย semicolon (;) ในส่วนแรกเราสามารถใส่คำสั่งที่ต้องการจะกระทำก่อนเข้าลูป ส่วนแรกนี้จะมีหรือไม่มีก็ได้ ในส่วนที่สองจะเป็นเงื่อนไขสำหรับการทำ loop และในส่วนที่สามจะคำสั่งที่จะต้องทำเป็นการจบท้ายลูปในแต่ละครั้ง หลักการทำงานของ for-loop จะคล้ายกับ while-do-loop

การใช้งาน for-loop และวางตำแหน่งส่วนต่างๆ อาจจะไม่จำเป็นต้องทำเหมือนกันแต่ให้ผลเหมือนกัน เช่น

$x=1;
for ( ; $x <=10; $x++) {
echo $x*$x,"
\n";
}

$x=1;
for ( ; $x <=10; ) {
echo $x*$x,"
\n";
$x++;
}

?>

จากตัวอย่างข้างบนที่ผ่านๆมา เป็นการวนลูปจะใช้การนับเลขเพิ่มขึ้นทีละหนึ่ง เรายังสามารถเขียนใหม่โดยเป็นการนับเลขลดลง ยกตัวอย่างเช่น เราต้องการจะพิมพ์ตัวเลขเรียงลำดับจาก 10,9,8...,1 ก็อาจจะเขียนคำสั่งได้ดังนี้

for ($x=10 ; $x >0; $x--) {
echo $x,"
\n";
}

?>


การใช้งาน for-loop ก็จะเหมือนกับเวลาใช้ในภาษาซี ในหลายๆเรื่อง เช่น เราสามารถใส่คำสั่งได้ มากกว่าหนึ่งโดยใช้เครื่องหมาย (,) เป็นตัวแยก ตัวอย่างเช่น


for ($x=1, $y=0 ; $x < 10; $x++, $y--) {
echo "$x $y
\n";
}

?>

วันพฤหัสบดีที่ 25 พฤศจิกายน พ.ศ. 2553

เวปไซต์คับ

http://student.nu.ac.th/sirawut_geo27/index.html

วันอาทิตย์ที่ 3 ตุลาคม พ.ศ. 2553

ระบบสารสนเทศทางภูมิศาสตร์ (Graphic Information System หรือ GIS)

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


ภาพที่ 1 ระบบภูมิสารสนเทศ

ใน ทางภูมิศาสตร์จะแบ่งประเภทข้อมูลเป็นข้อมูลเชิงพื้นที่ (Spatial data) คือข้อมูลที่ใช้อ้างอิงลักษณะโครงสร้างทางภูมิศาสตร์ และข้อมูลคุณลักษณะต่างๆของพื้นที่ (Non-Spatial data) เช่น ข้อมูลปริมาณสารพิษในน้ำ สภาวะแวดล้อมในปัจจุบัน เป็นต้น

ระบบสารสนเทศเพื่อการจัดการ (Management Information System หรือ MIS)
ระบบ สารสนเทศเพื่อการจัดการ หรือ MIS คือ การจัดทำสารสนเทศหรือการจัดทำข้อมูลที่ผ่านการประมวลผลการคำนวณทางสถิติแล้ว โดยจะนำเสนอข้อมูลในรูปแบบต่างๆ เช่น รายงานจำนวนประชากรในพื้นที่, ปริมาณน้ำฝนในแต่ละพื้นที่ ฯลฯ มีจุดประสงค์เพื่อสนับสนุนการทำงาน การจัดการ และการตัดสินใจในการแก้ปัญหาต่างๆ ข้อมูลที่ได้จะต้องทันสมัย ถูกต้องแม่นยำและรวดเร็ว สามารถนำไปใช้เพื่อประกอบการตัดสินใจ การประเมินสถานการณ์ต่างๆ ได้อย่างมีประสิทธิภาพ โดยข้อมูลทางด้าน MIS จะถูกพัฒนาไปตามความเหมาะสมในแต่ละงาน เช่น ข้อมูลการสร้างฝายของพื้นที่ที่สนใจในโครงการการจัดการทรัพยากรน้ำ หรือ เนื้อที่ปลูกข้าว นาปี ในแต่ละปีของประเทศในระบบเครือข่ายสารสนเทศทางการเกษตร เป็นต้น

ระบบฐานข้อมูลเชิงพื้นที่ (Spatial Database System)
ระบบจะมุ่งเน้นข้อมูลที่เกี่ยวกับพื้นที่ ซึ่งข้อมูลเหล่านี้สามารถแบ่งลักษณะของข้อมูลเชิงพื้นที่เป็น 3 ลักษณะ ดังนี้

1) จุด (Point) เป็นลักษณะที่ใช้แสดงตำแหน่งของพื้นที่นั้นๆ เช่น ที่ตั้งจังหวัด หมู่บ้าน เป็นต้น
2) เส้น (Line) เป็นลักษณะที่ใช้แสดงลักษณะเชื่อมต่อของพื้นที่โดยทั่วไปจะแสดงเป็นกลุ่มของ เส้น (Polyline) เช่น ทางน้ำ ทางถนน เป็นต้น

3) รูปหลายเหลี่ยม (Polygon) เป็นลักษณะที่ใช้แสดงพื้นที่หรือขอบเขต เช่น พื้นที่จังหวัด พื้นที่ทะเลสาบ เป็นต้น

ดังภาพที่ 2 จะแสดงลักษณะข้อมูลเชิงพื้นที่ทั้ง 3 ลักษณะ


โครงสร้างข้อมูล (Data Model) เชิงพี้นที่ที่จัดเก็บอยู่ในฐานข้อมูลแบ่งได้เป็น 2 ประเภท

1) Raster จะมีลักษณะเป็นตารางสี่เหลี่ยมหรือที่เรียกว่า Grid Cell เรียงต่อกันเป็นแนวแกน X แกน Y ลักษณะการจัดเก็บข้อมูลเชิงพื้นที่ด้วยโครงสร้างแบบ Raster นี้ จะแทนค่าของข้อมูลจากพื้นที่จริงลงในจุดภาพเลย ซึ่งในแต่ละ Grid Cell จะเก็บค่าได้เพียง 1 ค่าเท่านั้น

2) Vector ข้อมูลแบบ Vector นี้จะแสดงเป็น จุด เส้น รูปหลายเหลี่ยมหรือพื้นที่ ข้อมูลที่ จัดเก็บจะอยู่ในรูปพิกัดตำแหน่ง (X Y) ถ้าตำแหน่งเดียวจะหมายถึงจุด (POINT), 2 ตำแหน่งหรือมากกว่านั้นหมายถึงเส้น (LINE), 3 ตำแหน่งขึ้นไปหมายถึงพื้นที่ (POLYGON)

วันเสาร์ที่ 28 สิงหาคม พ.ศ. 2553

GIS Database


1. ประเภทข้อมูลในระบบ GIS
ข้อมูลระบบสารสนเทศทางภูมิศาสตร์ประกอบด้วยข้อมูล 2 รูปแบบ คือ

1.1 ข้อมูลเชิงพื้นที่ (Spatial data) เป็นข้อมูลที่เกี่ยวข้องกับตำแหน่งที่ตั้งของข้อมูลต่าง ๆ บนพื้นโลก ซึ่งข้อมูลเชิงพื้นที่สามารถแสดงสัญลักษณ์ได้ 3 รูปแบบ คือ

จุด (Point) จะใช้แสดงข้อมูลที่เป็นลักษณะของตำแหน่งที่ตั้ง ได้แก่ ที่ตั้งโรงเรียนในสังกัด กทม. , ที่ตั้งศูนย์บริการสาธารณสุข , ที่ตั้งสำนักงานเขต เป็นต้น
เส้น (Line) จะใช้แสดงข้อมูลที่เป็นลักษณะของเส้น เช่น ถนน, แม่น้ำ, ทางด่วน เป็นต้น
พื้นที่ (Area or Polygon) จะใช้แสดงข้อมูลที่เป็นลักษณะของพื้นที่ เช่น พื้นที่ขอบเขตการปกครอง, พื้นที่อาคาร เป็นต้น
1.2 ข้อมูลที่ไม่อยู่ในเชิงพื้นที่ (Non- Spatial data) เป็นข้อมูลเชิงบรรยาย (Attribute) ซึ่งจะอธิบายถึงคุณลักษณะต่าง ๆ ในพื้นที่นั้น ๆ ณ ช่วงเวลาใดเวลาหนึ่ง หรือหลาย ๆ ช่วงเวลาเช่น ข้อมูลจำนวนประชากรในเขตต่าง ๆ ข้อมูลจำนวนนักเรียนแต่ละชั้นของโรงเรียนสังกัด กทม. เป็นต้น สามารถแบ่งออกได้ 2 ประเภท คือ
ตารางข้อมูลที่เชื่อมโยงกับกราฟฟิก (Graphic table)
ตารางข้อมูลที่ไม่เชื่อมโยงกับกราฟฟิก (Non-Graphic table)
2. ลักษณะข้อมูล

2.1 ลักษณะข้อมูลเชิงพื้นที่ แบ่งได้ 2 ประเภท คือ Vector และ Raster

2.1.1 ข้อมูลแสดงทิศทาง (Vector Data) คือข้อมูลที่แสดงด้วย จุด เส้น หรือพื้นที่ ที่ประกอบด้วยจุดพิกัดทางแนวราบ (X , Y) และ/หรือ แนวดิ่ง (Z) หรือ Cartesian Coordinate System ถ้าเป็นพิกัดตำแหน่งเดียวก็จะเป็นค่าของจุด ถ้าจุดพิกัดสองจุดหรือมากกว่าจะเป็นค่าของเส้น ส่วนพื้นที่นั้นจะต้องมีจุดมากกว่า 3 จุดขึ้นไป และจุดพิกัดเริ่มต้นและจุดพิกัดสุดท้ายจะต้องอยู่ตำแหน่งเดียวกัน เช่น ถนน แม่น้ำ ขอบเขตการปกครอง โรงเรียน เป็นต้น

ลักษณะข้อมูลเชิงพื้นที่ ในรูปแบบเวกเตอร์จะมีลักษณะและรูปแบบ (Spatial Features) ต่าง ๆ กันพอสรุปได้ดังนี้ คือ

2.1.1.1 รูปแบบของจุด (Point Features)

GIS Database

เป็นตำแหน่งพิกัดที่ไม่มีขนาดและทิศทาง จะใช้แสดงข้อมูลที่เป็นลักษณะของตำแหน่งใด ๆ เช่นที่ตั้งของโรงพยาบาลในสังกัด กทม. เป็นต้น



2.1.1.2 รูปแบบของเส้น (Linear Features)



มีระยะและทิศทางระหว่างจุดเริ่มต้น ไปยังจุดแนวทาง (Vector) และจุดสิ้นสุด ประกอบไปด้วยลักษณะของเส้นตรง เส้นหักมุม และเส้นโค้ง เช่น ถนน ทางด่วน คลอง เป็นต้น




2.1.1.3 รูปแบบของพื้นที่ (Polygon Features)



มีระยะและทิศทางระหว่างจุดเริ่มต้น จุดแนวทาง (Vector) และจุดสิ้นสุด ที่ประกอบกันเป็นรูปหลายเหลี่ยมมีขนาดพื้นที่ (Area) และเส้นรอบรูป (Perimeter)



จุดเด่นของข้อมูลแบบ Vector คือ

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

โครงสร้างข้อมูลซับซ้อน
การรวมแผนที่แบบเวกเตอร์หลาย ๆ แผ่นหรือรวมแผนที่ Vector กับ Raster ด้วยวิธีวางซ้อนมีความยุ่งยากมาก
การทดสอบด้วยการจำลองสถานการณ์ทำได้ยาก เพราะแต่ละหน่วยของแผนที่มีโครงสร้างที่ต่างกัน
การแสดงและการเขียนเป็นแผนที่เสียค่าใช้จ่ายสูง โดยเฉพาะเมื่อต้องการแสดงสีและสัญลักษณ์ที่มีคุณภาพสูง
เทคโนโลยีชนิดนี้มีราคาแพง โดยเฉพาะถ้าต้องใช้ฮาร์ดแวร์และซอฟต์แวร์ที่มีความซับซ้อน
การวิเคราะห์พื้นที่และการกรองรายละเอียดภายในรูปหลายเหลี่ยมเกือบเป็นไปไม่ได้
2.1.2 ข้อมูลแสดงลักษณะเป็นกริด (Raster Data) คือข้อมูลที่มีโครงสร้างเป็นช่องเหลี่ยม เรียกว่า จุดภาพ หรือ Grid cell เรียงต่อเนื่องกันในแนวราบและแนวดิ่ง ในแต่ละจุดภาพสามารถเก็บค่าได้ 1 ค่า ความสามารถแสดงรายละเอียดของข้อมูลขึ้นอยู่กับขนาดของเซลล์ ณ จุดพิกัดที่ประกอบขึ้นเป็นฐานข้อมูลแสดงตำแหน่งชุดนั้น ค่าที่เก็บในแต่ละจุดภาพสามารถเป็นได้ทั้งข้อมูลลักษณะสัมพันธ์ หรือรหัสที่ใช้อ้างอิงถึงข้อมูลลักษณะสัมพันธ์ที่เก็บอยู่ในฐานข้อมูลก็ได้ Raster Data อาจแปรรูปมาจากข้อมูล Vector หรือแปรจาก Raster ไปเป็น Vector หรือแปรจาก Raster ไปเป็น Vector แต่เห็นได้ว่าจะมีความคลาดเคลื่อนเกิดขึ้นระหว่างการแปรรูปข้อมูล



จุดเด่นของข้อมูลแบบ Raster คือ

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

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


2.2 ลักษณะข้อมูลที่ไม่อยู่ในเชิงพื้นที่ ประกอบด้วย 3 ลักษณะ คือ
ข้อมูลเชิงปริมาณ
ข้อมูลเชิงคุณภาพ
ข้อมูลเชิงบรรยาย





วันอังคารที่ 17 สิงหาคม พ.ศ. 2553

ภาษา PHP

PHP (PHP Hypertext Preprocessor)
ความเป็นมา
PHP เกิดในปี 1994 โดย Rasmus Lerdorf โปรแกรมเมอร์ชาวสหรัฐอเมริกาได้คิดค้นสร้างเครื่องมือที่ใช้ในการพัฒนาเว็บส่วนตัวของเขา โดยใช้ข้อดีของภาษา C และ Perl เรียกว่า Personal Home Page และได้สร้างส่วนติดต่อกับฐานข้อมูลชื่อว่า Form Interpreter ( FI ) รวมทั้งสองส่วน เรียกว่า PHP/FI ซึ่งก็เป็นจุดเริ่มต้นของ PHP มีคนที่เข้ามาเยี่ยมชมเว็บไซต์ของเขาแล้วเกิดชอบจึงติดต่อขอเอาโค้ดไปใช้บ้าง และนำไปพัฒนาต่อ ในลักษณะของ Open Source ภายหลังมีความนิยมขึ้นเป็นอย่างมากภายใน 3 ปีมีเว็บไซต์ที่ใช้ PHP/FI ในติดต่อฐานข้อมูลและแสดงผลแบบ ไดนามิกและอื่นๆ มากกว่า 50000 ไซต์

PHP เป็นภาษาสคริปต์ที่ประมวลผลที่ฝั่งเซิร์ฟเวอร์ แล้วส่งผลลัพธ์ไปแสดงผลที่ฝั่งไคลเอ็นต์ผ่านบราวเซอร์เช่นเดียวกับ CGI และ ASP ต่อมาเมื่อมีผู้ใช้มากขึ้นจึงมีการร้องขอให้มีการพัฒนาประสิทธิภาพของ PHP/FI ให้สูงขึ้น Rasmus Lerdorf ก็ได้ผู้ที่มาช่วยพัฒนาอีก 2 คนคือ Zeev Suraski และ Andi Gutmans ชาวอิสราเอล ซึ่งปรับปรุงโค้ดของ Lerdorf ใหม่โดยใช้ C++ ต่อมาก็มีเพิ่มเข้ามาอีก 3 คน คือ Stig Bakken รับผิดชอบความสามารถในการติดต่อ Oracle, Shane Caraveo รับผิดชอบดูแล PHP บน Window 9x/NT, และ Jim Winstead รับผิดชอบการตรวจ ความบกพร่องต่างๆ และได้เปลี่ยนชื่อเป็น Professional Home Page

PHP3 ได้ออกสู่สายตาของนักโปรแกรมเมอร์เมื่อ มิถุนายน 1998 ที่ผ่านมาในเวอร์ชั่นนี้มีคุณสมบัติเด่นคือสนับสนุนระบบปฏิบัติการทั้ง Window 95/98/ME/NT, Linux และเว็บเซร์ฟเวอร์ อย่าง IIS, PWS, Apache, OmniHTTPd สนับสนุน ระบบฐานข้อมูลได้หลายรูปแบบเช่น SQL Server, MySQL, mSQL, Oracle, Informix, ODBC

เวอร์ชั่นล่าสุดในปัจจุบันคือ PHP4 ซึ่งได้เพิ่ม Functions การทำงานในด้านต่างๆให้มากและง่ายขึ้นโดย Zend ซึ่งมี Zeev และ Andi Gutmans ได้ร่วมก่อตั้งขึ้น ( http://www.zend.com ) ในเวอร์ชั่นนี้จะเป็น compile script ซึ่งในเวอร์ชั่นหน้านี้จะเป็น embed script interpreter ในปัจจุบันมีคนใช้ PHP สูงกว่า 5,100,000 sites แล้วทั่วโลก ผู้พัฒนาได้ตั้งชื่อของง PHP ใหม่ว่า PHP: Hypertext Preprocessor ซึ่งหมายถึงมีประสิทธิภาพระดับโปรเฟสเซอร์สำหรับไฮเปอร์เท็กซ์

ความสามารถของ PHP นั้นในความสามารถพื้นฐานที่ภาษาสคริปต์ทั่วๆไปมีนั้น PHP ก็มีความสามารถทำได้ทัดเทียมเช่นเดียวกันเช่น การรับข้อมูลจากฟอร์ม, การสร้าง Content ในลักษณะ Dynamic, รับส่ง Cookies, สร้าง, เปิด, อ่าน และปิดไฟล์ในระบบ, การรองรับระบบจัดการฐานข้อมูลมากมายดังนี้

Adabas D
Ingres
Oracle (OCI7 and OCI8)

Dbase
InterBase
Ovrimos

Empress
FrontBase
PostgreSQL

FilePro (read-only)
mSQL
Solid

Hyperwave
Direct MS-SQL
Sybase

IBM DB2
MySQL
Velocis

Informix
ODBC
Unix dbm


แต่ตัวจัดการฐานข้อมูลที่ทาง NINETO E-MAGAZINE ONLINE เลือกมาใช้ในบทความนี้คือ MySQL เหตุที่เลือกตัวนี้คือ เป็นที่นิยมกว้างขว้างและประเด็นหนึ่งที่จะต้องพิจารณาคือ Free เพราะ MySQL จัดเป็น Software ประเภท Freeware รองรับ OS ได้หลายระบบด้วยกัน ท่านสามารถดาวน์โหลดได้ที่หน้า Download ซึ่งเราได้จัดเตรียมไว้ให้แล้ว

Protocol Support ความสามารถในการรองรับโปรโตคอลหลายแบบทั้ง IMAP, SNMP, NNTP, POP3, HTTP และยังมีไลบารีสำหรับติดต่อ กับแอพพลิเคชั่นได้มากมาย มีความยืดหยุ่นสูงสามารถนำไปสร้างแอพพลิเคชั่นได้หลากหลาย และอีกข้อดีหนึ่งที่โดเด่นคือของ PHP ก็คือสามารถแทรกลงในแท็ก HTML ในตำแหน่งใดก็ได้



จะใช้ PHP ต้องมีอะไรบ้าง
เนื่องจากว่า PHP ไม่ได้เป็นส่วนหนึ่งของตัว Web Server ดังนั้นถ้าจะใช้ PHP ก็จะต้องดูก่อนว่า Web server นั้นสามารถใช้สคริปต์ PHP ได้หรือไม่ ยกตัวอย่างเช่น PHP สามารถใช้ได้กับ Apache WebServer และ Personal Web Server (PWP) สำหรับระบบปฏิบัติการ Windows 95/98/NT

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


รูปแบบการเขียน PHP
การเขียนโค้ด เราสามารถเขียนได้จากโปรแกรม Editor ทั่วไปเช่น Notepad หรือ Editplus แน่นอนที่สะดวกที่สุดคงจะไม่พ้น Notepad เพราะแถมมากับ window อยู่แล้ว แต่ถ้าต้องการความสามารถและ Options ที่เพิ่มขึ้นก็แนะนำว่าโปรแกรม Editplus ใช้ได้ดีทีเดียว

รูปแบบการเขียน PHP เขียนได้ 4 แบบดังตัวอย่าง ที่นิยมคือแบบที่ 1 และ 2 แบบที่ 3 ใช้งานคล้ายกับ Java script ส่วนแบบที่ 4 ตัว tag <% จะเหมือนกับ ASP โดยเมื่อรันจะได้ผลลัพธ์เหมือนกัน และสามารถแทรกลงในส่วนของภาษา HTML ส่วนใดก็ได้

1.การเขียนโค้ดในรูปแบบภาษา SGML จะมีรูปแบบดังนี้

คำสั่งในภาษา PHP ;
?>

2. การเขียนโค้ดเพื่อใช้ร่วมกับภาษา XHTML หรือ XML (แต่สามารถใช้ใน HTML แบบปกติได้) จะมีรูปแบบดังนี้

คำสั่งในภาษา PHP ;
?>

3. การเขียนโค้ดในรูปแบบ JavaScript จะมีรูปแบบดังนี้



4. การเขียนโค้ดในรูปแบบ ASP จะมีรูปแบบดังนี้

<%
คำสั่งในภาษา PHP ;
%>

* สำหรับรูปแบบที่ 4 จะใช้ได้กับ PHP 3.0.4 ขึ้นไป และจะต้องไปแก้ไฟล์ php.ini ในโฟลเดอร์ C:WINDOWS เสียก่อนโดยให้ asp_tags มีค่าเป็น On



การเขียนสคริปต์ PHP ในรูปแบบใดก็ตามจะต้องมีเครื่องหมาย semicolon ( ; ) ลงท้ายคำสั่งเสมอเหมือนกับการเขียนภาษา C กับภาษา Perl และคำสั่งหรือฟังก์ชั่นในภาษา PHP จะเขียนด้วยตัวพิมพ์เล็กหรือพิมพ์ใหญ่ก็ได้ ( case-insensitive ) การจบ statement หรือสิ้นสุด script เราจะปิดท้ายสคริปต์ด้วยแท็ก ( ?> ) และคำสั่งสุดท้ายในสคริปต์นั้นจะลงท้ายด้วย semicolon ( ; ) หรือไม่ก็ได้เพราะจะถูกปิดด้วยแท็ก ( ?> ) อยู่แล้ว



นอกจากรูปแบบแล้ว การวาง code ผสมกับ HTML ก็เป็นวิธีหนึ่ง



Example


echo "Hi, I'm a PHP script!";
?>




Comment (การเขียนคำอธิบายโปรแกรม)
การเขียนโปรแกรมที่มีความยาวและซับซ้อนมากๆอาจจะทำให้สับสนในภายหลังได้ วิธีที่นิยมกันก็คือการเขียนคำอธิบายไว้ท้ายคำสั่งนั้นๆ หรือที่เรียกกันว่า comments ใน PHP จะสามารถเขียนในรูปแบบของภาษา C, C++ และ Unix shell-style comments ได้โดยจะไม่นำมาประมวลผล จะเห็นแค่ใน souce code เท่านั้น

รูปแบบ


echo "This is a test"; // comment แบบ C++



/* แบบนี้เป็นการ comments
แบบหลายบรรทัด จะใช้ในกรณี
ที่คำอธิบายเยอะ*/



echo "This is yet another test";

echo "One Final Test"; # comment แบบ Unix shell-style

?>



ข้อควรระวัง PHP ไม่รับ Comment แบบ nest


/*

echo "This is a test"; /* comment ตัวนี้จะมีปัญหา */

*/

?>



คำสั่งแสดงผล
เราสามารถใช้คำสั่งเพื่อแสดงผลได้ 3 แบบคือ
1. echo
2. print
3. printf

1. คำสั่ง echo จะสามารถแสดงได้หลายประเภท เช่น
echo " ทดสอบการใช้คำสั่ง echo ";
?>

นี่เราลองมาดูความสามารถอีกอย่างของคำสั่ง echo กันคือความสามารถในการแยกนิพจน์ หรือค่าตัวแปรได้ โดยจะใช้เครื่องหมาย , คั่น

echo " ทดสอบการใช้คำสั่ง echo
" ;
echo " 10+20 = " , 15+15 , "" ;
?>

สังเกตคำสั่ง echo " 10+20 = " , 15+15 , "" ; ผมได้ใช้เครื่องหมาย , คั้นระหว่าง " 10+20 =" และ "" ไว้เพื่อให้โปรแกรมแยกส่วนที่เราต้องการให้มันแสดงออกทางหน้าแบบธรรมดากับส่วนที่เราต้องการให้โปรแกรมทำการคำนาณให้เรานั้นคือ 15+15 เมื่อคำนวณแล้วจะได้ค่า 30 โปรแกรมจะนะค่าที่ได้จากการคำนวณมาแสดงแทน ส่วนแท็ก
และ ... นั้นเป็นแท็ก HTML ธรรมดาซึ่งผมใส่ไว้เพื่อทำให้การแสดงผลสวยงามขึ้น

echo "ทดสอบการใช้คำสั่ง echo " ;
echo " 10+20 = " , 15+15 ;
?>

2. คำสั่ง print
print " ทดสอบการใช้คำสั่ง print " ;
?>

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

%d ตัวเลข

%o เลขฐานแปด

%c ข้ออักษร ( 1 ตัว )

%s ข้อความ

%f ทศนิยม

printf ( " 15+15 = %d
" , 15+15) ;
printf ( " 20/3 = %d
" , 20/3 ) ;
printf ( " 20/3 = %f
" , 20/3 ) ;
?>

สังเกตคำสั่งที่ 2 และ 3 ให้ดีนะครับ เราได้ใช้ตัวคำนวณเหมือนกันแต่กำหนดชนิดของข้อมูลไม่เหมือนกัน โดยคำสั่งที่ 2 ผมได้กำหนดชนิดข้อมูลเป็น %d แต่ในคำสั่งที่ 3 ได้กำหนดชนิดเป็น %f ผลที่ได้ก็จะแตกต่างการกันครับ


String
แบ่งตามลักษณะตัวปิดแบ่งออกเป็น 3 แบบคือ

• single quoted

• double quoted

• heredoc syntax (ไม่อธิบาย)



single quoted
ตัวแปร ที่อยู่ภายใต้ single quoted ถือเป็นข้อความด้วย

echo ’this is a simple string’;

echo ’You can also have embedded newlines in strings,

like this way.’;

echo ’Arnold once said: "I’ll be back"’; // output: ... "I’ll be back"

echo ’Are you sure you want to delete C:*.*?’; // output: ... delete C:*.*?

echo ’Are you sure you want to delete C:*.*?’; // output: ... delete C:*.*?

echo ’I am trying to include at this point: a newline’; // output: ... this point: a newline



double quoted
การใช้ double quoted สามารถใช้ร่วมกับ escaped characters ได้ดังตาราง



Escaped characters sequence meaning


linefeed (LF or 0x0A (10) in ASCII)


carriage return (CR or 0x0D (13) in ASCII)


horizontal tab (HT or 0x09 (9) in ASCII)


backslash

$
dollar sign

"
double-quote

[0-7]{1,3}
the sequence of characters matching the regular expression is a character in octal notation

x[0-9A-Fa-f]{1,2}
the sequence of characters matching the regular expression is a character in hexadecimal notation




ข้อควรระวังในการใช้ งาน

$beer = ’Heineken’;

echo "$beer’s taste is great"; // works, "’" is an invalid character for varnames

echo "He drunk some $beers"; // won’t work, ’s’ is a valid character for varnames

echo "He drunk some ${beer}s"; // works



Simple syntax

$fruits = array( ’strawberry’ => ’red’ , ’banana’ => ’yellow’ );

echo "A banana is $fruits[banana].";

echo "This square is $square->width meters broad.";

echo "This square is $square->width00 centimeters broad."; // won’t work,

// for a solution, see the complex syntax.



Complex syntax

$great = ’fantastic’;

echo "This is { $great}"; // won’t work, outputs: This is { fantastic}

echo "This is {$great}"; // works, outputs: This is fantastic

echo "This square is {$square->width}00 centimeters broad.";

echo "This works: {$arr[4][3]}";

echo "This is wrong: {$arr[foo][3]}"; // for the same reason

// as $foo[bar] is wrong outside a string.

echo "You should do it this way: {$arr[’foo’][3]}";

echo "You can even write {$obj->values[3]->name}";

echo "This is the value of the var named $name: {${$name}}";



ตัวอย่างการใช้งาน String


$str = "This is a string"; /* การกำหนดค่าให้กับ string. */



$str = $str . " with some more text"; /* ต่อข้อความกับตัวแปร */



$str .= " and a newline at the end. "; /* ต่อข้อความกับตัวแปร อีกรูปแบบหนึ่ง และใช้ escaped newline. */



/* This string will end up being ’

Number: 9

’ */

$num = 9;+



$str = "

Number: $num

";



/* This one will be ’

Number: $num

’ */

$num = 9;

$str = ’

Number: $num

’;



/* Get the first character of a string */

$str = ’This is a test.’;

$first = $str{0};



/* Get the last character of a string. */

$str = ’This is still a test.’;

$last = $str{strlen($str)-1};

?>



Variable scope
PHP โดยส่วนใหญ่ตัวแปรจะเป็นแบบ Single scope ดังแสดงตามตัวอย่าง

$a = 1;

include "b.inc";





ตัวอย่าง การใช้ตัวแปร global และ local

แบบที่1 ตัวแปร a มีค่าต่างกัน

$a = 1; /* global scope */

Function Test () {

echo $a; /* reference to local scope variable */

}

Test ();