วิธีการตั้งค่าพิกเซลทั้งหมดที่มีค่า <= 0 ถึง“ nodata” ใน DEM raster


28

ฉันมี DEM แรสเตอร์ที่มีค่าพิกเซลระหว่างประมาณ 3000 ถึง -0.0003 ฉันต้องตั้งค่าพิกเซลทั้งหมดด้วยค่า 0 และ smaler (<= 0) เป็น "nodata" (สำหรับการคำนวณแรสเตอร์ในภายหลังและเพื่อลดขนาดไฟล์)

ดูเหมือนว่าสำหรับฉันแล้วนี่เป็นงานสำหรับเครื่องคิดเลขแรสเตอร์ (ตั้งค่าเป็นพิกเซล <= 0 ถึง "nodata") หรือจัดประเภทใหม่ (ตั้งค่าเป็นพิกเซล <= 0 ถึง "nodata" และเก็บค่าอื่น ๆ ไว้ทั้งหมด) แต่ฉันไม่ รู้วิธี


ฉันต้องตั้งค่าพิกเซลทั้งหมดด้วยค่า <0 ถึง "nodata" ดังนั้นโพสต์จาก vascobnunes ไม่ช่วยฉัน
แผนที่

ขออภัย แต่มันไม่ได้ช่วยให้ฉันเปลี่ยนสไตล์การแสดงแรสเตอร์ได้ ฉันต้องการแก้ไข paster ของฉัน
แผนที่

จากความคิดเห็นและข้อเสนอแนะการปิดดูเหมือนว่าคุณควรแก้ไขคำถามของคุณเพื่อชี้แจงสิ่งที่คุณต้องการและสิ่งที่คุณได้ลองแล้ว
PolyGeo

คำตอบ:


29

ฉันไม่พบวิธีแก้ปัญหาด้วยเครื่องมือเดียว แต่ก่อนอื่นคุณสามารถใช้เครื่องคิดเลขแรสเตอร์เพื่อเปลี่ยนค่าทั้งหมดที่ต่ำกว่าขีด จำกัด ที่แน่นอนให้เป็นศูนย์จากนั้นใช้ gdal_translate ด้วย -a_nodata 0 เพื่อเปลี่ยน 0 ให้เป็น nodata

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

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



16

มันสามารถทำได้ในขั้นตอนเดียวใน QGIS ในเครื่องคิดเลขแรสเตอร์

ใน QGIS3 สำหรับเลเยอร์แรสเตอร์ชื่อ "x" ให้ใช้นิพจน์ต่อไปนี้:

(("x">0)*"x") / (("x">0)*1 + ("x"<=0)*0)

เคล็ดลับนี้แมปค่าแรสเตอร์ x> 0 เข้ากับอัตราส่วน x / 1 = x และค่าแรสเตอร์ x <= 0 เข้ากับอัตราส่วน 0/0 = NaN NaN นี้แสดงผลเป็น FLOAT_MIN (aka -3.402832 ... e + 38) ถ้าแรสเตอร์เป็นโฟลตไบต์ 4

คำถามนี้ดูเหมือนจะแปลกไปสักพักแล้วด้วย (เท่าที่การค้นหาโดย Google ในวันนี้แสดงให้เห็นอย่างรวดเร็ว) ผู้ตอบแบบสอบถามส่วนใหญ่บอกว่าไม่สามารถทำได้ในขั้นตอนเดียว แน่นอนว่าไม่ควรแฮ็คแบบนี้ เอกสาร QGIS อาจจะดีขึ้นเช่นกัน


10

ขอบคุณ Dominik คำตอบแรกของฉันไม่ถูกต้องสำหรับ QGIS 2.8.3 (การแสดงออก"myraster@1" > 0ผลตอบแทน 0 หรือ 1 สำหรับไม่ใช่ไม่มีข้อมูลตัวเลขการป้อนข้อมูลสำหรับข้อมูลตัวเลขการป้อนข้อมูลก็จะส่งกลับไม่มีข้อมูลตัวเลข )

ต่อไปนี้ QGIS Raster คำนวณการแสดงออกควรจะเพียงพอ (ชั้นแรสเตอร์ชื่อ "myraster") ตั้งแต่ QGIS Raster คำนวณ ชุดพิกเซลทั้งหมดที่ไม่ได้ตามเงื่อนไขที่จะไม่มีข้อมูลตัวเลข :

("myraster @ 1"> 0) * "myraster @ 1"

โซลูชันต่อไปนี้ใช้https://docs.qgis.org/2.8/en/docs/training_manual/processing/no_data.htmlและใช้งานได้กับ QGIS 2.8.3 กับ SAGA 2.1.2

ในการประมวลผล QGIS ใช้เครื่องคิดเลข SAGA Rasterและป้อนข้อมูลต่อไปนี้ในสูตร :

ifelse(g1=0, 0/0, ifelse(g1<0, 0/0, g1))

หรือ

ifelse(a=0, 0/0, ifelse(a<0, 0/0, a))

สิ่งนี้จะเปลี่ยนค่าทั้งหมดน้อยกว่าหรือเท่ากับ 0 เป็นโนดาต้า (0/0)


สิ่งนี้ไม่ทำงานเนื่องจากพิกเซลที่ไม่เป็นไปตามเงื่อนไขคือ 0 ไม่ใช่โนดาต้า
โดมินิก

ซูเปอร์ สามารถใช้สำหรับตัวกรองค่าแบบแรสเตอร์: ตัวอย่างเช่นตัวกรอง (0.5; 23]: ifelse (g1 <0.5, 0/0, ifelse (g1> 23, 0/0, g1))
lolipop

10

นอกจากนี้คุณยังสามารถบันทึกเลเยอร์ (คลิกขวาบันทึกเป็น ... ) และระบุช่วงของข้อมูล สิ่งนี้จะเก็บรักษาโหนดดั้งเดิมและสร้างโหนดใหม่สำหรับช่วงของค่าที่ระบุ


นี่คือทางออกที่ดีที่สุด
Alexander

5

ฉันมีปัญหาที่คล้ายกัน แต่มีค่าทั้งสองที่ฉันต้องการแปลงเป็นค่าที่ไม่มีข้อมูลและไม่มีค่าข้อมูลที่มีอยู่ในแรสเตอร์

ระบุผลลัพธ์

ฉันมาที่หน้านี้เพื่อขอความช่วยเหลือ แต่ฉันคิดว่ามีข้อแม้ในแนวทางที่นี่ วิธีการของ @underdark และ @Micha ดูเหมือนว่าจะทำงานเฉพาะเมื่อไม่มีค่าที่ไม่มีข้อมูลอยู่ในแรสเตอร์เท่านั้น

ในการปัดเศษสิ่งนี้คุณต้องแปลงทั้งค่าที่ไม่มีข้อมูลและค่าที่คุณต้องการแปลงเป็นไม่มีข้อมูลให้เป็นตัวเลขที่สอดคล้องกัน ถ้าอย่างนั้นก็โอเคที่จะใช้ขั้นตอนที่สองของ @underdark

หากต้องการทำสิ่งนี้ให้ใช้กล่องเครื่องมือการประมวลผล> จัดประเภทค่ากริด (SAGA) ใหม่เพื่อแปลงค่าและค่าที่ไม่มีข้อมูลเป็นตัวเลขทั่วไป (เช่น -999) ในเวลาเดียวกัน โดยเฉพาะใช้วิธี "ช่วง" และระบุช่วง จากนั้นในการแทนที่ค่าที่ไม่มีข้อมูลให้เลือกค่าเดียวกันนี้ (เช่น -999) เลิกเลือกแทนที่ค่าอื่น ๆ ใช้งานได้สำหรับการเปลี่ยนแปลงค่าเดียวหรือการเปลี่ยนแปลงที่ซับซ้อนมากเกินไป

จากนั้นทำตามวิธีการของ @underdark และบันทึกแรสเตอร์โดยใช้ Raster> การแปลง> แปล> และทำเครื่องหมายไม่มีข้อมูลป้อนค่าที่คุณใช้ (เช่น -999)


-3

คลิกขวาที่แรสเตอร์ไปที่คุณสมบัติแรสเตอร์เลือกตัวเลือกที่สาม "โปร่งใส" ในแท็บไม่มีค่าข้อมูลเพิ่มมูลค่าเพิ่มเติม 0 และคลิกใช้นี่เป็นตัวเลือกที่คล้ายกัน "แสดงค่าพื้นหลัง" ใน arcgis


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