Как суммировать значения пикселей в QGIS?

10

Мне нужно знать значение суммы всех пикселей в растре. Однако в разделе «Статистика» вкладки «Метаданные» в разделе «Свойства» в разделе «Сумма всех ячеек» всегда отображается значение 0,00. Я пробовал с различными растровыми форматами безрезультатно. Что я делаю неправильно? Как я могу получить это значение?

Andres
источник
Надеюсь, я вас правильно понял; Я пытался восстановить твою проблему с моим Растром. Сумма всех пикселей в растре - это x-пиксели * y-пиксели, верно? Это значение вы можете получить двумя способами: 1) Щелкните правой кнопкой мыши по самому файлу (в моем случае это не так), подробное окно должно предоставить эту информацию. 2) Внутри Gis щелкните Растр-> Разное-> Информация. Выберите ваш файл-> редактировать-> ок. Затем вы должны два значения, которые должны быть умножены. Результатом является сумма всех пикселей в растре.
Шепердджо
Неправильно. Это даст вам количество клеток. Не сумма значений ячеек
Роберт Хейманс

Ответы:

9
  1. Создайте многоугольник, используя Vector> Research Tools> Polygon from layer layer. здесь слой является растром, о котором идет речь.
  2. Активировать / установить плагин зональной статистики.
  3. Используйте плагин Zonal statistics, где растр - это тот, чья сумма требуется, а полигон - тот, который вы создали из экстента слоя. Введите префикс выходного столбца (скажем, stats_). Запустите плагин.
  4. Откройте таблицу атрибутов многоугольника. Теперь у вас есть столбец stats_sum вместе с другими столбцами с префиксом stats_.
  5. Я проверил значения в GRASS GIS и совпадение идеально.
SVHegde
источник
4

В QGIS 2.x вы можете получить растровую статистику для всего слоя (включая сумму всех значений пикселей в полосе), используя алгоритм статистики растрового слоя в наборе инструментов Обработка.

Обработка | Панель инструментов (флажок)

затем перейдите к панели инструментов Обработка:

Геоалгоритмы QGIS | Растровые инструменты | Статистика растрового слоя

Создайте статистику для слоя, который вы хотите проверить. Затем результаты сохраняются в метаданных слоя, которые можно получить, щелкнув правой кнопкой мыши на слое и выбрав Свойства.

Стивен Бош
источник
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)
BERA
источник
1

Я понял вопрос как: Как получить сумму всех значений пикселей растра? Что-то вроде запуска статистики по атрибутам вектора. Это можно легко сделать с помощью программирования. Я могу придумать другой способ сделать это через QGIS. Это было бы неэффективно и немного неточно, но это будет работать.

  • Создайте точечный слой, представляющий каждый пиксель растра. Вы можете сделать это через Вектор -> Инструменты исследования -> Обычные точки. Используйте количество точек как x_size * y_size. Поэтому для растра шириной 100 пикселей и высотой 100 пикселей используйте значение 10000. Укажите смещение (разрешение в пикселях) / 2, чтобы вы выбирали центр пикселя.
  • Затем установите плагин Point Sampling. Используя этот плагин, вы можете выбрать растр на всех 10000 точках и получить значение атрибута, которое является значением пикселя.
  • Запустите Vector -> Analysis -> Basic Statistics для полученного вектора, чтобы получить сумму.
spatialthoughts
источник
0

Вы можете использовать gdalinfo для получения растровой статистики, например:

gdalinfo -stats filename.tif

Это даст вам среднее значение в пикселях и размер растра в пикселях. Вы также можете получить эти данные на вкладке Свойства -> Метаданные.

Тогда это вопрос арифметики: среднее значение х (высота в пикселях х ширина в пикселях).

Ник.

nhopton
источник
4
Это не правильно. Во-первых, эти статистические данные не всегда присутствуют (зависит от приложения, написавшего файл), и если они присутствуют, вы не можете быть уверены, что они действительно правильные. Во-вторых, умножение игнорирует вероятность отсутствия значений данных (в этом случае это вычисление будет неверным).
Роберт Хейманс