Post on 15-Jul-2020
Pukapu - 020155
1
การใส่ค่าพิกัดให้กับข้อมูลภาพถ่ายจากดาวเทียม
มีหลายวิธีที่จะใส่ค่าพิกัดให้กับข้อมูลภาพถ่ายจากดาวเทียมจากแหล่งข้อมูลอ้างอิงต่างๆ ไม่ว่าจะเป็นข้อมูลถนน แผนที่สภาพภูมิประเทศ ข้อมูลภาพถ่ายทางอากาศ หรือข้อมูลภาพถ่ายจากดาวเทียมด้วยกัน ซึ่งก็เช่นเดียวกันคือมีหลากหลายโปรแกรมที่สามารถท าได้ง่ายและรวดเร็ว ถ้ามีข้อมูล 1 หรือ 2 ภาพก็ไม่ใช่ปัญหาอะไร แต่ถ้าเป็นพันภาพล่ะ ก็ต้องมานั่งใส่ค่าพิกัดกันนานหลายเดือน ในเอกสารนี้เพียงแต่ต้องการน าเสนอวิธีการแบบหนึ่งที่ใช้ในการใส่ค่าพิกัดภาพแบบกึ่งอัตโนมัติ ให้กับข้อมูลภาพตัวอย่าง (Quick Look) ของข้อมูลภาพถ่ายจากดาวเทียม LANDSAT5 เพ่ือที่จะสามารถน าไปดูได้ในเบื้องต้นว่า Path/Row ที่ต้องการมีปริมาณเมฆมากน้อยแค่ไหน ในบริเวณพ้ืนที่ข้างเคียงเป็นยังไงบ้าง วิธีการนี้อาจจะไม่ใช่วิธีการที่ดีที่สุด แต่ก็เสนอไว้เป็นทางเลือก ใช้เวลาท าประมาณ 1 ชั่วโมงส าหรับการใส่ค่าพิกัดจ านวน 2,500 ภาพ จริงๆ จะกี่ภาพก็ใช้เวลาประมาณนี้ ซึ่งการท าแบบนี้ไม่ต้องการความถูกต้องมาก เพียงแค่ใช้ดูคร่าวๆเฉยๆ โดยเน้นที่ต าแหน่งของ Path/Row ในข้อมูลภาพเป็นหลัก ในเอกสารนี้จะท าเพ่ือเป็นตัวอย่างจ านวน 25 ภาพเท่านั้น
ข้อมูลและโปรแกรมท่ีใช้ประกอบไปด้วย 3 อย่าง คือ
1. ข้อมูลภาพตัวอย่างที่ไม่มีค่าพิกัด แต่มีชื่อเป็นเลข Path/Row กับวันที่ถ่ายภาพ
2. ดัชนี Path/Row ของข้อมูลภาพถ่ายจากดาวเทียม LANDSAT5 ทั่วโลก ซึ่งมีค่าพิกัดเป็น Latitude, Longitude
(ดาวน์โหลดจากเว็บไซด์ http://landsat.usgs.gov/tools_wrs-2_shapefile.php เลือกที่เป็นแบบ wrs2_descending)
Pukapu - 020155
2
3. โปรแกรม ArcMap, ArcView, MS Excel, ACDSee และ FWTools (http://fwtools.maptools.org/)
ผลลัพธ์ที่ได้จากการค่าใส่พิกัดดังนี้
Pukapu - 020155
3
วิธีการท าในเบื้องต้นมีดังนี้
1. เลือกตัวเลข Path/Row ที่ต้องการจากข้อมูลภาพตัวอย่าง
2. เลือกดัชนี Path/Row (Shapefile) จากข้อมูลภาพตัวอย่าง
3. ค านวณค่าพิกัดท้ัง 4 มุมของกรอบภาพในแต่ละดัชนี Path/Row
4. ค านวณค่าพิกัดท้ัง 4 มุมของเนื้อภาพในแต่ละดัชนี Path/Row
5. ปรับข้อมูลภาพตัวอย่างทุกภาพให้มีขนาดเท่ากัน
6. ใส่ค่าพิกัดให้กับข้อมูลภาพตัวอย่าง
Pukapu - 020155
4
1. เลือกตัวเลข Path/Row ที่ต้องการจากข้อมูลภาพตัวอย่าง
1.1 ใช้ค าสั่ง dir /b/s > list.txt ใน DOS เพ่ือพิมพ์ที่อยู่และรายชื่อของข้อมูลภาพตัวอย่างทั้งหมด
1.2 น าไฟล์นี้ไปเปิดใน MS Excel เพ่ือเลือก Path/Row
Pukapu - 020155
5
Pukapu - 020155
6
1.3 เช็ค Path/Row ไม่ให้ซ้ ากัน
- ใช้ Advanced Filter ที่ Data --- Filter --- advanced
- ก าหนดค่าดังรูป
Pukapu - 020155
7
1.4 ก๊อปปี้ Path/Row ที่ไม่ซ้ ากันไปยังเอกสารใหม่ (Sheet) และเปลี่ยน Path/Row จาก Text ให้เป็นตัวเลข
1.5 บันทึกไฟล์ (list1.xlsx --- Sheet1)
Pukapu - 020155
8
2. เลือกดัชนี Path/Row (Shapefile) จากข้อมูลภาพตัวอย่าง
2.1 เปิดดัชนี Path/Row ของข้อมูลภาพถ่ายจากดาวเทียม LANDSAT5 ใน ArcMap
2.2 ท าการ Join ระหว่างหัวข้อ PR ของข้อมูลดัชนี Path/Row ของข้อมูลภาพถ่ายจากดาวเทียม LANDSAT5 กับหัวข้อ noRepeat ในไฟล์และเอกสารของ Excel ที่ได้บันทึกไว้ และเลือกแบบ Keep only matching records
Pukapu - 020155
9
2.3 บันทึกเป็น Shapefile ใหม ่(index_ls5_23.shp)
3. ค านวณค่าพิกัดทั้ง 4 มุมของกรอบภาพในแต่ละดัชนี Path/Row
3.1 เปิดโปรแกรม ArcView และเปิด Shapefile (index_ls5_23.shp) ที่ได้บันทึกไว้ในข้อ 2.3
3.2 สร้างคอลัมน์ใหม่ 4 คอลัมน์ เพ่ือเก็บค่าพิกัด 4 มุมของกรอบภาพในแต่ละ Path/Row
3.3 ค านวณค่าพิกัด 4 มุมของกรอบภาพ จากสมการ
Pukapu - 020155
10
minLat = [Shape].returnextent.getbottom
maxLat = [Shape].returnextent.gettop
minLong = [Shape].returnextent.getleft
maxLong = [Shape].returnextent.getright
3.4 บันทึกไฟล์เดิม (index_ls5_23.shp)
4. ค านวณค่าพิกัดทั้ง 4 มุมของเนื้อภาพในแต่ละดัชนี Path/Row
4.1 เปิดไฟล์ *.dbf ของ Shapefile (index_ls5_23.shp) จากข้อ 3.4
4.2 บันทึกเป็นชื่อไฟล์ใหม่ของ MS Excel (index_ls5_23.xlsx)
4.3 อาจจะลบคอลัมน์อ่ืนๆ ทิ้ง ที่ไม่ต้องการ ยกเว้น 5 คอลัมน์ คือ PR, minLat, maxLat, minLong, และ maxLong
Pukapu - 020155
11
4.4 ค านวณค่าพิกัด 4 มุมของเนื้อภาพ จากสมการ
Long Lat
1 minLong + x maxLat 2 maxLong maxLat - b 3 maxLong - y minLat 4 minLong minLat + a
ค่า a, b, x, และ y วัดมาจากข้อมูลภาพตัวอย่างที่เคยมีการใส่ค่าพิกัดไว้แล้ว ซึ่งก าหนดให้เป็นค่าคงที่ส าหรับการใส่ค่าพิกัดให้กับเนื้อภาพในแต่ละ Path/Row ต่างๆ ที่จะมีค่าใกล้เคียงกัน
Pukapu - 020155
12
จุดที่ 1
จุดที่ 2
Pukapu - 020155
13
จุดที่ 3
Pukapu - 020155
14
จุดที่ 4
4.5 บันทึกไฟล์ (index_ls5_23.xlsx)
4.6 น าไฟล์ MS Excel จากข้อ 1.2 (list1.xlsx --- list) มาเปิดกับโปรแกรม ArcMap ซึ่งจะมีรายการของ Path/Row ทั้งหมดอยู่ (25 รายการ) ในหัวข้อ PRn
Pukapu - 020155
15
4.7 Join PRn กับไฟล์ในข้อ 4.5 หัวข้อ PR ซึ่งมี Data Type เป็นตัวเลขเหมือนกัน การ Join นี้จะท าให้น าค่าพิกัดของเนื้อภาพและกรอบภาพเชื่อมโยงไปยัง Path/Row ที่ซ้ ากันด้วย ซึ่งใน Path/Row เดียวกัน แต่ภาพถ่ายคนละวันที่กันก็จะมีค่าพิกัดเหมือนกัน สามารถน ามาซ้อนทับกันได้
Pukapu - 020155
16
4.8 หลังจากท่ี Join เสร็จแล้ว ให้เปิดตารางที่ Join เลือก Select All และ Export ไปเป็น *.dbf (join.dbf)
4.9 เปิดไฟล์ Join.dbf กับ MS Excel และบันทึกเป็นไฟล์ใหม่ Join.xlsx หัวข้อของไฟล์จะมีการเปลี่ยนแปลงไปแต่ต าแหน่งและข้อมูลภายในยังคงเหมือนเดิม
4.10 ลบหัวข้อหรือคอลัมน์ที่ไม่ได้ใช้งานทิ้งไปและเปลี่ยนชื่อหัวข้อใหม่
4.11 บันทึกไฟล์เดิม (Join.xlsx)
Pukapu - 020155
17
5. ปรับข้อมูลภาพตัวอย่างทุกภาพให้มีขนาดเท่ากัน
5.1 ปรับขนาดของข้อมูลภาพตัวอย่างทุกภาพให้มีขนาดเท่ากับ 514 x 422 pixel ในโปรแกรม ACDSee
5.2 ก าหนดค่าดังรูป
Pukapu - 020155
18
5.3 ทุกรูปจะมีขนาด 514 x 422 pixel เท่ากัน
6. ใส่ค่าพิกัดให้กับข้อมูลภาพตัวอย่าง
6.1 เปิดไฟล์ Join.xlsx
6.2 มี 2 ค าสั่งที่จะต้องสร้างใน Join.xlsx เพ่ือที่จะน าไปประมวลผลที่โปรแกรม FWTools คือ gdal_translate และ gdalwarp ซึ่งมีโครงสร้างประโยคเบื้องต้นตามนี้
gdal_translate
-gcp pixel_X1 pixel_Y1 coordinate_Long1 coordinate_Lat1
-gcp pixel_X2 pixel_Y2 coordinate_Long2 coordinate_Lat2
-gcp pixel_X3 pixel_Y3 coordinate_Long3 coordinate_Lat3
-gcp pixel_X4 pixel_Y4 coordinate_Long4 coordinate_Lat4
ไฟล์น ำเข้ำ ไฟล์ส่งออก
gdalwarp -r cubic -t_srs epsg:4326
ไฟล์น ำเข้ำ ไฟล์ส่งออก
Pukapu - 020155
19
6.3 ท าการสร้างประโยคดังกล่าวจากข้อมูลที่มีใน Join.xlsx ซึ่งได้เตรียมไว้ก่อนหน้านี้ โดยใช้ค าสั่ง Concatenate เพ่ือท าการเชื่อมต่อตัวอักษร
6.4 ข้อมูลเพิ่มเติมการสร้างค าสั่ง
6.5 gdal_translate
=CONCATENATE("gdal_translate -gcp 36 0 ",C2," ",D2," -gcp 503 0 ",E2," ",F2," -gcp 478 421 ",G2," ",H2," -gcp 10 421 ",I2," ",J2," ",A2," D:\",RIGHT(A2,21))
Pukapu - 020155
20
6.6 gdalwarp
=CONCATENATE("gdalwarp -r cubic -t_srs epsg:4326 D:\",RIGHT(A2,21)," E:\",RIGHT(A2,21))
Pukapu - 020155
21
6.7 ก๊อปปี้ 2 ค าสั่งไปวาง (วางแบบค่า) ไว้ที่ Sheet ใหม ่
6.8 บันทึกไฟล์เดิม (Join.xlsx) และบันทึกเป็น Text (Tab delimited)(*.txt)
6.9 เปลี่ยนนามสกุล *.txt จากข้อ 6.8 ไปเป็น *.bat
6.10 เปิดโปรแกรม FWTools Shell และรนัไฟล์ *.bat จากข้อ 6.9
Pukapu - 020155
22
Pukapu - 020155
23
6.11 จะได้ข้อมูลทีต้่องการ อยู่ใน E:\ ตามทีไ่ด้สรา้งไว้