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

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  ตามลำดับครับ

No comments:

Post a Comment