สวัสดีค่ะ บล๊อกนี้เป็นส่วนหนึ่งของวิชา GIS2 คณะภูมิสารสนเทศศาสตร์ มหาวิทยาลัยบูรพา

วันอาทิตย์ที่ 9 กุมภาพันธ์ พ.ศ. 2557

Lab 4 การสอบถามข้อมูล (Exploration)

โครงสร้างอย่างง่ายของภาษา SQL  จะประกอบด้วยส่วนสำคัญ 3 ส่วน คือ


  1. ชื่อ Field หรือชื่อ คอลัมน์จะต้องระบุว่าต้องการจะค้นจาก Field ไหน
  2. Operators หรือ ตัวดาเนินการที่ใช้ในการค้นหาข้อมูล ทั้งประเภท file geodatabases, shapefiles, coverages นอกจากนี้ยังสามารถใช้ค้นหาข้อมูลประเภท personal and ArcSDE geodatabases
  3. ค่าหรือข้อมูลที่ต้องการจะค้นแบ่งเป็น 2 ส่วนหลักก็คือ 
  • ข้อมูลที่เป็นตัวเลขNumbers
  • ข้อมูลที่เป็นตัวอักษรStrings

ซึ่งในบางครั้งไม่ได้ค้นเพียงข้อมูลอย่างง่าย อาจจะมีเงื่อนไขที่ซับซ้อนมากขึ้น เพราะฉะนั้นโครงสร้างของข้อมูลก็จะมีความซับซ้อนมากขึ้นกว่าเดิม

ตัวดาเนินการที่ใช้ในการค้นหาข้อมูลมีหลายประเภท ได้แก่ ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic operators)
* คูณ
/ หาร
+ บวก

- ลบ

ตัวดำเนินการการเปรียบเทียบ (Comparison operators)
= เท่ากับ
<>ไม่เท่ากับ
>มากกว่า
>= มากกว่า หรือ เท่ากับ
<น้อยกว่า

<= น้อยกว่า หรือ เท่ากับ

     ในการค้นหาข้อมูลในรูปแบบของข้อความ หรือ String จะต้องใส่เครื่องหมายอัญประกาศเดี่ยว ‘ … ’ ในข้อความที่ต้องการค้นหาเสมอ เช่น


"STATE_NAME" = ' California '

     สำหรับการค้นหาข้อมูลตัวเลข หรือ Number นั้น จะเกี่ยวข้องกับคำสั่งทางตรรกศาสตร์ เช่น เท่ากับ มากกว่า หรือน้อยกว่า เป็นต้น

"POPULATION" >= 5000

"OBJECTID" BETWEEN 1 AND 10

ตัวเชื่อมนิพจน์ (Combining expressions)

     ในบางครั้งที่มีการตั้งเงื่อนไขแบบซับซ้อน ซึ่งต้องมีนิพจน์หรือประโยคตั้งแต่ 2 ประโยคขึ้นไป จึงจำเป็นที่จะต้องใช้ตัวเชื่อม ประกอบด้วย AND และ OR หรือ

     ในบางครั้งใช้ NOT นำหน้านิพจน์หรือประโยค หรือนำหน้าตัวดำเนินการในกรณีที่ต้องการค้นข้อมูลที่ตรงข้ามกับประโยคนั้น ๆ NOT ไม่

การใช้ BETWEEN มี 2 รูปแบบ ได้แก่ BETWEEN x AND y และ NOT BETWEEN x AND y


ค้นหา record ที่มีค่ามากกว่าหรือเท่ากับ x แต่น้อยกว่าหรือเท่ากับ y เช่น

"OBJECTID" BETWEEN 1 AND 10

"OBJECTID" NOT BETWEEN 1 AND 10

การใช้ EXISTS มี 2 รูปแบบ ได้แก่ EXISTS และ NOT EXISTS ผลลัพธ์ที่ได้จะเป็นจริงก็ต่อเมื่อมีอย่างน้อยหนึ่งข้อมูลที่ตรงตามเงื่อนไข ถ้าไม่ถือว่าเป็นเท็จ เช่น

EXISTS (SELECT * FROM parcels WHERE "OBJECTID" = 50)

การใช้ IN มี 2 รูปแบบ ได้แก่ IN และ NOT IN  record จะถูกเลือกถ้ามี (หนึ่งใน) ตัวเลขหรือข้อความตามที่ระบุ "STATE_NAME" IN ('Alabama', 'Alaska', 'California', 'Florida')"STATE_NAME" NOT IN ('Alabama', 'Alaska')

การใช้ NULL มี 2 รูปแบบ ได้แก่ IS NULL และ IS NOT NULL เป็นการเลือก record ที่ไม่มีค่าในฟิลด์นั้น ๆ เช่น 

"POPULATION" IS NULL

"POPULATION" IS NOT NULL

การใช้ LIKE มี 2 รูปแบบ ได้แก่ LIKE และ NOT LIKE การใช้ LIKE จะคล้ายคลึงกับการใช้ “เท่ากับ” แต่ LIKE จะใช้สำหรับค้นหาบางส่วนของข้อความ (ประโยค) 1 ตัวอักษร หรือไม่มีตัวอักษร โดยจะใช้ LIKE กับ % เช่น

"STATE_NAME" LIKE 'Miss%'

หรือจะใช้ LIKE กับ _ เป็นการค้นหาตัวอักษรที่หายไป เช่น


"OWNER_NAME" LIKE '_atherine Smith'

การใช้ AND ใช้สำหรับเชื่อม 2 เงื่อนไขเข้าด้วยกัน โดย record ที่ถูกเลือกนั้นต้องมีทั้ง 2 เงื่อนไข เช่น

"AREA" >1500 AND "GARAGE" >2“NAME" LIKE ‘Pe%’ AND “ADDRESS" = ‘New York’

การใช้ OR ใช้สำหรับเชื่อม 2 เงื่อนไขเข้าด้วยกัน โดย record ที่ถูกเลือกนั้นมีเพียงเงื่อนไขใดเงื่อนไขหนึ่งก็ได้ เช่น

"AREA" > 1500 OR "GARAGE" > 2

“POPULATION" > 50000 OR “AREA" =< 2,000

การใช้ +, -, * และ / เป็นการค้นหาข้อมูลโดยการใช้ตัวปฏิบัติการทางคณิตศาสตร์ช่วยในการคำนวณ โดยคำนวณในฟิลด์เดียว เช่น

“AREA” >= “PERIMETER” * 100
หรือคานวณระหว่างฟิลด์ได้ เช่น

“POP1990” / “AREA” = 1000

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

“AREA” = 200 * “PERIMETER” + “DISTANCE”

ถ้าต้องการจัดลาดับในการคำนวณจะได้


“AREA” = 200 * (“PERIMETER” + “DISTANCE”

การสอบถามข้อมูลจาก Navigation Tools

เปิดโปรแกรมแล้วไปที่ RTArcGIS >> KANCHANABURI แล้วเปิดข้อมูล AMPHOE 



แสดงข้อมูลขอบเขตการปกครองอำเภอของจังหวัดกาญจนบุรี



คำสั่งที่ใช้ในการค้นข้อมูลจะมี 3 เครื่องมือหรือ 3คำสั่ง   

  1. Identify โดยเลือกคำสั่ง Identify แล้วนำเมาส์ไปคลิกหรือจุดที่ข้อมูลที่ต้องการก็จะแสดงเป็น popup ขึ้นมาแสดงข้อมูลของบริเวณที่ทำการจุดลงไปว่าคืออะไร
  2. Find เมื่อเปิดคำสั่งมาก็ทำการคีย์ข้อมูลที่ต้องการจะค้นลงไป ก็จะโชว์ผลลัพธ์ที่ได้ตามข้อมูลที่คีย์ลงไป
  3. GO TO XY โดยการคีย์ค่าพิกัด แล้วผลลัพธ์มันก็จะวิ่งไปยังตำแหน่งที่คีย์ค่าพิกัดลงไป


การแสดงเฉพาะข้อมูลที่เลือก (Definition Query) โดยใช้หน้าต่าง Query builder และภาษา SQL

คลิกขวาที่ชั้นข้อมูล AMPHOE >> Properties



จากนั้นไปที่ Tab ที่ชื่อว่า Definition Query หลังจากนั้นเลือกคำสั่ง Query Builder




จะปรากฏหน้าต่าง Query Builder ขึ้นมา ซึ่งในตัว Query Builder จะประกอบด้วยส่วนสำคัญ 3 ส่วน คือ
  • ส่วนที่ 1 จะแสดง Field ทั้งหมดที่อยู่ในชั้นข้อมูลนั้นๆ
  • ส่วนที่ 2 เป็น operators และตัวเชื่อม
  • ส่วนที่ 3 คือบริเวณที่จะป้อน SQL หรือเงื่อนไขลงไป

ถ้าต้องการจะค้นชื่ออำเภอและให้แสดงออกมาในแผนที่ โดยอยากจะรู้หรือให้แสดงข้อมูลของอำเภอทองผาภูมิ เพราะฉะนั้นโครงสร้างแรกของ SQL Filed ที่เก็บชื่ออำเภอคือ Field ที่ชื่อว่า “AMP_Name” โดยดับเบิ้ลคลิกจาก Field ที่เลือก (ในส่วนที่1) ได้เลย ตัวชื่อ Field “AMP_Name” ก็จะมาอยู่ในช่องด้านล่าง จากนั้นตัว Operators ในที่นี้ต้องการจะหาอำเภอทองผาภูมิ เพราะฉะนั้นตัว Operators ที่ต้องใช้คือ “=” คลิกมาจากส่วนที่ 2 ได้เลย จากนั้นเป็นผลหรือค่าที่ต้องการจะค้น คือ อำเภอทองผาภูมิ ให้ไปคลิกที่ “AMP_Name” ในส่วนที่ 1 แล้วคลิกที่ Get Unique Values เมื่อคลิกแล้ว ในช่อง Get Unique Values ก็จะโชว์ชื่ออำเภอทั้งหมดที่เก็บอยู่ใน Field AMP_Name




เนื่องจากต้องการจะค้นอำเภอทองผาภูมิ ให้ดับเบิ้ลคลิกที่ 'อ.ทองผาภูมมิ' ในช่อง Get Unique Values จะเห็นได้ว่าโครงสร้าง คือ ชื่อ Field ตามด้วยตัว Operators แล้วตามด้วยผลลัพธ์หรือค่าที่ต้องการจะค้นและทั้งหมดนี้เป็นข้อความหรือ String จะมี Single code ปิดตัวข้อความที่จะค้นด้วย




จากนั้นกด OK >> Apply ผลลัพธ์ที่ได้จากการใช้คำสั่ง Definition query จะโชว์เฉพาะผลลัพธ์ที่ได้จากการคีย์เงื่อนไข



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



  จากนั้นกด OK >> Apply



การสอบถามข้อมูลโดยใช้ Select by Attribute และภาษา SQL

ไปที่Lab 11 >> World แล้วเปิดข้อมูล Country



ต่อไปจะทำการค้นหาข้อมูลโดยใช้คำสั่ง Select by Attribute เพราะฉะนั้นจะต้องเข้าไปจัดการหรือเข้าไปทำงานกับตารางที่อยู่ในชั้นข้อมูลนั้นๆโดยใช้ SQL มาเป็นตัวเชื่อมหรือตัวบอกเงื่อนไข

จากนั้นเปิด Attribute ของ Country




  • Field Fid คือ ลำดับที่ ที่ได้มาจากการสร้างข้อมูล ในที่นี้มีทั้งหมด 251 ประเทศเพราะฉะนั้น Fid ก็จะเริ่มตั้งแต่ 0-251
  • Field CNTRY_NAME เป็น Field ที่เก็บรายละเอียดชื่อประเทศ
  • Field POP_CNTRY เป็น Field ที่เก็บจำนวนประชากร
  • SQKM_CNTRY เป็น Field ที่เก็บพื้นที่ หน่วยเป็นตารางกิโลเมตร   
  • Field   SQMI_CNTRY เป็น Field ที่เก็บพื้นที่ หน่วยเป็น ไมล์ ตารางไมล์ แสควไมล์
  • Field   CURR_TYPE เป็น Field ที่เก็บสกุลเงิน  
  • Field   CURR_CODE   เป็น Code ของสกุลเงิน     
  • Field  LANDLOCKED ข้อมูลข้างในจะเป็น N =No , Y=Yes แปลว่าใช่กับไม่ใช่   
     LANDLOCKED คือ พื้นที่ที่ติดทะเลกับไม่ติดทะเล เป็นลักษณะของข้อมูลที่บอกลักษณะภูมิประเทศ ที่ตั้ง ถ้าลักษณะภูมิประเทศเป็นแบบ LANDLOCKED ตอบ Y ถ้าไม่เป็นแบบ LANDLOCKED ตอบ N ประเทศไทยตอบ N แสดงว่า ประเทศไทยไม่ใช่ LANDLOCKED เพราะประเทศไทย เป็นพื้นที่ติดกับทะเล

 ต่อไปเปิดคำสั่ง Select by Attribute โดยคำสั่ง Select by Attribute สามารถเปิดได้จาก 3 ที่ คือ

     1. เปิดจาก Table Options


                                                                                                                                                                   
     2. เปิดจากไอคอนบนตาราง      



     3. เปิดจากเมนู Selection                            




จากการเปิดคำสั่ง Select by Attribute ก็จะได้หน้าต่าง Select by Attribute ขึ้นมาดังภาพด้านล่างลักษณะของเครื่องมือจะคล้ายกับQuery Builder มีเพียงส่วนบนที่เพิ่มขึ้นมาคือ Layer หรือ ชั้นข้อมูล     เราสามารถเลือกได้จากตรงนี้ แต่ในที่นี้เราเปิดเพียงชั้นข้อมูลเดียว คือ Country



เริ่มต้นค้นข้อมูล 1. ค้นหาประเทศไทยว่ามีอยู่ในแผนที่นี้หรือไม่ โดยรูปแบบของประโยคจะเริ่มต้นด้วยชื่อ Field   Field ที่เก็บชื่อประเทศไว้คือ "CNTRY_NAME" และตัว Operator คือ "=" จากนั้นเป็นผลที่ต้องการจะค้น โดยต้องการจะค้นว่ามีประเทศไทยในแผนที่นี้หรือไม่ ไปคลิกที่ "CNTRY_NAME" คลิกที่ Get Unique Values แล้วเลือก 'Thailand'  จากนั้นลอง Apply ดู



ผลลัพธ์ที่ได้จะโชว์ใน Attributes พร้อมทั้งไฮไลต์ไว้บนแผนที่ ถ้าต้องการจะดูจาก Attributes ให้คลิกที่ Show selected records ด้านล่างตาราง 



2. ต้องการทราบว่ามีกี่ประเทศที่มีประชากรมากกว่าหนึ่งร้อยล้านคน Field ที่เก็บจำนวนประชากรไว้คือ Field ที่ชื่อว่า "POP_CNTRY" Operatorคือ ">" แล้วคลิกที่ "POP_CNTRY " และคลิกที่ Get Unique Values จากนั้นใส่ผลที่ต้องการจะค้นซึ่งคือ 100000000  แล้วกด Apply



ผลลัพธ์ที่ได้คือ มี 9 ประเทศที่ประชากรมากกว่าหนึ่งร้อยล้านคน ถ้าต้องการจะดูว่าผลลัพธ์ที่ได้มาถูกต้องหรือไม่ ให้ไปเช็คที่ POP_CNTRY



3. ต้องการจะรู้ว่ามีกี่ประเทศที่ขึ้นต้นด้วยตัว Z ชื่อ Field ที่ใช้คือ "CNTRY_NAME" และตัว Operator คือ "LIKE" ในกรณีนี้จะต้องใช้ LIKE กับ % เพราะต้องการคำต่อท้ายจากตัว Z เพราะฉะนั้นจะต้องเอา% ใส่หลัง Z และใส่เครื่องหมายอัญประกาศ การค้นข้อมูลตัวอักษรจะต้องมีเครื่องหมาย '..' ประกอบด้วยทุกครั้ง "CNTRY_NAME" LIKE 'Z%' แล้วกด Apply



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



4. ต้องการประเทศหรือชื่อประเทศที่ไม่ขึ้นต้นด้วย Al สามารถทำได้หลายวิธี โดยจะใช้ NOT เข้ามาช่วยหรือใช้ Operator เข้ามาช่วยก็ได้ โดยวิธีการใช้ NOT (NOT "CNTRY_NAME" LIKE 'Al%') จะใส่ NOT นำหน้า LIKE หรือใส่ไว้หน้าประโยคก็ได้



ผลลัพธ์ที่ได้คือ 249 ประเทศ



5. ต้องการจะรู้ว่ามีประเทศใดบ้างที่ใช้สกุลเงินเป็น Dollar และมีพื้นที่ติดทะเล ใช้ Field ที่ชื่อว่า "CURR_TYPE" และ Operator ที่ใช้คือ "=" มี AND เป็นตัวเชื่อม ตามด้วย "LANDLOCKED"= 'N'



ผลลัพธ์ที่ได้คือ 28 ประเทศ



6. ต้องการจะรู้ว่ามีกี่ประเทศที่อยู่ในลำดับที่มากกว่า 239 ประเทศที่ว่าจะต้องไม่ขึ้นต้นด้วยตัว Y

"FID" > 239 AND NOT "CNTRY_NAME" LIKE 'Y%'



ผลที่ได้คือ 10 ประเทศ



การสอบถามข้อมูลโดยใช้ Select by Location

   ไปที่ File KANCHANABURI แล้วเปิดข้อมูล AMPHOE ข้อมูล TRANS ข้อมูล VILLAGE



จากนั้นเปิดคำสั่ง Select by Location  คำสั่งจะอยู่ใน Selection



Select by Location เป็นคำสั่งที่ใช้ค้นหาข้อมูลจากชั้นข้อมูลโดยตรง ในการค้นหาข้อมูลโดยใช้คำสั่ง Select by Location จะเกี่ยวข้องกับความสัมพันธ์ระหว่างข้อมูลที่เปิดขึ้นมาหรือที่ต้องการจะค้น โดยจะไปดำเนินการอย่างใดอย่างหนึ่งระหว่างชั้นข้อมูลตั้งแต่ 2 ชั้นข้อมูลขึ้นไป โดยอาจจะใช้หรือค้นข้อมูลจากฐานข้อมูลหนึ่งโดยตั้งเงื่อนไขรวมกับอีกหนึ่งชั้นข้อมูล

โดยในหน้าต่างSelect by Location  จะมี 4 ส่วนหลัก ๆ คือ
     ส่วนที่ 1  Selection Method คือ รูปแบบหรือวิธีการในการแสดงผลที่ได้จากการคัดเลือก ซึ่งจะมี 4 รูปแบบ                                                                                                                                       -                   - Selection feature from = ให้แสดงผลลัพธ์ที่ได้จากการคัดเลือกใหม่ทุกครั้งตามเงื่อนไขที่เรากำหนด                                                                                                                                                           - add to the currently selected features in = ให้นำผลลัพธ์ที่ได้จากการค้นจากปัจจุบันนี้ไปรวมกับก่อนหน้านี้แล้วค่อยแสดงผล                                                                                                                           - remove from the currently selected features in = ให้นำผลลัพธ์จากเงื่อนไขในปัจจุบัน ไปลบออกจากผลลัพธ์อันเก่า แล้วค่อยแสดงผล                                                                                                -           - select  from the   currently selected features in = ให้เลือกเฉพาะข้อมูลที่เหมือนกับการคัดเลือกครั้งที่แล้วหรือผลลัพธ์ที่ได้จากครั้งที่แล้ว



     ส่วนที่ 2 Target Layer(s) หรือเป็นชั้นข้อมูลเป้าหมายที่ต้องการจะสืบค้นต้องการทราบว่ามีกี่หมู่บ้านที่ตั้งอยู่ใกล้ถนนในระยะ 100 เมตร เพราะฉะนั้น Target Layer(s) ก็คือ VILLAGE



ส่วนที่ 3  Source Layer เป็นอีกหนึ่งข้อมูลที่จะนำไปดำเนินการในที่นี้คือ TRANS




ส่วนที่ 4 Spatial Selection method เทียบได้กับตัว Operator หรือตัวดำเนินงาน คือ Spatial   Selection method เป็นรูปแบบของการดำเนินงาน คือจะเอาตัว VILL AGE  กับ TRANS มาทำอะไรกันสักอย่างหนึ่งเพื่อให้ได้เงื่อนไขตามที่เรากำหนด ซึ่งจะมีให้เลือกหลายวิธีการ เช่น intersect แต่ในกรณีนี้ที่จะดูจุดหมู่บ้านว่าอยู่ภายในรัศมีหรือระยะทางที่กำหนดหรือไม่ จะต้องเลือกอันที่ 3


เลือกที่ช่อง Apply a seach distance และใส่ 100 โดยให้หน่วยเป็น Meters



จากนั้นกด Apply จุดที่เป็นไฮไลต์คือผลของหมู่บ้านที่ตั้งอยู่ใกล้ถนนในระยะ 100 เมตร  





























ไม่มีความคิดเห็น:

แสดงความคิดเห็น