Como calcular a estatística zonal de um MDT no QGIS e no ArcGIS (com e sem Python)?

Aprenda como extrair informações de modelos digitais de terreno aplicando zoneamentos. Use a ferramenta Estatística Zonal no QGIS e no ArcGIS.

Ao realizarmos um estudo ambiental, usualmente delimitamos nossa área de estudo conforme as bacias hidrográficas existentes. Em algumas situações, essa área de estudo apresenta zonas homogêneas, sendo necessário um detalhamento na nossa descrição de cada uma delas.

Quando trabalhamos com ferramentas de SIG, podemos rapidamente obter essas informações utilizando os dados espaciais que temos disponíveis.

Um desses dados é a elevação.

A elevação pode ser obtida por meio dos Modelos Digitais do Terreno (MDT) ou de Elevação (MDE). Ainda assim, a obtenção desses dados não é tão direta, sendo necessário a ferramental Estatística Zonal (Zonal Statistics) para obter essa informação para cada uma das nossas zonas de interesse inseridas dentro da área de estudo.

De maneira geral, a estatística zonal funcionado com um arquivo do tipo Raster, o qual queremos extrair uma determinada informação e um shapefile contendo a delimitação da zona de interesse.

Agora que sabemos um pouco sobre estatística zonal, vamos ver como utilizá-la no QGIS e no ArcGIS.

MDT do Mundo

Nesta postagem, iremos utilizar o MDT do GLOBE (Global Land One-kilometer Base Elevation) para extrair as estatísticas descritivas dos estados de São Paulo, Santa Catarina e da Bahia.

Você pode realizar o download deste MDT acessando o site da NOAA. Ao visitar esse site, clique em “Any or all 16 tiles“, assim você será redirecionado para uma página que você poderá selecionar qual “pedaço” de MDT você deseja baixar.

Lembrando que, ao realizar o download deste MDT, você deverá renomeá-lo e adicionar .bil no final dele. Em seguida, você deverá baixar o arquivo .hdr disponível neste site, também do NOAA, e salvá-lo na mesma pasta com o mesmo nome do MDT.

Ao abrir esses arquivos no seu SIG, indique que seu datum é o WGS 84 (EPGS: 4326).

Com relação aos estados brasileiros, os quais utilizaremos para calcular nossas estatísticas zonais, os shapefiles utilizados foram baixados do site do IBGE.

Estatística Zonal no QGIS

No QGIS (3.4), você encontrará a ferramenta de estatística zonal clicando no menu Processamento (Processing) e em seguida, clicando em Caixa de Ferramentas (Toolbox). Ou você pode apenas apertar Ctrl + Alt + T para abrir essa janela.

Acessando a ferramenta Estatística Zonal no QGIS.
Acessando a ferramenta Estatística Zonal no QGIS.

Em seguida, busque por Zonal e você será direcionado para a ferramenta Estatística Zonal (ou Zonal Statistics). Dê dois cliques sobre ela.

Uma nova janela será aberta e será solicitado os seguintes itens:

  • Camada Raster (Raster Layer): Arquivo no formato matricial do qual queremos extrair alguma informação. No nosso caso, é o MDT;
  • Banda Raster (Raster Band): Indica qual é a banda da imagem. Como estamos trabalhando com MDT, só há uma;
  • Prefixo da Coluna de Saída (Output column prefix): Caracteres que indicarão que a coluna obtida foi resultado da estatística zonal. Aqui, vamos marcá-la como as letras “B2E_”;
  • Estatísticas para Cálculo: Quais estatísticas você quer? Alguns exemplos são Soma, Média, Mediana, Desvio Padrão, Máximo e Mínimo.

Agora sabemos o que precisamos para calcular a estatística zonal. Vamos calculá-la para obter os valores Média, Máximo e Mínimo do estado de São Paulo.

Janela da caixa de ferramenta da Estatística Zonal do QGIS.
Janela da caixa de ferramenta da Estatística Zonal do QGIS.

Após executar essa ferramenta, você irá notar que nenhum arquivo será gerado ou muito menos aberto. Os resultados são adicionados diretamente na Tabela de Atributos do shapefile utilizado.

Dessa forma, clicando sobre o shapefile do estado de São Paulo e selecionado a tabela de atributos, podemos avaliar nossos dados gerados.

Tabela de Atributos contendo as estatísticas zonais de São Paulo.
Tabela de Atributos contendo as estatísticas zonais de São Paulo.

A partir dos dados que utilizamos, podemos afirmar que a cota média do estado de São Paulo é 558,06 metros, com valores máximos e mínimos de 2.703 metros e 1 metro, respectivamente.

Ao realizarmos o mesmo procedimento para os estados de Santa Catarina e Bahia, iremos obter os seguintes resultados:

  • Santa Catarina: Média = 682,34 m; Máximo = 1.758 m e Mínimo = 1;
  • Bahia: Média = 518,29 m; Máximo = 1.734 m e Mínimo = 1.

Nesta situação, rodamos a estatística zonal para estados em shapefiles separados. Cabe lembrar que poderíamos ter pego o shapefile de todos os estados (ou seja, do Brasil todo) e rodarmos a mesma ferramenta. O resultado seria o cálculo das estatísticas solicitadas para cada um dos polígonos.

Estatística Zonal no ArcGIS

No ArcGIS, para acessar essa ferramenta, vá em ArcToolbox e siga o seguinte caminho: Spatial Analyst Tools > Zonal > Zonal Statistics.

Ao abrir a ferramenta Zonal Statistics, você terá que fornecer os seguintes dados:

  • Input Raster or Feature Zone Data: Raster ou shapefile contendo as zonas de interesse (no nosso caso, os estados que estão sendo avaliados);
  • Zone Field: Quando utilizamos um shapefile com várias zonas, este campo deverá ser utilizado para indicar ao ArcGIS as zonas conforme estabelecido na tabela de atributos (exemplo, shapefile com todos os estados do Brasil, sendo selecionado a coluna referente ao nome dos estados);
  • Input Value Raster: Raster que queremos extrair informações;
  • Output Raster: Raster contendo a estatística zonal;
  • Statistic Type: Qual estatística você quer calcular?

Diferente do QGIS, essa ferramenta do ArcGIS cria um raster como saída. Para obter um resultado semelhante ao do QGIS, utilize a ferramenta Zonal Statistics as Table.

Ferramenta Zonal Statistics no ArcGIS.
Ferramenta Zonal Statistics no ArcGIS.

Ao executar essa ferramenta para média, mínimo e máximo de São Paulo, obtemos, respectivamente os seguintes resultados 558,55 m, 1 m e 2.703 m.

Para evitar que fiquemos várias vezes rodando essa ferramenta para obter as estatísticas zonais, vamos utilizar a ferramenta Zonal Statistics as Table para obtê-las mais facilmente.

Semelhante à ferramenta anterior, você terá que fornecer o raster ou shape contendo as zonas de interesse; a coluna de atributo referente à cada zona; o raster contendo a informação a ser extraída; o local onde a tabela será salva e quais as estatísticas você quer.

Ferramenta Zonal Statistics as Table do ArcGIS.
Ferramenta Zonal Statistics as Table do ArcGIS.

Após executar essa ferramenta, o ArcGIS irá criar uma tabela que pode ser adicionada à tabela de conteúdo (normalmente, ele já adiciona automaticamente) e você pode visualizá-la clicando sobre ela e indo em Open (Abrir).

Para a Bahia, temos uma elevação média de 518,31 m, elevação máxima de 1.734 m e mínima de 1 m. Para Santa Catarina, temos uma elevação média de 680,98 m, elevação máxima de 1.758 m e mínima de 1 m.

Estatística Zonal no QGIS com Python

Se você quiser extrair as mesmas estatísticas de um raster sem utilizar as janelas das ferramentas que citamos, você pode programar e utilizar Python dentro do QGIS.

Para abrir o console Python no QGIS, vá em Plugins e clique sobre Python Console, ou aperte Ctrl + Alt + P.

Utilize o seguinte código para obter a mediana e o intervalo dos dados, lembrando que os comentários no corpo do código explicam cada trecho dele.

# Importando as bibliotecas necessárias.
import os
from qgis.core import QgsVectorLayer
from qgis.analysis import QgsZonalStatistics

# Definindo nossas variáveis (nosso shapefile e raster)
camadaBahia = QgsVectorLayer("...Caminho/blogPost/29UFE250GC_SIR.shp", "Bahia", "ogr")
camadaMDT = QgsRasterLayer("...Caminho/GLOBE DEM/j10g.bil", "MDT")

# Executando a função Zonal Statistics
estatisticaZ = QgsZonalStatistics(camadaBahia, camadaMDT, "PY_", 1, QgsZonalStatistics.Median | QgsZonalStatistics.Range)
estatisticaZ.calculateStatistics(None)

# Carregando o shapefile com as estatísticas
iface.addVectorLayer("...Caminho/blogPost/29UFE250GC_SIR.shp", "Bahia", "ogr")

Note que no final do código carregamos novamente o shapefile da área de interesse. Isso porque ao executar a função Estatística Zonal, caso o shapefile já esteja aberto, os resultados não aparecerão na tabela de atributos, sendo necessário carregar o arquivo novamente.

Estatística Zonal no ArcGIS com Python

Para calcular a estatística zonal pela ArcGIS usando ArcPy, abra o console python dele, clicando em Geoprocessing e em seguida em Python.

No console Python, insira os comandos abaixo. Lembrando que os comentários irão te auxiliar na compreensão do código.

# Importando as bibliotecas
import arcpy
from arcpy import env
from arcpy.sa import *

# Definindo ambiente de trabalho
env.workspace = "...Caminho/ferna/Desktop/blogPost"

# Definindo variáveis
SaoPaulo = "35UFE250GC_SIR.shp"
Municipio = "NM_ESTADO"
MDT = "j10g.tif"
tabelaSaida = "TABELA_ArcPy.dbf"

# Aplicando função Zonal Statistics
Resultado1 = ZonalStatisticsAsTable(SaoPaulo, Municipio, MDT, tabelaSaida, "NODATA", "MEDIAN")

Embora o código esteja de acordo com a documentação da ESRI para esta ferramenta, ela esta retornando uma tabela vazia, sendo que já testamos o uso de raster e shapefile como zonas, sem nenhum resultado satisfatório. Inclusive, todas os sistemas de coordenadas estão como WGS 84 (Geográfico), sendo que este então não é o problema. Vamos testando novas soluções e assim que encontrarmos, atualizaremos a postagem (ou caso você consiga, deixe seu comentário).

A estatísticas por zonas é uma ferramenta muito interessante e aplicável na descrição de áreas de estudo, especialmente quando sua área apresenta subdivisões e contém informações no formato matricial. Ela pode facilitar a extração de dados para várias zonas de interesse de forma fácil e rápido.

Quer aprender mais sobre ArcGIS, confira nosso curso online para usuários iniciantes e intermediários e para profissionais das ciências ambientais. Confira clicando aqui.

Ficou com alguma dúvida? Deixe seu comentário para podermos te ajudar.



Clique na figura abaixo e assine nossa lista de emails para receber nosso ebook "Como criar mapas de localização com ArcGIS 10.x".


Author: Fernando BS

Engenheiro Ambiental e de Segurança do Trabalho. Atua nas áreas de recuperação ambiental, geoprocessamento e ciência do solo. Busca soluções utilizando softwares como ArcGIS, R e MATLAB.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *