การสร้างรูปร่างไฟล์แสดงรอยเท้าของ Rasters?


33

ฉันมีภาพถ่ายดาวเทียมประมาณ 1,000 ภาพในรูปแบบ TIFF และฉันต้องการสร้างไฟล์รูปร่างที่จะทำหน้าที่เป็นดัชนีของแรสเตอร์ นี่คือสิ่งที่คล้ายกับแคตตาล็อกแรสเตอร์ แต่ฉันไม่ต้องการที่จะสร้างแคตตาล็อกแรสเตอร์

อุปสรรคบางอย่างที่ฉันสามารถมองข้ามได้ก็คือภาพมีตำแหน่งทางภูมิศาสตร์ดังนั้นพวกเขาจึงไม่ได้เป็นรูปสี่เหลี่ยมผืนผ้า (ฉันกำลังพูดถึงพื้นที่ข้อมูล)

เพื่อความกระจ่างแจ้งฉันต้องการรูปหลายเหลี่ยมเพื่อครอบคลุมเฉพาะพิกเซลที่ไม่ใช่ศูนย์ (หรือไม่มีข้อมูล) ของแรสเตอร์และไม่ใช่แรสเตอร์รูปสี่เหลี่ยมผืนผ้าทั้งหมด คำตอบส่วนใหญ่แล้วให้รูปหลายเหลี่ยมเป็นรูปสี่เหลี่ยมผืนผ้าซึ่งครอบคลุมข้อมูลเช่นเดียวกับพิกเซลที่ไม่ใช่ข้อมูล

รูปภาพของฉัน ตัวอย่างภาพถ่ายดาวเทียม


ผลลัพธ์ที่ได้รับจากเครื่องมือที่ฉันตรวจสอบ (เช่น raster catlog, Arcscripts ต่างๆ, สคริปต์ Python ที่กำหนดเองที่กำหนดในคำตอบข้อใดข้อหนึ่ง): ผล


ผลลัพธ์ที่ฉันต้องการ: ป้อนคำอธิบายรูปภาพที่นี่


4
ดูเหมือนว่าการสร้างแคตตาล็อกแรสเตอร์แม้จะเป็นทางออกที่ดีในการสร้างรอยเท้าชั่วคราว คุณสามารถสร้างแคตตาล็อกที่ไม่ได้รับการจัดการซึ่งจะสร้างสารบัญอ้างอิง แต่จะเก็บรูปภาพไว้ในตำแหน่งบนเซิร์ฟเวอร์ มันเป็นเรื่องง่ายและค่อนข้างรวดเร็วในการทำการนำเข้าแบบแรทช์เป็นชุดไปยังแคตตาล็อก เมื่อสร้างแล้วคุณสามารถส่งออกรอยเท้าไปยังคุณลักษณะใหม่ระดับและลบแคตตาล็อกแรสเตอร์ นี่อาจจะเร็วเท่ากับตัวเลือกอื่น ๆ
Spatial

2
ชุดข้อมูลโมเสกยังสร้างรอยเท้าของภาพ
รอย

ชุดข้อมูล mosaic เป็นวิธีที่จะไป สำเร็จได้ง่ายมาก
แบรด Nesom

ดังนั้นในภาพสุดท้ายคือพิกเซลที่อยู่นอกกล่องสีแดง NoData หรือ 0? หากเป็น 0 จะมีพิกเซลในพื้นที่ที่คุณต้องการซึ่งมีค่าเป็น 0 ด้วยหรือไม่
ชาดคูเปอร์

1
พิกเซลที่อยู่นอกขอบสีแดงคือโนดาต้า อย่างไรก็ตามข้อมูลหลายสเปกตรัมของฉันมี 0,0,0 เป็นค่า RGB สำหรับพื้นที่โนดาต้า ในทั้งสองกรณีไม่มีพิกเซลที่มีค่า 0 อยู่ในพื้นที่ที่ต้องการ
Devdatta Tengshe

คำตอบ:


15

มีปลั๊กอินใน QGIS เรียกว่าเป็นภาพที่แสดงเขตแดน มันเป็นเครื่องมือที่ยอดเยี่ยม ภายในเครื่องมือนี้จะมีตัวเลือกสำหรับ "พิกเซลที่ถูกต้อง" ซึ่งจะตัดขอบสีดำของภาพถ่ายดาวเทียม


ปลั๊กอินนี้อ้างว่าทำสิ่งที่ฉันต้องการ แต่มันล้มเหลวในภาพที่ฉันทดลอง ฉันจะลองกับข้อมูลจริงของฉันในวันพรุ่งนี้
Devdatta Tengshe

ฉันพบว่าปลั๊กอินนี้ทำงานได้ดีมากกับข้อมูลหลายสเปกตรัม แต่บางครั้งก็ให้ผลลัพธ์ที่แปลกด้วยภาพเดียวในวง pancromatic
Devdatta Tengshe

2
ฉันยอมรับว่าขอบเขตรูปภาพของ QGIS ทำงานได้ดีที่สุด แต่มีเครื่องมือในการทำเช่นนี้สำหรับไฟล์เวกเตอร์ที่เราไม่ต้องการ "กล่องขอบ" หรือ "รอยเท้า" แต่มีรูปหลายเหลี่ยมที่สรุปข้อมูลอยู่
GeorgeC

เครื่องมือขอบเขตภาพยอดเยี่ยมอย่างไรก็ตามลิงก์ที่คุณให้มี 404 ฉันเชื่อว่าเครื่องมือยังคงมีให้ใช้งานถ้าคุณอนุญาตให้ใช้ปลั๊กอินทดลองในการตั้งค่าปลั๊กอิน อาจจะใช้ลิงค์นี้: github.com/lmotta/imagefootprint_plugin
Aaron

มีเอกสารสำหรับการใช้ Image Boundary หรือไม่?
Loonuh

9

โค้ดต่อไปนี้จะใช้อินพุตแรสเตอร์รับขอบเขตและแทรกขอบเขตนั้นลงในคลาสรูปหลายเหลี่ยม:

import arcpy

r = arcpy.Raster(in_raster)
point = arcpy.Point()
array = arcpy.Array()

corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]

cursor = arcpy.InsertCursor(fc)
feat = cursor.newRow()
for corner in corners:    
    point.X = getattr(r.extent, "%s" % corner).X
    point.Y = getattr(r.extent, "%s" % corner).Y
    array.add(point)
array.add(array.getObject(0))
print len(array)
polygon = arcpy.Polygon(array)
feat.shape = polygon
cursor.insertRow(feat)
array.removeAll()
del feat
del cursor

คุณสามารถเรียกใช้งานได้ในหน้าต่าง ArcMap Python โดยการตั้งค่าin_rasterและทำfcดังนี้:

>>> fc = 'r_extent'
>>> in_raster = 'CaliCoast10mNED_HavCurvedPCS'

โดยที่r_extentเป็นคุณลักษณะรูปหลายเหลี่ยมที่มีอยู่ จากนั้นเพียงคัดลอกรหัสและเรียกใช้ ฉันได้รับสิ่งนี้:

ป้อนคำอธิบายรูปภาพที่นี่


1
ฉันใช้รหัสด้านบนเพื่อทำสิ่งเดียวกันกับโฟลเดอร์: gist.github.com/4162013
jeb

7

คุณสามารถใช้ gdaltindex สำหรับสิ่งนี้: http://www.gdal.org/gdaltindex.html

อย่างไรก็ตามมันจะยังคงสร้างรูปสี่เหลี่ยม (เช่น 4 + 1 คะแนน) ในระบบอ้างอิงเดียวกันกับรูปภาพ แต่ฉันสงสัยว่าเป็นปัญหาจริงหรือไม่: รูปของคุณมีขนาดใหญ่เพียงใด


ปัญหากับ gdaltindex คือมันสร้างรูปหลายเหลี่ยมเป็นรูปสี่เหลี่ยมผืนผ้าสำหรับแต่ละภาพ ฉันสนใจเฉพาะพิกเซลค่าที่ไม่ใช่ศูนย์เท่านั้น
Devdatta Tengshe

4

ฉันลองใช้เครื่องมือ "Image Boundary" ใน QGIS แต่มันล้มเหลวด้วย rasters

ตัวเลือกอื่นที่ใช้งานได้สำหรับฉันคือ: 1. แปลงอินพุตแรสเตอร์เป็นตัวเลขดิจิตอลเดียวโดยใช้ยูทิลิตีบรรทัดคำสั่ง gdal_translate

gdal_translate -co compress = lzw -b 1 -ot byte -scale 1 1 inp.tif out.tif

สิ่งนี้จะสร้างแรสเตอร์ที่มีค่า 1 ทุกที่ inp.tif มีค่าที่ไม่เป็นศูนย์

  1. จากนั้นใน ArcMap คุณสามารถใช้เครื่องมือ "raster to polygon" เพื่อรับรูปหลายเหลี่ยม (shapefile)

รูปร่างไฟล์ที่ส่งออกจะมีขอบเขตที่ไม่ใช่รูปสี่เหลี่ยมขนมเปียกปูนมีหลายจุดยอดรูปหลายเหลี่ยมตามขอบเขตที่แท้จริงของภาพ


3

หากคุณมีความสนใจในการแก้ปัญหาสคริปต์ลองคำสั่ง GDAL nearblack คุณสามารถใช้แฟล็ก -white เพื่อดึงข้อมูลที่ล้อมรอบด้วย white space เช่นกัน คุณสามารถรูปหลายเหลี่ยมเอาท์พุทเพื่อสร้างรอยเท้าที่ไม่เป็นรูปสี่เหลี่ยมผืนผ้าของข้อมูลแรสเตอร์

##run nearblack
shellcmds = "nearblack -white -o " + outpath + " " + inpath
os.system(shellcmds)

##run polygonize
shellcmds = "gdal_polygonize.py " + outpath + " -f" + """ "ESRI Shapefile"  """ + outpath2 + " nearblack"
os.system(shellcmds)

1

ผมเชื่อว่าใน ArcGIS โลกคุณสามารถบรรลุกับ3D Analyst \ แปลง \ จาก Raster \ Raster โดเมนเครื่องมือ


มันใช้งานได้เฉพาะกับข้อมูล 3 มิติและไม่ให้ผลลัพธ์ที่คาดหวัง ไม่สามารถทำงานกับภาพจากดาวเทียมได้เลย
Devdatta Tengshe

ใช่นั่นเป็นความจริง. ฉันจะทิ้งคำตอบไว้ให้ผู้อื่นทราบ
Tomek

0

มีเครื่องมือใน ArcGIS 3D Analyst ที่เรียกว่าRaster Domainซึ่งจะสร้างรูปหลายเหลี่ยมหรือโพลีไลน์ของส่วนข้อมูลของชุดข้อมูลแรสเตอร์และละเว้นเซลล์ NoData ทำงานได้ดีสำหรับฉัน


1
ยินดีต้อนรับสู่เว็บไซต์ของเรา! คุณช่วยอธิบายว่าคำตอบของคุณแตกต่างจาก Tomek ได้อย่างไร?
whuber

โดเมน Raster ใช้งานได้สำหรับฉัน - ขอบคุณสำหรับความช่วยเหลือของคุณ!
meryloo

0

คุณสามารถสร้างแคตตาล็อกแรสเตอร์ที่มีการอ้างอิงเชิงพื้นที่ที่ได้รับมอบหมายเพิ่มแคตตาล็อกแรสเตอร์เพื่อ ArcMap แล้ว "ส่งออกรอยเท้า" จำไว้ว่ามีตัวเลือกในการสร้างแคตตาล็อกแรสเตอร์ "UNMANAGED" เพื่อให้คุณไม่ได้สร้างชุดข้อมูลแรสเตอร์แต่ละชุดซ้ำกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.