วัันี้ขอนำเสนอวิธีการเลือกชั้นข้อมูลที่ต้องการออกจากข้อมูล Las File ตัวอย่างเรามีข้อมูลไรดาห์ในรูปแบบ Las File ในข้อมูลนี้มีการจำแนกข้อมูลแล้วไว้หลายชั้นข้อมูล เช่น Unclassified (1) หรือ Ground (2) เป็นต้น
วิธีการดูว่าข้อมูลเรามีจำแนกชั้นข้อมูลหรือยังและแต่ละชั้นมีรัหสอะไร ให้โปรแกรม lasinfo ดังตัวอย่าง
>>lasinfo -i aaa.las
ส่วนวิธีการแยกข้อมูลที่ต้องการออกมาให้โปรแกรม las2las ดังตัวอย่างดังนี้ครับ
>>las2las -i aaa.las -keep_class 2 -o bbb.las
จากตัวอย่างผมทำการเก็บคลาสข้อมูลพื้นดิน (Ground) ไว้เพื่อต้องการทำ DEM จากข้อมูลไรดาห์ส่วนคลาสอื่นๆนั้นผมไม่สนใจ (ลบทิ้งได้เลย)
Monday, February 1, 2010
Monday, January 11, 2010
การสร้าง Polygon จากข้อมูลจุดพิกัดด้วย QGIS
วันนี้ขอเสนอวิธีการสร้างข้อมูล Polygon จากข้อมูลจุด (Point) ที่อยู่ในรูปของ text file หรือข้อมูล CSV
กอ่นอื่นเราต้องเตรียมข้อมูลพิกัดจุด (Lat/Long หรือ E, N) ซึ่งอาจอยู่ในรูป CSV เช่น
x, y
755359.337, 1429096.185
777359.337, 1429096.186
777359.337, 1407096.186
755359.337, 1407096.185
หลังจากนั้นเราจะทำการแปลงข้อมูลจากอักขระ (Text) ให้เป็นข้อมูล Shapefile แบบจุด (Point) ด้วย PlugIn ที่ชื่อ Delimited Text ใน QGIS โดยทำการเลือกข้อมูล text file แล้วแปลงให้เป็น ESRI Shapefile ดังภาพตัวอย่าง
หลังจากได้ข้อมูลจุดในรูปของ ESRI Shapefile แล้วขั้นตอนถัดมาคือการแปลงข้อมูลแบบจุดให้เป็นข้อมูล Polygon โดยการใช้ฟังก์ชัน Convex Hull ที่อยู่ในเมนู Tools --> Geoprocessing Tools ดังภาพ

วิธีการนี้มีข้อจำกัดหลายประการ เช่น
1. ใช้ได้เฉพาะข้อมูล Polygon ที่ไม่ซับซ้อน อาทิ รูปสี่เหลี่ยมมุมฉาก สี่เหลี่ยมผืนผ้าหรือสามเหลี่ยม เป็นต้น
2. ไม่สามารถใช้ได้กับ Polygon ที่มี Ring (ถ้านึกไม่ออกให้นึกถึงโดนัทนะครับ ที่มีรูตรงกลาง)
3. ถ้าข้อมูลมี node ที่ยื่นออกมาจากกลุ่มข้อมูลจะทำให้ Polygon ที่ได้ผิดไปจากความเป็นจริง (ไม่รู้จะอธิบายยังไงดี แฮะๆ)
ปล. เพื่อเพิ่มความเข้าใจโปรดศึกษาเรื่อง Convex Hull ละกันนะครับ
กอ่นอื่นเราต้องเตรียมข้อมูลพิกัดจุด (Lat/Long หรือ E, N) ซึ่งอาจอยู่ในรูป CSV เช่น
x, y
755359.337, 1429096.185
777359.337, 1429096.186
777359.337, 1407096.186
755359.337, 1407096.185
หลังจากนั้นเราจะทำการแปลงข้อมูลจากอักขระ (Text) ให้เป็นข้อมูล Shapefile แบบจุด (Point) ด้วย PlugIn ที่ชื่อ Delimited Text ใน QGIS โดยทำการเลือกข้อมูล text file แล้วแปลงให้เป็น ESRI Shapefile ดังภาพตัวอย่าง

หลังจากได้ข้อมูลจุดในรูปของ ESRI Shapefile แล้วขั้นตอนถัดมาคือการแปลงข้อมูลแบบจุดให้เป็นข้อมูล Polygon โดยการใช้ฟังก์ชัน Convex Hull ที่อยู่ในเมนู Tools --> Geoprocessing Tools ดังภาพ

วิธีการนี้มีข้อจำกัดหลายประการ เช่น
1. ใช้ได้เฉพาะข้อมูล Polygon ที่ไม่ซับซ้อน อาทิ รูปสี่เหลี่ยมมุมฉาก สี่เหลี่ยมผืนผ้าหรือสามเหลี่ยม เป็นต้น
2. ไม่สามารถใช้ได้กับ Polygon ที่มี Ring (ถ้านึกไม่ออกให้นึกถึงโดนัทนะครับ ที่มีรูตรงกลาง)
3. ถ้าข้อมูลมี node ที่ยื่นออกมาจากกลุ่มข้อมูลจะทำให้ Polygon ที่ได้ผิดไปจากความเป็นจริง (ไม่รู้จะอธิบายยังไงดี แฮะๆ)
ปล. เพื่อเพิ่มความเข้าใจโปรดศึกษาเรื่อง Convex Hull ละกันนะครับ
Tuesday, January 5, 2010
วิธีแก้ไขการใช้งาน GDAL ที่เกี่ยวข้องกับ Python
เมื่อวานเจอปัญหาการใช้งาน gdal_merge หรือ gdal_merge.py เลยอยากจะเก็บไว้เตือนความจำสักหน่อยว่า วิธีแก้ไขนั้นไม่ยาก เพียงแต่เพิ่ม Path ของ python ที่ FWtools ใช้งานให้ระบบ (Windows) รู้จักก็เรียบร้อยตัวอย่างของ Path มีดังนี้
C:\Python26 ### อันนี้คือ path ปกติของ python
C:\Program Files\FWTools2.4.6\python ### ส่วนอันนี้คือ Path ของ python ที่ FWtools ใช้งาน
C:\Python26 ### อันนี้คือ path ปกติของ python
C:\Program Files\FWTools2.4.6\python ### ส่วนอันนี้คือ Path ของ python ที่ FWtools ใช้งาน
Wednesday, December 2, 2009
แปลงไฟล์จำนวนมากด้วยคำสั่งบรรทัดเดียว (ของฟรีและดีก็มีในโลก)
ไม่ได้เพิ่มเติมเนื้อใน Blog ตั้งหลายสัปดาห์เนื่องจากติดภารกิจสำคัญ วันนี้เลยขอแนะนำ การใช้งาน GDAL ที่น่าสนใจอย่างยิ่งอีกสักตัวอย่างนึง ซึ่งก็คือ การแปลงรูปแบบข้อมูลจากรูปแบบนึงไปเป็นอีกรูปแบบนึง ฟังดูอาจ งง งง งั้นขอยกตัวอย่าง เช่น การแปลงข้อมูล GeoTIFF ให้เป็น JPEG เป็นต้น
ฟังดูก็ง่ายๆนิ ไม่น่ามีปัญหาอะไร แต่ถ้าหากเราต้องการแปลงไฟล์จำนวนมากๆ (มากกว่า 1,000 ไฟล์) ละจะทำยังไงดี ต้องมานั่งพิมพ์คำสั่งทีละบรรทัด คงไม่ไหวมั้ง !!!
วิธีการที่จะแนะนำนี้ บางครั้งเราสามารถเรียกว่าเป็น batch processing ก็ได้นะครับ เรามาเริ่มกันเลยดีกว่า
ตัวอย่างผมมีไฟล์ภาพจำนวนมากในโฟลเดอร์ C:\myImage โดยเป็นไฟล์นามสกุล TIFF ทั้งหมด ปกติแล้วหากต้องการแปลงนามสกุลเราก็จะใช้ gdal_translate เช่น
>>gdal_translate -of JPEG abc.tif abc.jpg
แต่หากต้องการแปลงไฟล์จำนวนมาก เราสามารถใช้ batch processing เข้ามาช่วยได้ดังนี้
>> for %i IN (C:\myImage\*.tif) DO gdal_translate -of JPEG %i %~ni.jpg
เพียงเท่านี้ไฟล์ทั้งหมดภายใด้ C:\myImage ที่มีนามสกุล TIFF ก็จะถูกแปลงให้เป็น JPEG ทั้งหมดแล้วครับ !!!
ฟังดูก็ง่ายๆนิ ไม่น่ามีปัญหาอะไร แต่ถ้าหากเราต้องการแปลงไฟล์จำนวนมากๆ (มากกว่า 1,000 ไฟล์) ละจะทำยังไงดี ต้องมานั่งพิมพ์คำสั่งทีละบรรทัด คงไม่ไหวมั้ง !!!
วิธีการที่จะแนะนำนี้ บางครั้งเราสามารถเรียกว่าเป็น batch processing ก็ได้นะครับ เรามาเริ่มกันเลยดีกว่า
ตัวอย่างผมมีไฟล์ภาพจำนวนมากในโฟลเดอร์ C:\myImage โดยเป็นไฟล์นามสกุล TIFF ทั้งหมด ปกติแล้วหากต้องการแปลงนามสกุลเราก็จะใช้ gdal_translate เช่น
>>gdal_translate -of JPEG abc.tif abc.jpg
แต่หากต้องการแปลงไฟล์จำนวนมาก เราสามารถใช้ batch processing เข้ามาช่วยได้ดังนี้
>> for %i IN (C:\myImage\*.tif) DO gdal_translate -of JPEG %i %~ni.jpg
เพียงเท่านี้ไฟล์ทั้งหมดภายใด้ C:\myImage ที่มีนามสกุล TIFF ก็จะถูกแปลงให้เป็น JPEG ทั้งหมดแล้วครับ !!!
Sunday, November 15, 2009
การลบขอบข้อมูลภาพก่อนใช้งาน Gdal2tiles (ของฟรีและดีก็มีในโลก)
หากท่านเคยใช้งาน gdal2tiles กับข้อมูลภาพถ่ายดาวเทียมแบบเต็มระวาง มักจะพบว่าเมื่อเปิดข้อมูลภาพเหล่านั้นกับโปรแกรม Google Earth มักจะปรากฏขอบดำบริเวณภาพ สาเหตุก็เนื่องมาจากวงโคจรของดาวเทียมนั้นไม่ได้อยู่ในแนวเหนือใต้จริงๆแต่มีการเยื้องออกจากเส้นละติจูดต่างๆทำให้การบันทึกข้อมูลนั้นเป็นแนวเอียงวันนี้ขอนำเสนอเทคนิคการลบขอบดำออก (เมื่อต้องการนำภาพไปเปิดกับโปรแกรม Google Earth) ด้วยโปรแกรม gdalwarp โดยก่อนอื่นเราต้องทราบค่าบริเวณขอบดำเหล่านี้ก่อน (ปกติเป็นศูนย์) และเมื่อเราทราบแล้วเราก็จะบอกให้โปรแกรมทราบว่าค่าเหล่านี้เป็นค่าที่ไม่มีข้อมูล (No data) ให้จัดการทำให้เป็นชั้นข้อมูลเอลฟา (Alpha Layer) ซึ่งโปรแกรมด้านกาประมวลผลภาพส่วนใหญ่จะใช้เจ้าชั้นข้อมูลเอลฟานี้แทนค่าโปร่งใส (Transparent layer) นั่นเอง ตัวอย่างการใช้งานมีดังนี้ครับ
>>gdalwarp -srcnodata [value] -dstalpha [input_file] [output_file]
ตัวอย่างการมใช้งานมีดังนี้่ครับ
>>gdalwarp -srcnodata 0 -dstalpha abc.tif abc_alpha.tif
>>gdalwarp -srcnodata [value] -dstalpha [input_file] [output_file]
ตัวอย่างการมใช้งานมีดังนี้่ครับ
>>gdalwarp -srcnodata 0 -dstalpha abc.tif abc_alpha.tif
Monday, November 9, 2009
fwtools 2.4.6 ออกแล้วครับ !!!
วันนี้ได้ลองเข้าไปดูความเคลื่อนไหวของโปรแกรม fwtools เนื่องจากต้องไปช่วยอบรมเรื่อง Digital Image Processing ที่ สทอภ. ปรากฏว่ามีเวอร์ชันใหม่ออกมาแล้วคือ 2.4.6 สามารถดาวน์โหลดได้ ที่นี่ ครับ
Saturday, November 7, 2009
การลดรายละเอียดข้อมูลภาพและการเปลี่ยนภาพสีให้เป็นภาพขาวขดำ (เบื้องต้น) ด้วย GDAL
วันนี้ขอนำเสนอการลดรายละเอียดข้อมูลภาพ (Reduce resolution) และการแปลงภาพสีให้เป็นภาพขาว-ดำ (Color to Grey) อย่างง่ายด้วย gdalwarp (ลดรายละเอียด) และ gdal_translate (เปลี่ยนจากภาพสีให้เป็นภาพขาว-ดำ)
ตัวอย่างนี้สมมุติว่าผมมีภาพสีความละเอียด 1 เมตร ต้องการแปลงให้เป็นภาพขาว-ดำ ที่มีความละเอียดจุดภาพ 10 เมตร (จะเห็นว่าการทำงานนี้ประกอบด้วย 2 ขั้นตอนนะครับคือ ลดรายละเอียดและแปลงระบบสี)
ผมขอเริ่มด้วยการลดรายละเอียดข้อมูลภาพก่อนด้วย gdalwarp ซึ่งใช้คำสั่งดังนี้
>>gdalwarp -tr 10 10 -r cubic sample.tif resize.tif
โดย option "-tr" หมายถึง การกำหนดขนาดของจุดภาพ (GSD) ของไฟล์ผลลัพธ์ที่ต้องการ
และ option "-r" หมายถึง วิธีการ resampling จากตัวอย่างผมเลือกใช้วิธี Cubic Convolution
หลังจากได้ภาพที่ลดรายละเอียดจุดภาพลงแล้วเราจะทำการแปลงภาพสีให้เป็นภาพขาว-ดำด้วยโปรแกรม gdal_translate ดังนี้ครับ
>>gdal_translate -b 1 resize.tif resize_grey.tif
โดย option "-b" หมายถึง ให้เลือกให้เลือกเอาเฉพาะช่วงคลื่น (Band) ที่ต้องการเท่านั้น (จากตัวอย่างคือเอาเฉพาะช่วงคลื่นที่ 1 เท่านั้น)
ผลลัพธ์ที่ได้จากตัวอย่างนี้คือภาพต้นฉบับ (ภาพสี 3 ช่วงคลื่นขนาดจุดภาพ 1 เมตร) จะถูกแปลงให้เป็นภาพขาว-ดำ (1 ช่วงคลื่น) ที่มีความละเอียดจุดภาพ 10 เมตร และหากท่านใดต้องการทำกระบวนการนี้กับข้อมูลภาพจำนวนมากก็สามารถใช้การทำงานแบบ Batch processing ได้ครับ (ลองหาตัวอย่างการใช้งาน Batch processing ใน Blog นี้ดูนะครับ)
ตัวอย่างนี้สมมุติว่าผมมีภาพสีความละเอียด 1 เมตร ต้องการแปลงให้เป็นภาพขาว-ดำ ที่มีความละเอียดจุดภาพ 10 เมตร (จะเห็นว่าการทำงานนี้ประกอบด้วย 2 ขั้นตอนนะครับคือ ลดรายละเอียดและแปลงระบบสี)
ผมขอเริ่มด้วยการลดรายละเอียดข้อมูลภาพก่อนด้วย gdalwarp ซึ่งใช้คำสั่งดังนี้
>>gdalwarp -tr 10 10 -r cubic sample.tif resize.tif
โดย option "-tr" หมายถึง การกำหนดขนาดของจุดภาพ (GSD) ของไฟล์ผลลัพธ์ที่ต้องการ
และ option "-r" หมายถึง วิธีการ resampling จากตัวอย่างผมเลือกใช้วิธี Cubic Convolution
หลังจากได้ภาพที่ลดรายละเอียดจุดภาพลงแล้วเราจะทำการแปลงภาพสีให้เป็นภาพขาว-ดำด้วยโปรแกรม gdal_translate ดังนี้ครับ
>>gdal_translate -b 1 resize.tif resize_grey.tif
โดย option "-b" หมายถึง ให้เลือกให้เลือกเอาเฉพาะช่วงคลื่น (Band) ที่ต้องการเท่านั้น (จากตัวอย่างคือเอาเฉพาะช่วงคลื่นที่ 1 เท่านั้น)
ผลลัพธ์ที่ได้จากตัวอย่างนี้คือภาพต้นฉบับ (ภาพสี 3 ช่วงคลื่นขนาดจุดภาพ 1 เมตร) จะถูกแปลงให้เป็นภาพขาว-ดำ (1 ช่วงคลื่น) ที่มีความละเอียดจุดภาพ 10 เมตร และหากท่านใดต้องการทำกระบวนการนี้กับข้อมูลภาพจำนวนมากก็สามารถใช้การทำงานแบบ Batch processing ได้ครับ (ลองหาตัวอย่างการใช้งาน Batch processing ใน Blog นี้ดูนะครับ)
Friday, November 6, 2009
การแปลง Format ของข้อมูลเวคเตอร์ด้วย GDAL/OGR
วันนี้ขอนำเสนอการแปลงรูปแบบข้อมูลเวคเตอร์ เช่น การแปลงไฟล์ DGN ให้เป็น KML เป็นต้น
การทำงานให้ใช้คำสั่ง ogr2ogr ซึ่งมี syntax การใช้งานดังนี้ครับ
>>ogr2ogr -option output_file input_file
โดย option ที่สำคัญมีดังนี้
-f "format_name" ใช้สำหรับการระบุ format ของผลลัพธ์ที่ต้องการ เช่น -f "KML" หรือ -f "ESRI Shapefile" เป็นต้น
-s_srs ใช้สำหรับการระบุระบบอ้างอิงทางตำแหน่งของไฟล์ต้นฉบับ เช่น -s_srs epsg:4326 หรือ -s_srs epsg:32647 เป็นต้น
-t_srs ใช้สำหรับการระบุระบบอ้างอิงทางตำแหน่งของไฟล์ผลลัพธ์
ตัวอย่างการใช้งาน
>>ogr2ogr -f "KML" index.kml index.shp
นอกจากนี้เรายังสามารถแปลงระบบอ้างอิงทางตำแหน่ง (ระบบพิกัด) พร้อมกับการแปลง format ในคำสั่งเดียวดังนี้
>>ogr2ogr -s_srs epsg:32647 -t_srs epsg:4326 -f "KML" index.kml index.shp
การทำงานให้ใช้คำสั่ง ogr2ogr ซึ่งมี syntax การใช้งานดังนี้ครับ
>>ogr2ogr -option output_file input_file
โดย option ที่สำคัญมีดังนี้
-f "format_name" ใช้สำหรับการระบุ format ของผลลัพธ์ที่ต้องการ เช่น -f "KML" หรือ -f "ESRI Shapefile" เป็นต้น
-s_srs ใช้สำหรับการระบุระบบอ้างอิงทางตำแหน่งของไฟล์ต้นฉบับ เช่น -s_srs epsg:4326 หรือ -s_srs epsg:32647 เป็นต้น
-t_srs ใช้สำหรับการระบุระบบอ้างอิงทางตำแหน่งของไฟล์ผลลัพธ์
ตัวอย่างการใช้งาน
>>ogr2ogr -f "KML" index.kml index.shp
นอกจากนี้เรายังสามารถแปลงระบบอ้างอิงทางตำแหน่ง (ระบบพิกัด) พร้อมกับการแปลง format ในคำสั่งเดียวดังนี้
>>ogr2ogr -s_srs epsg:32647 -t_srs epsg:4326 -f "KML" index.kml index.shp
Thursday, October 22, 2009
ขอเชิญรับฟังการบรรยายพิเศษหัวข้อ "Advances in Photogrammetry : Airborne, Trerrestrial and Mobile Laser Scanning"
เรียนเชิญทุกท่านเข้ารับฟังการบรรยายพิเศษในหัวข้อ "Advances in Photogrammetry : Airborne, Trerrestrial and Mobile Laser Scanning” โดย Professor Dr. George Vosselmann (Editor-in-Chief of the ISPRS Journal of Photogrammetry and Remote Sensing) จากสถาบัน ITC, Netherland.
กำหนดการมีดังนี้ครับ
วันที่ 29 ตุลาคม 2552
9:00-11:00 Special Lecture at the Faculty of Engineering , ( 200 Academician and Professionals)
“Advances in Photogrammetry : Airborne, Trerrestrial and Mobile Laser Scanning”
กำหนดการมีดังนี้ครับ
วันที่ 29 ตุลาคม 2552
9:00-11:00 Special Lecture at the Faculty of Engineering , ( 200 Academician and Professionals)
“Advances in Photogrammetry : Airborne, Trerrestrial and Mobile Laser Scanning”
Thursday, October 15, 2009
การทำ Histogram Equalization ด้วย gdalenhance (ของฟรีและดีก็มีในโลก)
วันนี้ขอเสนอเทคนิคการทำ Histogram Equalization ของข้อมูลาพด้วย GDAL (gdalenhance) ตัวอย่างการใช้งานเช่น การแปลงข้อมูลภาพแบบ 16bit ให้เป็น 8bit เป็นต้น โดยโครงสร้างคำสั่งการใช้งาน gdalenhance มีดังนี้ครับ
>>gdalenhance -ot [dataType] -equlize input_file out_file
ส่วนตัวอย่างการทำงานมีดังนี้
>> gdalenhance -ot Byte -equlaize dem16b.tif dem8b.tif
>>gdalenhance -ot [dataType] -equlize input_file out_file
ส่วนตัวอย่างการทำงานมีดังนี้
>> gdalenhance -ot Byte -equlaize dem16b.tif dem8b.tif
Subscribe to:
Posts (Atom)