การสร้าง Index ที่เป็น Shapefile ของข้อมูลภาพถ่ายดาวเทียม

ในบทความเก่า การทำ overview map ได้อธิบายถึงการทำ Index จาก extension ทีชื่อ Image Boundary ใน software QGIS ซึ่งจะทำ Index ที่เป็น shapefile  ได้เฉพาะ กรอบสี่เหลี่ยมแบบ extent และ แบบ Valid Pixel ซึ่งก็ยังเป็นกรอบสี่เหลี่ยมอยู่ดี ซึ่งโดยมากแล้วจะใช้กับข้อมูลภาพถ่ายดาวเทียมที่มีรายละเอียดจุดภาพต่ำ หรือข้อมูลมาเป็นแบบซีน ที่แน่นอน จะใช้ไม่ได้กับข้อมูลภาพจากดาวเทียมรายละเอียดสูง ยกตัวอย่างภาพนี้ ซึ่งมีเหลี่ยมมุมมาก

po_570507_rgb_0000000_ovr

ดังนั้นในวันนี้ผมจะนำเสนอวิธีการที่ค้นพบ ซึ่งอาจจะไม่ใช่วิธีที่ดีที่สุด แต่คิดว่าสามารถนำไปใช้ประยุกต์ใช้ได้คือ

ซึ่งต่อยอดมาจากบทความ แก้ไขปัญหาขอบดำภาพดาวเทียม  ก่อนนี้ที่เคยกล่าวถึง alpha layer สามารถนำมาใช้งาานอะไรได้บ้าง วิธีการก็ให้ย้อนกลับไปดูจากบทความ แก้ไขปัญหาขอบดำภาพดาวเทียม ก่อนนะครับ หลังจากได้ File ที่ได้ทำการเพิ่ม alpha layer เรียบร้อยแล้ว จากนั้นเราจะทำการทำ vecterize ข้อมูล alpha layer เป็น vector ด้วยคำสั่ง

gdal_polygonize source.tif –b 4 –f “ESRI Shapefile” output.shp

อธิบายเล็กน้อย source.tif  คือ file ผ่านคำสั่ง nearblack ในบทความก่อนหน้านี้แล้วนะครับ

-b 4 คือ ข้อมูล alpha layer โดยจะแปลงให้เป็น format shapefile แล้วตั้งชื่อเป็น output.shp

คำสั่งแบบวนลูป

for %i in (*alpha.tif) do gdal_polygonize %i –b 4 –f “ESRI Shapefile” %~ni_shp.shp

คำสั่งนี้จะได้ผลลัพธ์ออกมาเป็น shapefile แบบ polygon ที่มี field ใน attribute ค่า 0 และ 255

shp0255

ต่อไปจะเป็นการ export ข้อมูลเฉพาะค่า DN เท่ากับ 255 เท่านั้น โดยใช้คำสั่ง

ogr2ogr –f “ESRI Shapefile” –sql “select * from input WHERE dn=255 ” output.shpinput.shp

โดยอาศัยความสามารถของประโยคคำสั่งแบบ SQL เล็กน้อย

คำสั่งแบบวนลูป

for %i in (*.shp) do ogr2ogr –f “ESRI Shpaefile” –sql “select * from input WHERE dn=255“ %~ni_index.shp %i

ผลลัพธ์จะได้ shapefile ลักษณะนี้ครับ

shp255

 

 

ซึ่งสามารถไปนำไปใช้งานครับ

แต่มีข้อสังเกตคือ ลักษณะของ shapefile จะมีหลายๆ มุม หลาย node

ใครมีวิธีการ หรือไอเดียดีกว่าช่วยแนะนำด้วยครับ

Posted in GIS

Leave a Reply

Your email address will not be published. Required fields are marked *