ค้นหาข้อมูลในบล็อก (Search in this blog)

Wednesday, January 8, 2014

การตรวจสอบเส้นโครงแผนที่ของชุดข้อมูลแรสเตอร์ (Detecting the map projection of a raster dataset)

ปัญหาที่มักพบบ่อยๆในการตรวจความเรียบร้อยของข้อมูลแรสเตอร์จำนวนมากอย่างหนึ่งคือ การค้นหาไฟล์ข้อมูลที่มีการใช้เส้นโครงแผนที่ที่แตกต่างกัน เช่น เมื่อเราได้ข้อมูลภาพมาจำนวนหนึ่ง และอยากทราบว่าแต่ละภาพนั้นใช้เส้นโครงแแผนที่แบบใดและในชุดข้อมูลนี้มีไฟล์ใดบ้างที่ใช้เส้นโครงแผนที่ที่แตกต่างกัน แนวทางปกติที่ใช้กันคือ เรียกดูข้อมูลเส้นโครงแผนที่ทีละไฟล์ ซึ่งก็ดูเหมือนจะสะดวกและไม่ยุ่งยากอะไร แต่ลองจินตนาการถึงชุดข้อมูลจำนวนมาก เช่น 100 หรือ 1,000 ไฟล์ขึ้นไป ซึ่งหากจะให้มานั่งเปิดดูข้อมูลเส้นโครงแผนที่ทีละไฟล์คงไม่สะดวกและเสียเวลามากแน่ๆ
วันนี้ผมขอนำเสนอแนวทางแก้ไขปัญหา ที่ผมมักใช้เสมอ คือการประยุกต์ใช้ฟังก์ชัน gdaltindex ผ่านทาง FWTools Shell สำหรับการหาข้อมูลภาพ (Raster) ที่มีการใช้เส้นโครงแผนที่แตกต่างกัน โดยปกติแล้ว gdaltindex นั้นใช้สำหรับการสร้าง index file (Vector) สำหรับการเรียกข้อมูลแรสเตอร์ด้วย UMN MapServer ครับ แต่เราสามารถดัดแปลงฟังก์ชันนี้สำหรับการหาข้อมูลที่มีการใช้เส้นโครงแผนที่แตกต่างกันดังตัวย่างการใช้งานดังนี้ครับ

>>gdaltindex xxx.shp [Raster Dataset]
ตัวอย่างการใช้งาน
>>gdaltindex index.shp .\*.tif

ตัวอย่างการใช้งานจริงสามารถทำได้ดังภาพตัวอย่างที่่ 1 เลยครับ















ภาพที่ 1 ตัวอย่างการใช้ gdaltindex สำหรับการค้นหาไฟล์ที่ใช้เส้นโครงแผนที่ที่แตกต่างกัน

จากภาพตัวอย่างจะพบว่าไฟล์ a102.tif นั้นมีการใช้งานเส้นโครงแผนที่แตกต่างจากไฟล์อื่นๆครับ ลองนำแนวทางนี้ไปประยุกต์ใช้งานกันดูนะครับ


Wednesday, August 28, 2013

การหาค่าสถิติเบื้องต้นของข้อมูลภาพด้วย Matlab



วันนี้จะขออนุญาตนำเสนอวิธีการเรียกใช้งานฟังก์ชันพื้นฐานที่อาจจะเป็นเรื่องง่ายมากๆสำหรับท่านที่เคยใช้งาน Matlab เป้นประจำแต่สำหรับผมนานๆใช้ทีเลยต้องบันทึกไว้กันลืมสักหน่อย (-_-)" ตัวอย่างการคำนวนหาค่าสถิติเบื้องต้นที่จะทดลองใช้งานในครั้งนี้ได้แก่ค่า Maximum, Minimum, Mean/Average และ Standard Deviation เป็นต้นครับ
การประมวลผลข้อมูลภาพนั้นเจ้า Matlab จะมองข้อมูลภาพและค่าของจุดภาพในรูปของเมทิรกซ์ (Matrix) โดยขนาดของเมทริกซ์จะเท่ากับขนาดของข้อมูลภาพ เช่น ข้อมูลภาพหนึ่งมีขนาด 100 x 100 จุดภาพ จำนวน 4 ช่วงคลื่น (band) นั้นเมื่อนำข้อมูลภาพเหล่านี้เข้าสู่โปรแกรม Matlab แล้ว โปรแกรมจะทำการแปลงข้อมูลให้อยู่ในรูปของเมทริกซ์ที่มีขนาดและมิติเท่ากับข้อมูลต้นฉบับ โดยค่าของจุดภาพ  (Pixel values/Brightness values - BV/Digital Number - DN) จะถือว่าเป็นสมาชิกของเมทริกซ์ที่มีตำแหน่ง (ลำดับ) เหมือนข้อมมูลภาพครับ
 
ตัวอย่างการนำเข้าข้อมูลภาพเพื่อการวิเคราะห์และประมวลผลภาพด้วย Matlab นั้นสามารถทำได้โดยใช้ฟังก์ชัน imread ดังตัวอย่างดังนี้

การแปลงข้อมูลภาพให้เป็นเมทริกซ์
##############################
>>imred('C:\images\theos.tif')                   % หรือ
>>imred('C:\images\theos.tif');                  % หรือ
>>theos = ('C:\images\theos.tif');


การหาขนาดของข้อมูลภาพหรือเมทริกซ์ สามารถทำได้โดยใช้คำสั่ง size ดังตัวอย่าง
##############################
>>size(theos)
ans =

        1500        1500           4                 
%
ขนาดของเมทริกซ์คือ row, column, band ตามลำดับครับ

 ส่วนการเปลี่ยนข้อมูลภาพให้เป็นเมทริกซ์แบบแยกช่วงคลื่นสามารถทำได้ดังนี้
##############################
band1 = theos(:,:,1);
band2 = theos(:,:,2);
band3 = theos(:,:,3);
band4 = theos(:,:,4);                                
%
ตรงนี้ต้องระวังการเรียงลำดัของช่วงคลื่นนะครับ

ใน Matlab นั้นมีฟังก์ชันการคำนวณสถิติพื้นฐานไว้ให้อยู่แล้วนะครับ เราสามารถเรียกใช้งานได้ดังตัวอย่างครับ
ค่า Maximum ค่า Minimum
##############################
>>max(max(band1))
>>max(band1(:))                                  
%
การใช้ band1(:) นั้นจะใช้เมื่อต้องการหาค่าของเมทริกซ์ทั้งทาง row และ column ครับ
>>min(band1(:));

ค่า Mean/Average
##############################
>>mean2(band1)                                      
%
ฟังก์ชัน mean2 สามารถใช้ได้กับเมทริกซ์ 2 มิติครับ

ค่า Standard Deviation
##############################
>>std2(band1)                                          
%
ฟังก์ชัน std2 สามารถใช้ได้กับเมทริกซ์ 2 มิติครับ


ครั้งหน้าถ้าว่างๆจะขอแนะนำวิธีการประมวลผลภาพเบื้องต้นครับ

Wednesday, July 17, 2013

สัมประสิทธิ์แคปปา (Kappa coefficient)

วันนี้คุณน้องสาวสุดที่เลิฟ  ได้ส่งข้อความมาถามว่าเคยใช้ Kappa coefficient  สำหรับการิเคราะห์ข้อมูลไหมและต่างจาก Pearson correlation coefficient อย่างไร ผมเห็นว่าเป็นคำถามที่น่าสนใจและน่าจะเป็นประโยชน์สำหรับเพื่อนๆบางท่าน เลยอยากจะขออนุญาตแบ่งปันประสบการณ์ดังนี้ครับ

Kappa coefficient หรือชื่อทางการคือ Cohen's kappa coefficient นั้นเป็นค่าสถิติที่ใช้ทดสอบความสอดคล้อง (Consistency) กันของข้อมูล 2 กลุ่ม ในบางกรณีอาจใช้สำหรับเปรียบเทียบการประเมินค่าของข้อมูลชุดเดียวกันจากผู้ประเมิน 2 คน โดย Kappa coefficient นั้นไม่จำเป็นต้องอาศัยสมมุติฐานที่ว่าข้อมูลที่สนใจนั้นมีการแจกแจงแบบปกติ (Normal distribution) หรือที่เรียกว่า Non-parametric statistic
ผลลัพธ์ที่ได้จาก Kappa coefficient นั้นจะอธิบายถึงความสอดคล้องระหว่างกันของ 2 ชุดข้อมูลนั่นเอง ฟังดูอาจ งง งง ผมขอยกตัวอย่างในงานการรับรู้จากระยะไกล (Remote Sensing) นั้นมักจะใช้การหาค่า Kappa coefficient  ประกอบการประเมินความถูกต้องของการจำแนกข้อมูล (Classification) กล่าวคือ เมื่อเราได้ค่าความถูกต้องของการจำแนกขข้อมูล (เช่น Overall accuracy) เมื่อเทียบกับข้อมูลอ้างอิงแล้ว เราต้องการแสดงระดับของความสอดคล้อง (Agreement) ระหว่างข้อมูลอ้างอิงและผลการจำแนกข้อมูลที่ได้จากการทดลองด้วยวิธีการจำแนกแบบต่างๆ เราก็จะใช้เจ้าค่า Kappa coefficient นี่เองเป็นตัวบ่งชี้ (คล้ายกับระดับความเชื่อมั่น เน้น นะครับ แค่ "คล้าย")

ส่วน Pearson correlation coefficient นั้นจะต้องอาศัยสมมุติฐานที่ว่าข้อมูล 2 ชุดข้อมูลที่นำมาเปรียบเทียบกันนั้นมีความสัมพันธ์เชิงเส้นระหว่างกัน (Linear correlation) ซึ่งก็หมายถึง ต้องมีการขึ้นต่อกัน (Dependency) ระหว่างชุดข้อมูล โดยค่าที่ได้จากการคำนวณ Pearson correlation coefficient จะบ่งบอกความสัมพันธ์ระหว่างของชุดข้อมูลว่ามีทิศทางอย่างไร (ระหว่าง -1 ถึง +1)

ประเด็นที่น่าสนใจคือ แล้วเราจะใช้เจ้า Kappa coefficient และ Pearson correlation coefficient ตอนไหน ตรงนี้จากประสบการณ์ผมคิดว่า เราต้องดูสมมุติฐานงานวิจัยของเรา ว่า เราสนใจในประเด็นใด เช่น พฤติกรรมหรือแนวโน้มของข้อมูล (Pearson correlation coefficient ) หรือดูความสอดคล้องระหว่างกันของข้อมูล ((Kappa coefficient)

Monday, July 8, 2013

การตัดข้อมูลภาพด้วย gdalwarp

วันนี้ขอเสนอวิธีการตัดข้อมูลภาพด้วย gdalwarp ตัวอย่างของปัญหาคือ ผมมีข้อมูลภาพดาวเทียมหลายภาพ (อาจมาจากหลากหลายช่วงเวลาหรือหลายแหล่งข้อมูล) ความต้องการของผมคือ ผมต้องการใช้แค่บางส่วนของภาพเหล่านั้น เช่น พื้นที่ศึกษาของผมนั้นเป็นส่วนหนึ่งของภาพดาวเทียม หากนำเอาข้อมูลทั้งภาพไปประมวลผลจะทำให้เกินความจำเป็นและเสียเวลาในการประมวลผลข้อมูลเพิ่มมากขึ้น โดยทั่วไปแล้วเราสามารถแก้ปัญหานี้ได้โดยการตัดภาพออกเป็นส่วนย่อยๆ หรือ เลือกเอาเฉพาะพื้นที่ที่ต้องการโดยใช้เครื่องมือของโปรแกรม OpenEV ที่ Export --> Advance Options --> Interactive Options ที่สามารถเลือกได้หลายแบบทั้ง Windows Input หรือ Draw ROI แต่วิธีการดังกล่าวมีข้อจำกัดคือ สามารถทำได้ครั้งละหนึ่งไฟล์เท่านั้น ดังนั้นผมจึงขอเสนอวิธีที่จะช่วยลดเวลาจากการเรียกเปิดข้อมูลทีละภาพเพื่อทำการตัดข้อมูลเฉพาะพื้นที่ที่ต้องการโดยกาารใช้คำสั่ง FOR บน DOS และเจ้า gdalwarp ดังนี้

>>FOR %i IN (*.tif) DO gdalwarp -te xmin ymin xmax ymax input_files output_files

ตัวอย่างการใช้งานจริงดังนี้ครับ

C:\THEOS_PANSHARP>FOR %i IN (*.tif) DO gdalwarp -te 832600
1656400 835600 1659400 %i urban_%i

*** โดย "urban_" คือ prefix ที่ผมใส่ไว้ในหน้าไฟล์ผลลัพธ์เพื่อให้แยกความแตกต่างระหว่างไฟล์ต้นฉบับและไฟล์ภาพที่ตัดแล้ว เช่น ไฟล์ต้นฉบับ ผมมีหลายไฟล์ได้แก่ bt.tif, mt.tif, pca.tif, ihs.tif, mihs.tif, gs.tif, ehlers.tif, hpf.tif และ wvlet.tif ส่วนไฟล์ที่ตัดเอาเฉพาะพื้นที่ศึกษาหรือพื้นที่ที่ต้องการจะได้เป็นไฟล์ใหม่คือ
urban_bt.tif
urban_mt.tif
urban_pca.tif
urban_ihs.tif
urban_mihs.tif
urban_gs.tif
urban_ehlers.tif
urban_hpf.tif และ urban_wvlet.tif  ตามลำดับครับ

Tuesday, June 4, 2013

Font encoding เจ้าปัญหา!!!

วันนี้ขอแนะนำวิธีอ่าน Font ยึกยือของไฟล์ข้อมูล หัวข้อนี้ได้บทเรียนจากปัญหาของเครื่องแม่ข่ายที่เมื่อมีผู้อัพโหลดไฟล์ภาพแล้ว ระบบได้จัดการสร้างชื่อไฟล์อัตโนมัติ แต่ชื่อไฟล์ที่สร้างขึ้นนั้นไม่สามารถอ่านออกได้ (มีปัญหาเฉพาะภาษาไทย) ดังภาพตัวอย่างที่ 1


ภาพที่ 1 ไฟล์ข้อมูลที่มีปัญหาเกี่ยวกับการเข้ารหัส (Encoding)

วิธีการแก้ไขเพื่อให้อ่านชื่อไฟล์ได้สามารถทำได้หลายแนวทาง วันนี้จะขอแนะนำแนวทางหนึ่งที่คิดออกดังนี้ครับ
1. อ่านชื่อไฟล์ด้วย DOS command prompt  (dir) แล้วทำการเก็บรายชื่อไฟล์ที่อ่านได้เป็นไฟล์อักขระ (Text file) ด้วยคำสั่งดังตัวอย่าง
#dir >filename.txt
2. เมื่อเปิดไฟล์ filename.txt ด้วย text editor เช่น notepad แล้วจะพบว่าชื่อไฟล์สามารถแสดงผลเป็นภาษาไทยได้อย่างถูกต้อง
3. เขียนชุดคำสั่งเพื่อเปลี่ยนชื่อไฟล์ (rename) ด้วย  DOS command prompt


ปล. Environment ของเครื่องคอมพิวเตอร์อาจแตกต่างกันทำให้การแสดงผลที่ได้อาจแตกต่างกัน หากเพื่อนๆลองทำตามแล้วก็ยังไม่ได้อาจปรึกษาเพิ่มเติมได้ผ่านทางอีเมล์ ยินดีช่วยเหลือครับ

Sunday, May 12, 2013

วิธีการสร้าง Tile ข้อมูลภาพ

การสร้าง Tile ให้ข้อมูลภาพนั้นจะช่วยให้การเรียกอ่านข้อมูลภาพมีประสิทธิภาพมากยิ่งขึ้น วิธีการสร้างสามารถทำได้หลายแนวทาง วันนี้จะขอเสนอวิธีการหนึ่งที่ผู้ใช้งาน GDAL หรือ FWTOOLS สามารถทำงานได้ทันทีโดยไม่ต้องติดตั้งโปรแกรมอื่นๆเพิ่มเติม (LibTIFF จะถูกรวมอยู่แล้วใน GDAL)
ตัวอย่างการทำงาน ผมต้องการแปลงระบบพิัดข้อมูลภาพพร้อมทั้งสร้าง TILE ข้อมูลภาพไปพร้อมกัน ผมสามารถทำได้ดังนี้
>>gdalwarp -t_srs epsg:4326 -co "TILED=YES" -co BLOCKXSIZE=512 -co BLOCKYSIZE=512 image.tif tiled_image.tif
เมื่อ -co คือการเรียกใช้งานทางเลือกพิเศษ (Create Options) โดยทางเลือกที่เรียกใช้งานมีดังนี้
              "TILED=YES"                        การทำ Tile ข้อมูล
              "BLOCKXSIZE=n"                การระบุขนาดของ Tile ทางแกน X
              "BLOCKYSIZE=n"                การระบุขนาดของ Tile ทางแกน Y
ภายหลังจากการสร้าง Tile ข้อมูลภาพแล้วสามารถเรียกดูผลลัพธ์ได้จากการใช้งาน gdalinfo โดยสังเกตจากขนาดของ Block ดังนี้
ตัวอย่างข้อมุลภาพที่มีการทำ Tile ด้วยขนาด 512x512 จุดภาพ

Saturday, December 15, 2012

ปัญหาที่พบระหว่างการทำงานกับไฟล์ข้อมูลภาพจำนวนมาก

ชีวิตช่วงนี้ยุ่งๆกับการทำงานวิจัยของตัวเอง บังเอิญมีปัญหาที่หลากหลายในการทำงานจึงอยากเอามาแบ่งปัน เผื่อว่าบางท่านอาจจะเจอปัญหาในลักษณะเดียวกัน ดังนี้ครับ

  1. โปรแกรม xxx ไม่สามารถโมเสคไฟล์ถาพจำนวนมากได้ (แค่ 3,000 กว่าไฟล์เอง ทำเป็นใจเสาะ ตายเอาดื้อๆซะงั้น) วิธีการแก้ไขของผม คือ แยกไฟล์ที่มีเลขระวางหมวดเดียวกันไว้ด้วยกันก่อน  (ในกรณีของข้อมูลที่อาศัยระบบเลขระวาง อาจใช้เลขระวางสามหรือสี่ตัวแรกของชื่อไฟล์ในการจัดหมวดหมู่) แล้วทำการโมเสค ที่ละหมวดๆ แล้วค่อยนำมาโมเสคกันภายหลัง เช่น ไฟล์ทั้งหมด สามพันกว่าไฟล์เมื่อทำการจัดหมวดหมู่แล้ว อาจจะเหลือเพียงแค่ สิบหมวดหลัก (ที่มีตัวเลขสี่ตัวแรกเหมือนกัน) ซึ่งวิธีการทำงานนั้นสามารถใช้การเขียน Batch ช่วยในการคัดแยกไฟล์ หรือการใช้เครื่องหมาย * ต่อท้ายชือไฟล์สามหรือสี่ตัวแรก เพื่อทำการจัดกลุ่มข้อมูล หลังจากทำการจัดหมวดหมู่ (จัดกลุ่ม) แล้วก็ให้ทำการโมเสคต่อกันในแต่ละหมวดเข้าด้วยกัน แล้วค่อยนำผลที่ได้มาโสเสคกันอีกครั้งเพื่อให้ได้ไฟล์ภาพที่โมเสคทั้งหมดทั้ง  3,000 กว่าไฟล์
  2. การโมเสคอาจเกิดช่องว่างระหว่างแถวหรือคอลัมน์ อันเนื่องมากจากการโมเสคของแต่ละหมวดข้อมูลภาพ (ถ้าโมเสคพร้อมกันทั้งหมดจะไม่เกิดปัญหานี้) วิธีการแก้ไข ผมใช้วิธีการสุ่มโมเสคที่ละหมวดก่อน หากหมวดไหนที่มีปัญหาการเกิดแถวช่องว่าง ผมจะโมเสค หมวดนั้นรวมกันกับหมวดอื่นๆพร้อมกันในคราวเดียว (อาจมีปัญหาขนาดไฟล์มากเกินไปจะโปรแกรมไม่สามารถทำงานได้)
  3. โปรแกรม xxx และ gdal_merge ไม่สามารถโมเสคไฟล์ที่มีชนิดข้อมูลที่ต่างกันได้ วิธีการแก้ไขก็ตรงไปตรงมาคือ ทำการแปลงชนิดข้อมูลก่อนแล้วจึงทำการโมเสคภาพ
  4. มีข้อมูลผิดพลาดในไฟล์ เช่น ค่าจุดภาพที่มากหรือน้อยเกินจริง เพียงไม่กี่จุดภาพ ซึ่งไม่มีการแสดงผลในส่วนของ Image information วิธีการแก้ไขคือ ทำการแปลงให้อยู่ในรูปของไฟล์ CSV แล้วเรียกดูด้วยโปรแกรมพวก Spreadsheet แล้วทำการเรียง (Sorting) เพื่อดูค่าดังกล่าว โดยผู้ใช้งานโปรแกรมอาจแก้ไขได้ โดยการเปลี่ยนค่าในไฟล์ CSV ก่อนแล้วจึงนำไฟล์ CSV นี้ไปทำการแปลงกลับให้เป็นข้อมูลภาพ
  5. ค่าของจุดภาพคลาดเคลื่อนไปจากจุดภาพข้างเคียงไม่มากนัก (กรณีของข้อมูลแบบจำลองภูมิประเทศเชิงเลข) วิธีการสังเกตให้ใช้เครื่องมือจำพวก Image Enhancement เพื่อทำให้เห็นจุดภาพเหล่านั้น เด่นชัดมากขึ้น

Thursday, September 20, 2012

QGIS: วิธีแก้ปัญหา Labels ซ้อนทับกัน

วันนี้ขอเสนอวิธีการแก้ปัญหาการซ้อนทับกันของ Labels จากการใช้งานโปรแกรม QGIS ก่อนอื่นผมขอแสดงตัวอย่างของปัญหาก่อนนะครับ สมมุติว่าผมต้องการทำ  Labels ของ Polygons ปกติผมก็จะทำการกำหนดค่าโดยเลือกที่ชั้นข้อมูลแล้วกำหนดที่แท็บ  Labels ดังภาพที่ 1

ภาพที่ 1 การกำหนดค่าของ  Labels  แบบปกติ
หลังจากนั้นจะได้ตัวอย่างผลลัพธ์ดังภาพที่ 2 ดังนี้



ภาพที่ 2 ตัวอย่าง Labels ที่ซ้อนทับกัน
จะสังเกตได้ว่าทุกๆ Polygons นั้นมีค่าของ Labels เหมือนกัน แต่เนื่องจาก Polygons ต่างๆนั้นอยู่ชิดติดกันเกินไป (เมื่อเทียบกับมาตราส่วนการแสดงผล) ทำให้เกิดการซ้อนทับกัน (Overlap) ของ Labels 
วันนี้ผมขอเสนอหนึ่งในวิธีการแก้ปัญหานี้ครับ
อันดับแรกให้ทุกท่านยกเลิก Labels ที่ได้ทำไว้เสียก่อน โดยการ "ไม่เลือก" ที่ Display labels แล้ว กด Apply/OK หรือ "เอาชั้นชั้นข้อมูลที่ต้องการทำ Labels ออกแล้วเปิดชั้นข้อมูลใหม่ (เหมือนคอมพ์ เวลามีปัญหาทำอะไรไม่ถูกก็ปิดแล้วเปิดใหม่ ฮ่าๆๆ)"
เพื่อความเข้าใจอย่างง่าย (แล้วก่อนหน้านี้จะอธิบายให้ งง ทำไม) คือให้เปิดชั้นข้อมูลปกติโดยยังไม่ต้องทำอะไร (ยังไม่ต้อง Labels ใดๆทั้งสิ้น) ดังภาพที่ 3 

ภาพที่ 3 การเปิดชั้นข้อมูลก่อนสร้าง Labels (ควรให้เป็นแบบนี้ก่อนเสมอนะครับ)
หลังจากนั้นให้เลือกที่เมนู Layer --> Labeling หลังจากนั้นจะปรากฏหน้าต่างให้กำหนดค่าและทำการกำหนดค่าของ  Labels ที่ต้องการดังตัวอย่างภาพที่ 4

ภาพที่ 4 ภาพตัวอย่างหน้าต่างสำหรับกำหนดค่า Labels และการกำหนดค่าของ  Labels
เมื่อกำหนดค่าของ Labels ด้วยวิธีการนี้เรียบร้อยแล้ว จะพบว่าไม่ปรากฏการซ้อนทับกันของ Labels อีกตัวอย่างดังภาพที่ 5

ภาพที่ 5 ตัวอย่างการทำ Labels แบบไม่มีการซ้อนทับกัน

หมายเหตุ
  • ตัวอย่างนี้ใช้โปรแกรม QGIS version 1.7.4
  • หากท่่านใดทำตามตัวอย่างแล้วยังเกิดปัญหาโปรดแจ้งให้ทราบด้วยครับ

Monday, June 4, 2012

ภูมิสารสนเทศในยุค Spatio-temporal information system

วันนี้ตื่นขึ้นมาไม่รู้มีอะไรดลใจให้คิดถึงเกี่ยวกับ วิชาชีพและสิ่งที่ผมกำลังเรียนรู้อยู่ในปัจจุบัน คิดไปคิดมา ทำให้ผมได้ข้อสรุปดังนี้ครับ งานด้านภูมิสารสนเทศในยุคปัจจุบัน (5-10 ปีมานี้)ได้มีการเปลี่ยนแปลงไปจากเดิม กล่าวคือ ยุคก่อนหน้านี้เราจะเน้นศึกษาสิ่งต่างๆเพียง 2 ด้าน กล่าวคือ สิ่งที่เราสนใจนั้นมีคุณลักษณะหรือคุณสมบัติ (Attribute) อย่างไร เมื่อมีตำแหน่ง (Space) ที่แตกต่างกัน แต่ในปัจจุบัน งานวิจัยต่างๆที่เกียวข้องกับภูมิสารสนเทศนั้นได้ให้ความสนใจเกี่ยวกับเชิงเวลา (Temporal) ดังจะเห็นได้จากบทความงานวิจัย มาตรฐานการทำงานของโปรแกรมด้านภูมิสารสนเทศ หรือมาตรฐานการจัดเก็บข้อมูลในระบบฐานข้อมูล สิ่งต่างๆเหล่านี้ล้วนแต่ให้ความสนใจเกี่ยวกับเวลาซึ่งนอกเหนือไปกว่า "ตำแหน่งและคุณลักษณะ" ถ้าจะอธิบายให้เข้าใจอย่าง่าย ผมขออนุญาตยกตัวอย่างภาพประกอบดังนี้ครับ

ภาพที่ 1 สิ่งที่งานด้านภูมิสารสนเทศให้ความสนใจ(เทียบได้กับแกนต่างๆ)
จากภาพตัวอย่างจะเห็นว่า ปัจจุบันนี้ เรามีประเด็นใหม่ที่ต้องให้ความสนใจ (ตระหนัก) ประกอบการวิเคราะห์ข้อมูลเชิงตำแหน่ง (Spatial data analysis) นั่นคือเจ้า "เชิงเวลา (Temporal)" นั่นเอง
คำถามที่หลายๆท่านสงสัย เมื่อได้ยินคำว่า Spatio-temporal analysis คือ มีความแตกต่างจากรูปแบบเดิมอย่างไรและวิธีการวิเคราะห์ข้อมูลแตกต่างจากที่ทำๆกันอยู่ในปัจจุบันอย่างไร รวมถึงมันสำคัญและช่วยเราวิเคราะห์อะไรได้บ้าง???
 ครั้งหนึ่งผมเคยเข้ารับฟังการบรรยายเมื่อปี 2551 (2008) ระหว่างการประชุม ISPRS congress 2008 เกี่ยวกับการศึกษาด้าน Spatio-Temporal analysis ตอนนั้นต้องยอมรับว่า ผมเองก็ยังมองไม่เห็นภาพว่าเราจะนำความรู้เหล่านี้มาประยุกต์ใช้ได้อย่างไร..........


คราวหน้าผมจะมาแนะนำถึงความสามารถของเจ้า Spatio-Temporal analysis ครับ
ปล. ขนาด Facebook ยังมีทั้ง Location และ Timeline หรือว่าเจ้า Spatio-Temporal information system อยู่ใกล้ๆตัวเรานี่แหละ!!!

Thursday, May 31, 2012

กำหนดช่วงชั้นข้อมูลด้วยฟังก์ชัน IF

วันนี้ขอทดลองเขียนคำสั่งการคำนวณหาระดับชั้น (Class) แบบกำหนดค่าช่วงเอง (Interval) บนโปรแกรม Spreadsheet ด้วยตัวอย่าดังนี้ครับ
สมมุติผมมีค่าของข้อมูลที่อยู่ในช่วงต่างๆดังนี้

A 0.81
B 0.75
C 0.67
D 0.58
E 0.88
F 0.43
G 0.74
H 0.77
I 0.95

โดยโจทย์ของผมคือ ผมต้องการแยกข้อมูลดังกล่าวให้อยู่ในช่วงที่ผมต้องการโดยทำการให้ค่าใหม่ (คล้ายกับการทำ Label ข้อมูล) ดังนี้
โดยค่า 1 (ที่กำหนดใหม่) จะมีค่าของข้อมูลตั้งแต่ 0.0 - 0.4 (x <0.4) ค่า 2 มีค่าของข้อมูลตั้งแต่ 0.4 - 0.6 (x >= 0.4 and x < 0.6) ค่า 3 มีค่าของข้อมูลตั้งแต่ 0.6 - 0.7 (x >= 0.6 and x < 0.7) ค่า 4 มีค่าของข้อมูลตั้งแต่ 0.7 - 0.8 (x >= 0.7 and x < 0.8) และค่า 5 มีค่าของข้อมูลตั้งแต่ 0.8 - 1.0 (x >= 0.8)
เมื่อเราทำการกำหนดค่าของแต่ละช่วงข้อมูลเรียบร้อยแล้วขั้นตอนต่อมาคือการสร้างสูตรในโปรแกรม Spreadsheet จากตัวอย่างผมสามารถเขียนโดยใช้ฟังก์ชัน IF ดังนี้ครับ

IF(CELL>=0.8,5,IF(CELL>=0.7,4,IF(CELL>=0.6,3,IF(CELL>=0.4,2,1))))
เมื่อ CELL คือ ตำแหน่งของเซลล์ที่ต้องการคำนวณ
จากตัวอย่างจะได้ผลลัพธ์ดังนี้
กลุ่มที่ 1 ไม่มีสมาชิก
กลุ่มที่ 2 มีสมาชิกคือ D, F
กลุ่มที่ 3 มีสมาชิกคือ C
กลุ่มที่ 4 มีสมาชิกคือ B, G, H
กลุ่มที่ 5 มีสมาชิกคือ A, E, I
ลองเอาไปประยุกต์กันดูนะครับ อย่างเช่นการ reclass ของข้อมูลที่ผ่านการจำแนกข้อมูลแล้ว (Classification) เป้นต้น