เปลี่ยนค่าศูนย์เป็น 0 ใน QGIS หรือไม่


13

ฉันต้องการความช่วยเหลือ ... ฉันมีปัญหากับ QGIS ฉันมีแรสเตอร์บางตัวที่ดูเหมือนจะมีค่า Null ถึงแม้ว่าฉันจะจัดประเภทใหม่เพื่อให้ได้ Raster แบบบูลีน :(

ฉันจะเปลี่ยนค่า NULL เป็น 0 ได้อย่างไร

คำตอบ:


14

ข้างคำตอบ @RK คุณสามารถใช้r.nullในหญ้าได้เช่นกัน

r.null - จัดการค่า NULL ของแผนที่แรสเตอร์ที่กำหนด

ตัวอย่าง

ตั้งค่าเฉพาะของแผนที่ที่จัดเป็น NULL:

r.null map=landcover.30m setnull=21,22

ตั้งค่า NULL ของแผนที่เป็นค่าเฉพาะ:

 r.null map=fields null=99

ฉันหวังว่ามันจะช่วยคุณ ...


9

ฉันคิดว่าปลั๊กอิน RasterCalcน่าจะแก้ปัญหาของคุณได้ เมื่อคุณติดตั้งแล้วคุณสามารถใช้แบบสอบถามต่อไปนี้ (สมมติว่าค่า NULL สอดคล้องกับ -9999 คุณสามารถตรวจสอบค่านี้ได้ในแท็บ Transparency ของคุณสมบัติเลเยอร์):

eq ([your_raster] @ 1, -9999, 0)

eq หมายถึงเท่ากับ สิ่งนี้บอก RasterCalc ว่าพิกเซลทั้งหมดในแรสเตอร์ของคุณที่มีค่า NULL ควรมีค่าเป็น 0 พวกเขาสมมติว่าคุณมีแรสเตอร์แบนด์เดียว


1
สิ่งนี้ดูเหมือนจะไม่ทำงาน (QGIS 1.8 / Rastercalc 0.2.5) - ให้ "นิพจน์ไม่ถูกต้อง" ด้วยแรสเตอร์ที่โหลดเช่นeq( EL_hm@1, NULL, 0 )
Simbamangu

1
@Simbamangu ถ้าคุณจะใช้ค่าจริงที่ใช้เป็น NULL (เช่น -9999 เป็นต้น) - มันจะใช้งานได้ เช่น eq (EL_hm @ 1, -9999, 0)
SS_Rebelious

1
@SS_Rebelious - คุณอาจต้องการพูดถึงในการแก้ไขของคุณว่าค่า NULL สามารถตั้งค่าในการตั้งค่า ( General|Representation for NULL values) และสิ่งนี้ควรจะสะท้อนให้เห็นในการแสดงออก
Simbamangu

2

ฉันไม่รู้ว่าคุณจะแก้ปัญหานี้หรือไม่? อาจจะมีวิธีที่คล่องตัวกว่านี้ แต่ใช้งานได้ดีสำหรับฉันใน QGIS ล่าสุด (v2.8.1):

  1. สร้างรูปหลายเหลี่ยมใหม่ที่มีคอลัมน์แอตทริบิวต์สำหรับความสูง / ระดับ วาดรูปหลายเหลี่ยมที่มีขนาดใหญ่กว่าขอบเขตแรสเตอร์ที่คุณต้องการเปลี่ยน
  2. แปลงรูปหลายเหลี่ยมนี้โดยใช้ raster> conversion> rasterise tool
  3. การใช้เครื่องมือวิเคราะห์ GDAL> ไม่ต้องกรอกข้อมูล> และรูปหลายเหลี่ยมที่แรสเตอร์แล้วเป็นเลเยอร์ความถูกต้อง
  4. ไฟล์แรสเตอร์ที่เป็นผลลัพธ์ควรมีค่าซึ่งก่อนหน้านี้ไม่มีข้อมูล สิ่งเหล่านี้จะเป็นค่าสุ่มต่ำกว่า 0 (ตัวอย่างเช่น -9999) หรือ 0 หากเป็น 0 คุณจะได้สิ่งที่คุณต้องการ ถ้าไม่ใช่ให้ทำตามขั้นตอนที่ 5
  5. การใช้ SAGA> ตาราง -Tools> เลเยอร์ Raster ของ Mosaick ป้อนเลเยอร์แรสเตอร์ที่เต็มแล้วและรูปหลายเหลี่ยมที่แรสเตอร์แล้ว ในพื้นที่ที่ทับซ้อนกันเลือก [3] สูงสุดและตั้งค่าขอบเขตเอาท์พุทให้เป็นแรสเตอร์ดั้งเดิมของคุณ สิ่งนี้จะส่งผลให้เกิดแรสเตอร์ใหม่ที่รักษาค่าทั้งหมดของคุณไว้มากกว่า 0 ในขณะที่ให้ค่าข้อมูลก่อนหน้าของคุณไม่มีค่าใหม่เป็น 0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.