Модуль r.series.filter ГИС GRASS
Назначение модуля
Модуль r.series.filter -- это модуль для геоинформационной системы GRASS, предназначенный для обработки временных рядов растровых данных, в первую очередь вегетационных индексов. Модуль производит очистку от шумов временных рядов с использованием различных фильтров (медианый фильтр, фильтр Савицкого-Голея). Модуль может использоваться для очистки от шумов временных рядов произвольной природы, однако одной из важных особенностей модуля является поддерка фильтрации данных вегетационных индексов. Для обработки таких рядов модуль реализует процедуру фильтрации, предложенную в статье "Chen J. et al. A simple method for reconstructing a high-quality NDVI time-series data set based on the Savitzky–Golay filter //Remote sensing of Environment. – 2004. – Т. 91. – №. 3. – С. 332-344.". Основная идея этого фильтра опирается на то, что шумы в значениях вегетационных индексов обычно индуцируются условиями съемки и атмосферными явлениями, которые занижают зачения индекса. В очень упрощенном виде можно сказать, что предлагаемая в указанной статье методика производит отбраковку низких значений индекса и производит фильтрацию по верхним значениям анализируемого временного ряда.
Установка
Модуль был написан на языке Python и предназначен для работы в GRASS GIS седьмой версии. В модуле используются библиотека scipy.signal, входящая в состав пакета SciPy. Поэтому перед началом работы в интерпретатор Python, используемый в GRASS, следует установить SciPy.
После установки SciPy появится возможность установить сам модуль r.series.filter. Данный модуль доступен в репозитории модулей GRASS ADDONS, поэтому его установка производится автоматически, если использовать модуль g.extension (вызываемый из графического интерфейса пользователя или командной строки). Например, можно использовать следущюую команду:
g.extension r.series.filter
В результате модуль будет автоматически скачан из репозитория и установлен.
Особенности работы и примеры
Параметры модуля и их назначение
Модуль находится в состоянии разработки, это означает, что в него будут добавляться новые возможности. На момент написания статьи модуль использует следующие параметры и ключи (показаны наиболее важные):
r.series.filter [-cu] input=string[,string,...] result_prefix=string [method=string] [winsize=value] [order=value] [opt_points=value] [diff_penalty=value] [deriv_penalty=value] [iterations=value] Flags: -c Try to find optimal parameters for filtering -u Fit the result curve by upper boundary Parameters: input Raster names of equally spaced time series. result_prefix Prefix for raster names of filtered X(t) method Used method default: savgol winsize Length of running window for the filter default: 9 order Order of the Savitzky-Golay filter default: 2 opt_points Count of random points used for parameter optimization default: 50 diff_penalty Penalty for difference between original and filtered signals default: 1.0 deriv_penalty Penalty for big derivates of the filtered signal default: 1.0 iterations Number of iterations default: 1
Параметры общего назначения
Два параметра input и result_prefix отвечают за перечень входных и выходных растров. Модуль ожидает, что на вход ему будет передан список растров, перечисленных через запятую в порядке возрастания (или убывания) времени. Например:
input=ndvi1,ndvi2,ndvi3,ndvi4,....
При этом временной ряд должен быть равноотстоящим, т.е. растры представляют собой измерения какой-либо величины (или состояния территории), сделанные через равные промежутки времени. Но на практике не всегда возможно иметь дело с равноотстоящими рядами, часть каких-либо измерений может отсутсвовать по объетивным причинам. В таком случае следует вставить пустой растр, состоящий из значений NULL (нет данных), который легко сгенерировать, воспользовавшись растровым калькулятором:
r.mapcalc expression="dummy = null()"
В самих растрах так же могут быть области, с отсутсвующими в них данными, такие участки не требуют специальной предварительной обработки.
Перед началом расчетов такие пропущенные значения будут предварительно заполнены данными, полученными линейной интерполяцией (во времени, пространственная интерполяция не используется).
Результаты будут записаны в новые растры, названия которых начинаются с указанного result_prefix. Например, в случае, если result_prefix="res.", будут получены растры: res.ndvi1,res.ndvi2,res.ndvi3,res.ndvi4,....
Таким образом команда со значениями, заданными по умолчанию может выглядеть следующим образом:
r.series.filter input=ndvi1,ndvi2,ndvi3,ndvi4,.... result_prefix="res."
Методы фильтрации
На момент написания статьи в модуле реализовано два метода фильтрации:
- медианный фильтр (параметры);
- фильтр Савицкого-Голея.
Каждый из этих фильтров работает в скользящем окне и рассчитывает прогнозируемое значение исследуемой величины для центральной точки окна.