Як підсумувати значення пікселів у QGIS?


10

Мені потрібно знати значення суми всіх пікселів у растрі. Однак у розділі "Статистика" на вкладці "Метадані" в "Властивості" під Сумою всіх комірок завжди вказується 0,00. Я намагався з різними растровими форматами безрезультатно. Що я роблю неправильно? Як я можу отримати це значення?


Я сподіваюся, що я правильно тебе зрозумів; Я намагався реконструювати вашу проблему з моїм растром. Сума всіх пікселів у растрі - це x-пікселі * y-пікселі, правда? Це значення ви можете отримати двома способами: 1) Клацніть правою кнопкою миші фактичний файл (тиф у моєму випадку), у детальному вікні має бути вказана ця інформація. 2) Всередині Gis натисніть Растр-> Різне-> Інформація. Виберіть файл-> редагувати-> гаразд. Тоді ви повинні два значення, які потрібно помножити. Результат - сума всіх пікселів у растрі.
Shepherdjo

Неправильно. Це дасть вам кількість комірок. Не сума клітинних значень
Роберт Хіджманс

Відповіді:


9
  1. Створіть багатокутник за допомогою Вектор> Інструменти дослідження> Полігон із рівня шару. тут шар - це растр.
  2. Активуйте / встановіть плагін статистики за зонами.
  3. Використовуйте плагін Zonal статистики, де растр - той, сума якого потрібна, а полігон - той, який ви створили із рівня шару. Введіть вихідний префікс стовпця (скажімо, stats_). Запустіть плагін.
  4. Відкрийте таблицю атрибутів багатокутника. Тепер у вас є стовпець stats_sum разом з іншими стовпцями з префіксом stats_.
  5. Я перевірив значення в GRASS GIS, і відповідність ідеальна.

4

У QGIS 2.x ви можете отримати растрову статистику для всього шару (включаючи суму всіх значень пікселів у діапазоні), використовуючи алгоритм статистики рівня растрового зображення в панелі інструментів Processing.

Обробка | Панель інструментів (прапорець)

потім перейдіть до Панелі інструментів Обробка:

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

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


2

Ви можете використовувати pyqgis та створити масив nummy та суму:

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, щоб ви відбирали вибір пікселя по центру пікселя.
  • Далі встановіть плагін Point Sampling. Використовуючи цей плагін, ви можете пробити растр у всіх 10000 точок і отримати значення атрибута, яке є піксельним значенням.
  • Запустіть вектор -> аналіз -> основна статистика за отриманим вектором, щоб отримати суму.

0

Ви можете використовувати gdalinfo для отримання растрової статистики, наприклад:

gdalinfo -stats filename.tif

Це дасть вам середнє значення пікселя та розмір растру в пікселях. Ви також можете отримати ці дані на вкладці Властивості -> Метадані.

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

Нік.


4
Це неправильно. По-перше, ця статистика не завжди присутня (залежить від програми, яка написала файл), і якщо вони є, ви не можете бути впевнені, що вони справді правильні. По-друге, множення ігнорує можливість відсутності значень даних (у цьому випадку це обчислення було б неправильним).
Роберт Хіджманс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.