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

Tuesday, July 14, 2009

คัดลอกไฟล์ที่ต้องการในบรรทัดเดียว

ช่วงนี้ดาวน์โหลด ASTER GDEM มาลองใช้งาน แต่เจอปัญหาอย่างหนึ่งคือ เมื่อ extract ไฟล์ออกมาแล้ว ดันแยกออกเป็นโฟลเดอร์ต่างๆตามพื้นที่คลอบคลุม (ชื่อไฟล์) หากต้องการคัดลอกเอาเฉพาะไฟล์ DEM ที่ต้องการของแต่ละพื้นที่ออกมาเพื่อ Mosaic ให้เป็นผืนเดียว ซึ่งจะต้องมานั่งคลิกเลือกเข้าไปที่ละโฟลเดอร์แล้วคัดลอกออกมาทีละไฟล์ หรือ ขั้นสูงขึ้นมาหน่อย ก็ใช้คำสั่ง Search... บน Windows แล้วค่อยคัดลอกไฟล์

ด้วยความอยากใช้คำสั่งบน DOS (Batch processing) สำหรับการทำงานดังกล่าว จึงได้ค้นๆคุ้ยๆผ่านอินเตอร์เน็ต จนพบว่าวิธีการช่างแสนง่ายดายอะไรเพียงนี้ ทุกท่านสามารถทำตามได้ดังนี้ครับ
อ้อ...ก่อนอื่นต้องดาวน์โหลด ASTER GDEM มาก่อนนะครับ สำหรับตัวอย่างครั้งนี้ผมดาวน์โหลดมาแล้วจำนวนทั้งสิ้น 30 ระวาง ดังภาพ
หลังนั้นก็ให้ Extract ไฟล์ออกมาจะได้ดังตัวอย่างข้างล่าง ดังนี้หลังจากได้ข้อมูล ASTER GDEM จำนวน 30 โฟล์เดอร์แล้วลองคลิกเข้าไปดูจะพบว่ามีอยู่ 2 ไฟล์ในแต่ละโฟล์เดอร์คือ XXXXXX_dem.tif และ XXXXXX_num.tif โดย
XXXXXX_dem.tif คือ ไฟล์ DEM ที่เราต้องการ อ้อ อย่าลืมนะครับว่าความสูงของ DEM นี้คือความสูงแบบ Orthometric Height โดยคำนวนจาก WGS84/EGM96 รายละเอียดเพิ่มเติมศึกษาได้จาก ที่นี่ ครับ
ส่วน XXXXXX_num.tif คือ จำนวนภาพถ่ายดาวเทียม ASTER ที่ใช้ในการผลิต GDEM (ค่า DN บนภาพ)

ที่นี้มาถึงขั้นตอนสำคัญคือ การใช้คำสั่งบน DOS ตัวอย่างมีดังนี้ครับ
1. Change Directory ไปยัง โฟล์เดอร์ที่เก็บไฟล์ทั้งหมด (ของผมคือ C:\GDEM\ โดยมีข้อมูล ASTER GDEM ย่อยๆอยู่ข้างใน เช่น C:\GDEM\ASTGTM_N10E097\ หรือ C:\GDEM\ASTGTM_N18E098\ เป็นต้น)

2. พิมพ์คำสั่งดังนี้ครับ
C:\GDEM>FOR /r %i IN (.\*_dem.tif) DO copy %i C:\test\

ขออธิบายคำสั่งข้างต้นนะครับ
  • จากคำสั่งคือ ประกาศตัวแปรชื่่อ %i แทนไฟล์ใดๆ (ทุกไฟล์ที่มีชื่อต่อท้ายคือ "_dem.tif" ที่อยู่ในไดเรกทอรีปัจจุบันโดยรูปแบบข้อมูลคือ TIFF ) รวมถึงไดเรกทอรีย่อย (/r)
  • คัดลอกไฟล์ %i ทุกไฟล์ไปไว้ที่ C:\test\

นอกจากนี้เรายังสามารถประยุกต์ใช้การทำงานประเภทนี้กับงาน Geomatics ได้อีกด้วยครับ (ไว้มีเวลาว่างจะมานำเสนอในโอกาสต่อไปครับ)

No comments:

Post a Comment