Skip to content

menimato/SER-347_MODIS_Time_Series_Filtering

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

MODIS Time Series Filtering

SER-347 Introdução à Programação para Sensoriamento Remoto

Autores:

  • Bruno Menini Matosak
  • Marcos Antônio de Almeida Rodrigues
  • Tatiana Dias Tardelli Uehara

1. Objetivo

O presente trabalho teve como objetivo a criação de uma ferramenta em Python com interface gráfica, para a obtenção e processamento de dados de séries temporais MODIS (MOD13Q1).

2. Pré-Requisitos

O script necessita dos seguintes pacotes para Python 3.

  • gi (Gtk e GObject, versão 3.0)
  • sys
  • matplotlib
  • wtss*
  • numpy
  • datetime
  • csv
  • scipy
  • math

* Informações sobre a biblioteca wtss podem ser encontradas neste link.

Além das bibliotecas supracitadas, ressalta-se que uma conexão com a internet é imprescindível para o correto funcionamento do script.

3. Uso do Script

3.1 Processando Dados

A ferramenta desenvolvida trata-se de um script executável em Python 3. Ao executar o arquivo "./trabalho_final-Bruno_Marcos_Tatiana.py", o usuário depara-se com uma janela inicial, onde ações podem ser tomadas a partir da barra de menu superior, como ilustra a figura a seguir.

alt text

No item "Process" do menu, o usuário pode escolher entre "MOD13Q1" (dados dos produtos MODIS), "MOD13Q1_M" (dados de qualidade dos dados MODIS), e "Exit" (encerra o script).

Ao selecionar a opção "MOD13Q1" ou "MOD13Q1_M", abre-se a seguinte janela de seleção de dados para o processamento.

alt text

O usuário deve entrar então com dados de Latitude e Longitude (graus decimais), a série a ser acessada, as datas de início (YYYY-MM-DD), os filtros que deseja aplicar à série temporal, se deseja remover outliers antes do processamento e o tipo de gráfico a ser montado.

As seguintes séries estão disponíveis até o momento:

  • MOD13Q1

    • mir
    • blue
    • nir
    • red
    • evi
    • ndvi
  • MOD13Q1_M

    • quality
    • reliability

Disponibiliza-se dois tipos de gráficos a serem plotados:

  • Linha
  • Polar

Caso o usuário opte apenas pela visualização do tipo de gráfico selecionado, ele deve clicar em Process, caso deseje salvar os dados em um arquivo do formato ".csv", ele deve clicar na opção "Process + Save to CSV".

Um exemplo de gráfico do tipo Linha pode ser visto na figura a seguir.

alt text

Ao optar por salvar os dados em uma tabela do tipo ".csv", o usuário pode armazenar todos os dados brutos e trabalhados de acordo com as opções selecionadas. No cabeçalho da tabela encontram-se todas as informações necessárias dos processamentos realizados sobre os dados.

3.2 Filtros

O script oferece 5 opções de aplições de filtros, sendo elas:

  • Filtro de pirâmide
  • Filtro de média
  • Filtro de Gauss
  • Filtro de Savitzky-Golay
  • Filtro de Whittaker-Eilers

Para a alteração dos parâmetros de configuração de cada filtro, o usuário deve clicar na opção "Settings" da barra de menu, e em seguida clicar em "Filters". Uma janela é então apresentada, como mostrado na figura a seguir.

alt text

No filtro de pirâmide é feita uma média ponderada dos termos. O único parâmetro de entrada é o tamanho da janela de pesos da filtragem, a qual é definida seguindo um modelo de pirâmide. O primeiro termo tem peso igual a 1, o seguinte termo tem seu peso acrescido de 1 em relação ao anterior, e assim por diante até o termo do centro da janela, a partir do qual começa-se a subtrair 1 do peso anterior para a definição do peso subsequente. O termo central (de maior peso) é usado para o termo a ser filtrado e os termos adjacentes da janela são usados como pesos para os termos adjacentes ao valor filtrado.

No filtro de média, o parâmetro de entrada também é apenas o tamanho da janela de filtragem. Dentro da janela, o centro é estabelecido no valor a ser filtrado e, então, feita a média para os valores adjacentes.

O filtro de Gauss funciona de forma muito semelhante ao filtro de pirâmide, porém, a definição dos pesos da janela de filtragem é feita através de uma função do tipo Gaussiana. Os parâmetros de entrada são o tamanho da janela de filtragem e o desvio padrão para a função gaussiana.

O filtro de Savitzky-Golay é descrito neste artigo. Os parâmetros de entrada são o tamanho da janela de filtragem, a ordem do polinômio de ajuste, a ordem da derivada e a taxa.

O filtro de Whittaker-Eilers é descrito de forma completa neste artigo. Os parâmetros de entrada são o tamanho da janela de filtragem e a agressividade da filtragem.

3.3 Remoção de Outliers

É oferecida uma opção para a retirada de outliers da série antes da filtragem. O processo é simples, implementado de acordo com este artigo. Caso detectada a ocorrência de um outlier na série, este é substituído pela interpolação simples de seus vizinhos imediatos à esquerda e direita.

O processo necessita apenas de um parâmetro de entrada: a porcentagem limiar da diferença para com seus vizinhos. O valor padrão é 1%, e para alterá-lo basta que o usuário acesse o item "Settings" da barra de menu, e em seguida o item "Outliers Removal". A figura a seguir demosntra a janela de alteração dos parâmtros de remoção de outliers.

alt text

4. Agradecimentos

Os autores gostariam de agradecer ao Prof. Gilberto Ribeiro de Queiroz, pelo auxílio quanto ao uso da biblioteca wtss.

Os autores agradecem também ao usuário do GitHub mhvwerts, pela ajuda na implementação do código da filtragem de Savitzky-Golay.

About

Trabalho Final de SER-347 Introdução à Programação para Sensoriamento Remoto.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors