จะสรุปค่าพิกเซลใน QGIS ได้อย่างไร?


10

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


ฉันหวังว่าคุณจะได้รับสิทธิ; ฉันพยายามสร้างปัญหาของคุณใหม่ด้วย Raster of Mine ผลรวมของพิกเซลทั้งหมดในแรสเตอร์คือ x-pixels * y-pixels ใช่ไหม? ค่านี้คุณสามารถรับได้ 2 วิธี: 1) คลิกขวาที่ไฟล์จริง (tiff ในกรณีของฉัน) หน้าต่างรายละเอียดควรให้ข้อมูลนี้ 2) ภายใน Gis คลิก Raster-> เบ็ดเตล็ด -> ข้อมูล เลือกไฟล์ของคุณ -> แก้ไข -> ตกลง จากนั้นคุณควรหาค่าทั้งสองที่ต้องคูณกัน ผลลัพธ์คือผลรวมของพิกเซลทั้งหมดในแรสเตอร์
Shepherdjo

ไม่ถูกต้อง. นั่นจะทำให้คุณจำนวนเซลล์ ไม่ใช่ผลรวมของค่าของเซลล์
Robert Hijmans

คำตอบ:


9
  1. สร้างรูปหลายเหลี่ยมโดยใช้ Vector> เครื่องมือวิจัย> รูปหลายเหลี่ยมจากระดับชั้น ชั้นที่นี่คือแรสเตอร์ในคำถาม
  2. เปิดใช้งาน / ติดตั้งปลั๊กอินสถิติ Zonal
  3. ใช้ปลั๊กอินสถิติแบบ Zonal โดยที่แรสเตอร์นั้นเป็นสิ่งที่ต้องการผลรวมและรูปหลายเหลี่ยมนั้นเป็นสิ่งที่คุณสร้างจากขอบเขตเลเยอร์ ป้อนคำนำหน้าคอลัมน์ผลลัพธ์ (พูด stats_) เรียกใช้ปลั๊กอิน
  4. เปิดตารางแอตทริบิวต์ของรูปหลายเหลี่ยม ตอนนี้คุณมีคอลัมน์ stats_sum พร้อมกับคอลัมน์อื่น ๆ พร้อมคำนำหน้า stats_
  5. ฉันตรวจสอบค่าใน GRASS GIS และการจับคู่นั้นสมบูรณ์แบบ

4

ใน QGIS 2.x คุณสามารถรับสถิติแรสเตอร์สำหรับเลเยอร์ทั้งหมด (รวมถึงผลรวมของค่าพิกเซลทั้งหมดในแบนด์) โดยใช้อัลกอริทึม Raster Layer สถิติในกล่องเครื่องมือการประมวลผล

กำลังประมวลผล | กล่องเครื่องมือ (ช่องทำเครื่องหมาย)

จากนั้นไปที่กล่องเครื่องมือการประมวลผล:

QGIS geoalgorithms | เครื่องมือ Raster สถิติเลเยอร์แรสเตอร์

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


2

คุณสามารถใช้ pyqgis และสร้างอาร์เรย์และผลรวม:

import gdal
import numpy as np
ds = gdal.Open(r'C:\somefolder\someraster.tif')
band1 = ds.GetRasterBand(1).ReadAsArray()
s = np.sum(band1)
print(s)

1

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

  • สร้างเลเยอร์จุดแทนแต่ละพิกเซลของแรสเตอร์ คุณสามารถทำได้ผ่าน Vector -> เครื่องมือวิจัย -> คะแนนปกติ ใช้จำนวนคะแนนเป็น x_size * y_size ดังนั้นสำหรับแรสเตอร์ที่มีความกว้าง 100 พิกเซล x สูง 100px ให้ใช้ 10000 ระบุออฟเซ็ตของ (ความละเอียดพิกเซล) / 2 ดังนั้นคุณจึงสุ่มตัวอย่างจุดศูนย์กลางของพิกเซล
  • ถัดไปติดตั้งปลั๊กอินการเก็บตัวอย่างจุด เมื่อใช้ปลั๊กอินนี้คุณสามารถสุ่มแรสเตอร์ได้ที่ 10,000 คะแนนและรับค่าแอททริบิวซึ่งเป็นค่าพิกเซล
  • เรียกใช้ Vector -> Analysis -> สถิติพื้นฐานของเวกเตอร์ที่ได้เพื่อหาผลรวม

0

คุณสามารถใช้ gdalinfo เพื่อรับสถิติแรสเตอร์เช่น:

gdalinfo -stats filename.tif

สิ่งนี้จะให้ค่าพิกเซลเฉลี่ยและขนาดแรสเตอร์เป็นพิกเซล คุณสามารถรับข้อมูลนี้ได้จากแท็บ Properties -> Metadata

จากนั้นเป็นคำถามเกี่ยวกับเลขคณิต: ค่าเฉลี่ย x (ความสูงเป็นพิกเซล x ความกว้างเป็นพิกเซล)

กรงขัง


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