Tutorial: Calculando a Porcentagem de Cobertura do Solo por Sub-bacia

Site: OpenCourseWare for GIS
Disciplina: QGIS Para Aplicações Hidrológicas
Livro: Tutorial: Calculando a Porcentagem de Cobertura do Solo por Sub-bacia
Impresso por: Guest user
Data: sexta-feira, 21 de junho de 2024 às 00:01

1. Introdução

Para estudos sobre hidrologia de bacias, muitas vezes é importante saber a porcentagem de cobertura do solo por sub-bacia.




1.1. Teoria sobre ferramentas de sobreposição de vetores

Nesta lição, usaremos algumas ferramentas de sobreposição de vetor.

Assista a este vídeo para aprender os conceitos.

2. Preparando a camada de sub-bacia

Começaremos com um novo projeto QGIS.

1. Baixe o shapefile catchpolygons.shp e adicione-o a um projeto QGIS vazio.

2. Abra a tabela de atributos da camada catchpolygons.

Esta camada foi calculada usando a abordagem de delimitação de bacia hidrográfica da Lição 4. O resultado é que cada sub-bacia tem um valor de 100. Para nosso propósito, entretanto, cada sub-bacia precisa de um id único.

3. Alterne para o modo de edição usando o botão Toggle editing button.

4. Na calculadora de campo, formule a equação DN = $id e clique Atualizar tudo. Clique no botãoSave layer edits para salvar as edições.

number features

A função $id atribui o id de recursos exclusivo para cada recurso na tabela de atributo.

Agora precisamos adicionar um atributo com a área de superfície para cada polígono da sub-bacia.

5. Clique add new field para  adicionar uma coluna na tabela de atributo.

6. Chame o novo campo CatchArea, indique que ele contém um número decimal (real) com um comprimento de 10 caracteres e uma precisão de 2 casas decimais. Clique em OK para criar a coluna. 

add catcharea field

7. Na calculadora de campo, formule a equação CatchArea = $area e clique Atualizar tudo.

A tabela de atributos agora tem ids e áreas de superfície exclusivas para cada sub-bacia.

calculate catchmentareas

8. Clique no botão  Toggle editing button para salvar as edições e desativar a edição.

Agora temos que preparar os dados de cobertura do solo.

3. Preparando os Dados de Cobertura do Solo

Agora temos que preparar os dados de cobertura do solo, que consistem nas seguintes etapas pelas quais você será orientado nas próximas seções:

  • Fazer o Download dos dados CORINE 2018
  • Estilize a camada de cobertura do solo
  • Cortar e reprojetar a camada de cobertura do solo
  • Agregar as classes de cobertura do solo
  • Dissolver feições de cobertura do solo

3.1. Baixando dados CORINE 2018

No capítulo anterior, usamos os dados CORINE 2012 WMS. Para os cálculos, no entanto, não podemos usar as imagens renderizadas WMS, precisamos acessar os dados. Os dados do CORINE 2018 podem ser baixados da Internet.

1. Abra o navegador e vá para https://land.copernicus.eu/pan-european/corine-land-cover.

2. Clique em CLC 2018.

Você verá um mapa online com uma visualização da camada.

3. Clique na guia Download.

4. Para fazer o download, você precisa de uma conta. Clique no link para se registrar.

Uma vez logado, você pode escolher entre diferentes formatos de dados.

corine download

Aqui, usaremos o formato GeoPackage, porque precisamos de dados vetoriais.

5. Marque a caixa antes do formato GeoPackage.

6. Clique no botão Download.

O arquivo tem 3,5 GB. Se você tiver largura de banda baixa, também pode baixar um subconjunto do conjunto de dados dos materiais do curso na página principal da lição.

7. Descompacte o conteúdo em uma nova pasta que você usará para este exercício.

8. Arraste o camada GeoPackage U2018_CLC2018_V2020_20u1para a tela do mapa.

9. No pop-up para Selecionar transformação, clique em OK para usar a equação de transformação padrão.

10. Faça os polígonos da camada catchpolygons transparente com um contorno preto e largura de traço de 0.66 mm e certifique-se de que está no topo da camada de cobertura do solo.

3.2. Estilizando o Mapa de Cobertura do Solo CORINE 2018

Agora vamos estilizar o mapa CORINE 2018 Land Cover. No conjunto de dados baixado, você encontrará uma pasta Legend. A pasta contém arquivos de legenda em diferentes formatos. Aqui, usaremos o arquivo clc_legend.qml, um arquivo de estilo de camada QGIS.

1. Clique com o botão direito do mouse na camada de cobertura da terra e escolha Propriedades. Vá para a guia Simbologia.

2. Na parte inferior da caixa de diálogo, vá para Estilo | Carregar Estilo.

load style

3. Agora você está na caixa de diálogo do Gerenciador de estido de banco de dados. Navegue para  o arquivo legend\clc_legend.qml  e clique em carregar estilo.

database styles manager

A legenda agora é aplicada com as configurações corretas à camada de cobertura do solo.

corine layer style

4. Clique em OK para aceitar e retornar para a tela de mapa.

3.3. Recortar e Reprojetar o Mapa de Cobertura do Solo

A camada de cobertura do solo ainda é muito grande (mesmo se você baixou o subconjunto fornecido), então vamos preparar um subconjunto que cobre apenas as sub-bacias. Além disso, também iremos reprojetar a camada de cobertura do solo (EPSG: 3035) para a mesma projeção da camada catchpolygons (EPSG:32632). Ambas pode ser feita com uma ferramenta


1. Clique com o botão direito do mouse na camada U2018_CLC2018_V2020_20u1 e escolha Exportar | Salvar Feições Como.

2. Escolha como formato GeoPackage, digite o nome da camada Corine2018_repr e para SCR o SCR do projeto (EPSG:32632).

3. Marque a caixa antes de Extensão e clique em Calcular a partir da camada e escolha catchpolygons. Clique em OK.



4. Copie o estilo da camada U2018_CLC2018_V2020_20u1 para a camada Corine2018_repr e remova a camada U2018_CLC2018_V2020_20u1.

O resultado deve ser assim:

result export corine

3.4. Agregar Classes de Cobertura do Solo

CORINE tem diferentes níveis de classes de cobertura do solo. Os dados CORINE que temos são chamados de dados nível 3. Na tabela de atributos, o campo code_18 possui valores para o nível 3, indicados por 3 dígitos. Nesta seção, vamos agregar a classificação detalhada de nível 3 ao nível 1. Portanto, precisamos criar um novo campo com apenas o primeiro dígito de cada feição.

1. Abra a tabela de atributo da camada Corine2018_repr e alterne para o modo edição.

2. Adicione um novo campo. Dê ao atributo o Nome Level1, escolha para Tipo Número inteiro (inteiro) e Comprimento 1.


3. Use o botão field-calculator-button.png para abrir a Caixa de Diálogo Expressão.

Vamos escrever uma expressão que recodifica todas as classes de nível 3 para o nível 1.

4. Escreva a expressão conforme mostrado na figura abaixo.

A função left retorna uma string de com os n caracteres mais à esquerda. Aqui precisamos do primeiro caractere, então escolhemos 1 para o comprimento. Usamos a função to_int para converter a string em inteiro

left

5. Atualize o campo level1.

A tabela de atributos agora deve ter a seguinte aparência:

result level 1

6. Desative o modo de edição e salve as edições.

3.5. Dissolver feições de Cobertura do Solo

Agora, existem muitos polígonos contíguos com a mesma classe de nível 1. Eles devem ser mesclados em um único recurso. Isso é feito com a operação de dissolver.

1. No menu principal vá em Vetor | Geoprocessamento | Dissolver.

2. Na caixa de diálogo Dissolver escolha corine2018_repr como camada de entrada e selecione o campo level1 como o  Dissolver campo. Salve o arquivo como corine2018_dissolved e clique em Executar.

dissolve-level1.png

3. Clique em Fechar para retornar à tela do mapa quando o cálculo for concluído.

4. Abra a tabela de atributo da camada corine2018_dissolved para verificar o resultado. Agora ele deverá mostrar apenas 5 feições com classes de nível 1 de 1 a 5. Certifique que você pode clicar no campo nome para classificar o campo.

attribute-table-corine-after-dissolve.png

5. Remova corine2018_repr do painel de camada e estilize a camada corine2018_dissolved com cores baseadas na legenda CORINE level 3 original.

corine-level1-styled.png

4. Interseção da Camada de Cobertura do Solo Com a Camada de Sub-bacias

Agora que preparamos a cobertura do solo e as camadas do polígono da sub-bacia, a próxima etapa é fazer a interseção das duas camadas para adicionar os limites das sub-bacias ao mapa de cobertura do solo.

1. No menu principal vá para Vetor | Geoprocessamento | Interseção.

intersection-menu.png

2. Escolha a camada corine2018_dissolved como camada de entrada, escolha catchpolygons como Camada de sobreposição. Escolha corine_catch_intersected.shp como o nome do arquivo de saída e clique em Executar.

intersect-corine-catchments.png

Você verá o seguinte erro

invalid-geometry-error.png

Isso está relacionado a erros de geometria que podem ocorrer no processo de delimitação da bacia de captação onde transformamos um raster em polígono.

O erro pode ser corrigido.

3. Na Caixa de Ferramenta de Processamento pesquise pela ferramenta Corrigir geometria.

fix-geometries-tool.PNG

4. Na caixa de diálogo Corrigir geometria escolha catchpolygons como camada de entrada e nomeie como catchpoly_fixed.shp o arquivo de saída e clique Executar.

5. Clique Fechar depois de concluir o processamento.

6. Copie o estilo da camada catchpolygons para a camada catchpoly_fixed e remova a camada catchpolygons.

7. Repita os passos 1 e 2 e coloque o nome no arquivo de saída da camada de interseção corine_catch_intersected_cor.shp

8. Estilize a camada corine_catch_intersected_cor  copiando o estilo da camada corine2018_dissolved previamente estilizada. Verifique o resultado da interseção.

9. Remova a camada corine2018_dissolved  do painel de camadas.

5. Calcular a Área da Classe de Cobertura do Solo por Sub-bacia

Agora precisamos calcular a área de classe CORINE level 1 por sub-bacia.

1. Abra a tabela de atributo da camada corine_catch_intersected_cor.

Na tabela de atributos, podemos encontrar o campo CatchArea com a área de cada sub-bacia, o campo DN com o ID único para cada sub-bacia e o campo Level1 com a CORINE nível 1 para cada feição.

Adicionaremos um novo campo e calcularemos a área de cada feição que corresponde à área de cada classe de Nível 1 em uma sub-bacia de maneira semelhante à que fizemos anteriormente para as áreas da sub-bacia.

2. Altere para o modo de edição.

3. Adicione um campo ClassArea com Tipo com Número Decimal (real), Comprimento 10, e Precisão 2.

4. Use a calculadora de campo para calcular ClassArea = $area e clique em atualizar tudo.

5. Agora adicione um campo para porcentagem de cala classe CORINE Level 1 em cada sub-bacia. chame o campo Percentage com Tipo como Número Decimal (real), Comprimento 4, e Precisão 1.

6. Use a calculadora de campo para calcular Percentage = (ClassArea/CatchArea) * 100. Você pode usar a caixa de diálogo expressão para formular a equação.

7. Clique em Atualizar tudo para atribuir a porcentagem a cada feição.

8. Para completar a tabela de atributos, adicione um campo com nomes de classes nível 1 como texto. Chame esse campo de Landcover. Use a função CASE...WHEN para isso:

case-when.PNG

Com esta função, você pode escrever condições. Isso, por exemplo, significa: se o atributo Nível1 for igual ao valor 1, o resultado é a string Artificial, etc.

9. Desative a edição e salve as edições.


A tabela de atributos agora deve ter a seguinte aparência:

attribute-table-percentage-complete.png

6. Criar um Gráfico de Pizza Usando o Complemento Data Plotly

Agora que temos a porcentagem de cobertura do solo para cada sub-bacia, podemos criar gráficos de pizza. Uma maneira é copiar as colunas e colá-las no software de planilha para processamento posterior. Outra forma é usar o complemento Data Plotly, que usaremos aqui.

1. Instale o complemento Data Plotly do Gerenciador de Complemento.


Faremos um gráfico de pizza cada sub-bacia. Atribuímos anteriormente um ID exclusivo para cada sub-bacia no campo DN.

2. Na tabela de atributos da camada corine_catch_intersected_cor, selecione todas as feição com DN = 0. Você pode usar a caixa de diálogo Selecionar feições por expressão clicando no botão select-features-by-expression-button.png. Alternativamente, você pode classificar a tabela de atributos no DN e usar o botão Ctrl e selecionar várias feições com DN = 0.

select-by-expression-dialog.png

3. Clique no botão dataplotly-button.pngpara abrir o painel Data Plotly.

4. Em Plot Type escolha Pie Plot. Em Plot Parameters escolha a camada corine_catch_intersected_cor, marque a caixa antes Use only selected features, para Grouping field escolha Landcover, e para Y campo Percentage.

5.Clique no botãodataplotly-legend-settings-button.png para definir as propriedades de legenda.

dataplotly-legend-settings-dialog.png

6. Clique no botão Create Plot  e verifique o resultado.

7. Com o botão Export to image dataplotly-export-as-image-button.png você pode exportar o gráfico para um arquivo .png.

O resultado deve ser assim:

dataplotly-plot.png

Você pode repetir isso para as outras sub-bacias.

7. Conclusão

Nesta lição, você aprendeu a:

  • adicione valores únicos às camadas vetoriais
  • calcular áreas de polígonos em tabelas de atributos
  • estilizar uma camada vetorial usando um arquivo .qml
  • recortar, reprojetar e exportar camadas vetoriais para outro formato
  • usar condições na calculadora de campo
  • aplicar ferramenta de geoprocessamento vetorial como dissolver, interseção, e buffer
  • Corrigir erros de geometria
  • Criar gráficos de pizza usando o complemento DataPlotly
  • Você pode assistir o webinar para ver o procedimento completo: