如何总结QGIS中的像素值?


10

我需要知道栅格中所有像素之和的值。但是,在“属性”中“元数据”选项卡的“统计信息”部分中,“所有单元格的总和”下,它始终表示0.00。我尝试使用不同的栅格格式无济于事。我究竟做错了什么?我如何获得该价值?


我希望你说对了。我试图用我的栅格重建您的问题。栅格中所有像素的总和是x像素* y像素,对吗?您可以通过2种方式获得此值:1)右键单击实际的File(在我的情况下为tiff),详细信息窗口应提供此信息2)在Gis内,单击Raster-> Miscellaneous-> Information。选择文件->编辑->确定。然后,您应该将两个值相乘。结果是栅格中所有像素的总和。
Shepherdjo 2012年

错误。那会给你细胞的数量。不是单元格值的总和
Robert Hijmans 2015年

Answers:


9
  1. 使用矢量>研究工具>图层范围内的多边形创建多边形。这里的图层是有问题的栅格。
  2. 激活/安装区域统计插件。
  3. 使用分区统计插件,其中栅格是需要其总和的栅格,而多边形是您根据图层范围创建的栅格。输入输出列前缀(例如stats_)。运行插件。
  4. 打开多边形的属性表。现在,您将拥有stats_sum列以及其他带有stats_前缀的列。
  5. 我检查了GRASS GIS中的值,结果很完美。

4

在QGIS 2.x中,可以通过使用“处理”工具箱中的栅格图层统计算法来获得整个图层的栅格统计信息(包括波段中所有像素值的总和)。

加工| 工具箱(复选框)

然后转到处理工具箱:

QGIS地理算法| 栅格工具| 栅格层统计

生成要检查的图层的统计信息。然后将结果存储在图层元数据中,可通过右键单击图层并选择“属性”来访问。


2

您可以使用pyqgis并创建一个numpy数组和求和:

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做到这一点的方法。这将是低效率的,并且会稍有不准确,但是它将起作用。

  • 创建一个代表栅格每个像素的点图层。您可以通过矢量->研究工具->正则点进行此操作。使用点数作为x_size * y_size。因此,对于100像素宽x 100像素高的栅格,请使用10000。将偏移量指定为(像素分辨率)/ 2,以便对像素的中心进行采样。
  • 接下来,安装点采样插件。使用此插件,您可以在所有10000个点处对栅格进行采样,并获得作为像素值的属性值。
  • 在结果向量上运行向量->分析->基本统计以获取总和。

0

您可以使用gdalinfo获取栅格统计信息,例如:

gdalinfo -stats filename.tif

这将为您提供平均像素值和以像素为单位的栅格大小。您也可以从“属性”->“元数据”选项卡中获取此数据。

然后是算术问题:平均值x(以像素为单位的高度x以像素为单位的宽度)。

缺口。


4
那是错的。首先,这些统计信息并不总是存在(取决于编写该文件的应用程序),如果存在,您就不能确定它们是否正确。其次,乘法忽略了没有数据值的可能性(在这种情况下,此计算将是错误的)。
罗伯特·希曼斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.