1 Sobre o Bioma Stats

O Bioma Stats é um pacote em R criado para facilitar o processamento e a análise de dados geoespaciais, com foco em uso e cobertura da terra (Land Use and Land Cover - LULC) no território brasileiro. O pacote foi desenvolvido para automatizar fluxos de trabalho complexos em análises ambientais, desde o download dos dados até a visualização dos resultados, sendo uma ferramenta acessível até para usuários iniciantes no R.

1.1 Funcionalidades Principais

  1. Importação de dados geoespaciais:
    • Integra dados de fontes como o projeto MapBiomas e o OpenStreetMap, permitindo análises detalhadas de atributos espaciais como proximidade a rodovias e corpos d’água.
  2. Análises de métricas de paisagem:
    • Cálculo de métricas como fragmentação, densidade de borda e evolução temporal do uso do solo, essenciais para estudos de conservação e planejamento ambiental.
  3. Visualização de resultados:
    • Permite visualizar mapas LULC e realizar análises customizadas em áreas de interesse, que podem ser definidas por shapefiles ou polígonos desenhados pelo usuário.
  4. Distribuição colaborativa de dados:
    • Utiliza uma rede colaborativa (peer-to-peer) para armazenar e distribuir fragmentos de mapas, reduzindo o tempo de download e a necessidade de um servidor central.
    Rede colaborativa para o armazenamento e a distribuição de dados georreferenciados do Brasil. Fonte: Projeto Bioma Stats, 2024

Com o Bioma Stats, o usuário pode automatizar várias etapas da análise ambiental, tornando o processo mais eficiente e menos suscetível a erros. O pacote é recomendado para pesquisadores de diversas áreas interessados em realizar análises ambientais com dados georreferenciados de maneira prática e intuitiva.

2 Instalação

O Bioma Stats é disponibilizado apenas na versão de teste e deve ser instalado diretamente de repositório do GitHub (iep-ferreira/biomastats).

Para quem já instalou versões anteriores do programa, recomenda-se a remoção do pacote e a reinicialização da sessão do R.

remove.packages("biomastats")

O pacote devtools é requerido para a instalção do programa. Para instalar e carregar o pacote devtools, use os comandos a seguir:

#install.packages("devtools") # deixar comentado se houver instalação prévia
library(devtools)

Após carregar o devtools, o usuário deverá instalar e carregar o pacote biomastats.

devtools::install_github("iep-ferreira/biomastats")
library(biomastats)

3 Definição do recorte

No programa Bioma Stats, o usuário pode importar um recorte via polígono em .shp ou definir uma área a partir de coordenadas centrais e da forma do recorte.

3.1 Importação de um recorte

O usuário tem a opção de indicar o caminho do shapefile a ser carregado. O próprio Bioma Stats contém alguns exemplos de arquivos .shp alocados na subpasta ./biomastats/shp/, a qual é encontrada na biblioteca pessoal do R após a instalação do programa. Para acessar o seu caminho, utilize o comando system.file como ilustrado a seguir:

(path_package <- system.file(package = "biomastats"))

O recorte pode ser visualizado, antes da análise, com auxílio dos pacotes sf e mapview. No código a seguir, o arquivo .shp com as delimitações da fazenda Lagoa do Sino, da UFSCar de Buri - SP, é carregado e visualizado.

ufscar_shp <- file.path(path_package, "shp/UFSCar.shp")
# install.packages("sf")
# install.packages("mapview")
library(sf)
library(mapview)
mapview(sf::read_sf(ufscar_shp))

3.2 Criação de um recorte

Outra forma de definir o recorte é a partir dr coordenadas centrais. Com as coordenadas centrais, a forma e o tamanho do recorte desejados pelo pesquisador, a função make_polygon do programa Bioma Stats é capaz de criar o .shp automaticamente. Neste caso, o usuário deve informar a latitude (lat), a longitude (lon), o diâmetro (size, em km) e a forma desejada (shape = circle, hexagon ou square), como demonstrado a seguir:

make_polygon(lat = -23.605, lon = -48.529, size = 2.5, shape = "hexagon")

Neste exemplo, criou-se uma região hexagonal de \(2,5\)km de diâmetro, centrada na localização do campus Lagoa do Sino. Observe que o .shp foi automaticamente salvo como polygon.shp no diretório shp da biblioteca pessoal do R biomastats.

shp_path <- file.path(path_package, "shp/polygon.shp")
mapview(sf::read_sf(shp_path))

4 Carregamento dos dados

Os dados de uso e ocupação do solo são carregados e pré-processados pela função load_rasters. Há duas formas de carregar os dados: (i) download automático e (ii) importação de arquivo pessoal.

mapas <- load_rasters(shape_path =  ufscar_shp, start = 1985, end = 2021, method = "download", 
                        export_folder_path = "./meus-mapas/")

O fornecimento dos mapas é realizado por um protocolo de armazenamento e distribuição colaborativo, a partir de links compartilháveis armazenados de arquivos públicos armazenados em links de colaboradores do projeto. Observe que a rede de compartilhamento é pequena e, portanto, o fornecimento de mapas pode ser suscetível a instabilidades da rede.

mapas <- load_rasters(shape_path = shp_path, start = 1985, end = 2021, method = "library", 
                        import_folder_path = "./minha-colecao/")

Observe que, em ambos os casos, o usuário deve também especificar os anos de início (start) e fim (end) do estudo. O Bioma Stats mapas anuais de uso e ocupação do solo e a sétima coleção do MapBiomas, usanda neste trabalho, contém dados de 1985 a 2021.

O download automático é ideal quando a área de estudo é limitada a poucos milhares de \(km^2\) e o usuário não deseja gastar tempo com o download de toda a coleção do MapBiomas. No entanto, o tempo gasto no pré-processamento é excessivo para recortes maiores, como estados inteiros e biomas, sendo preferível o segundo método de carregamento para situações como essas.

5 Exportação e leitura de objetos do Bioma Stats

Os mapas pré-processados no Bioma Stats podem ser exportados e distribuídos como objeto de dados do R (Rdata). Dessa forma, os resultados podem ser compartilhados com outros pesquisadores ou guardados para análises futuras.

save(mapas, file =  "./meus-recortes/biomastats_ufscar_exemplo.Rdata")

Todas as informações relevantes são recuperadas quando o usuário carrega o arquivo .Rdata. O pacote Bioma Stats contém dois arquivos já recortados, para serem usados como exemplos, disponíveis na subpasta examples do diretório do pacote, na biblioteca pessoal do R. Com o código a seguir, carregamos o objeto mapas, que contém os dados de uso e ocupação do solo previamente recortados para a fazenda Lagoa do Sino, da UFSCar de Buri - SP.

exp_path <- file.path(path_package, "examples/biomastats_ufscar_exemplo.Rdata")
load(exp_path)

Os objetos do Bioma Stats possuem atributos como horizonte de tempo (time_range), delimitações do recorte (shape) e rasters recortados e reprojetados para WSG84 (rasters). Eles podem ser acessados diretamente, usando o comando $.

mapas$time_range
## [1] 1985 2021

6 Cálculo de áreas

A função get_area do Bioma Stats faz o cálculo de área das classes da paisagem e corrige o seu valor de acordo com as coordenadas dos pixels. As áreas são exportadas na forma de tabela estruturada, organizadas por classe da paisagem e ano.

results <- get_area(mapas, plot_type = "areaplot")
head(results$aggregate_data, 6)
##    land_class year  area   land_class_name
## 3           3 1985 0.311  Forest Formation
## 4           4 1985 0.020 Savanna Formation
## 11         11 1985 0.705           Wetland
## 12         12 1985 0.006         Grassland
## 15         15 1985 4.229           Pasture
## 21         21 1985 1.023    Mosaic of Uses

O atributo time do resultado fornece ao usuário o gráfico de séries temporais para todas as classes de uso e ocupação do solo existentes na paisagem. Há duas opções para o gráfico das séries temporais: plot_type = "areaplot" ou plot_type = "profile".

results$time

7 Mapas de uso e ocupação

Adicionalmente, comando land_vis permite ao usuário visualizar o mapa de uso e ocupação da área para o ano de sua escolha. As cores e legendas seguem o padrão seguem normas técnicas e foram importados da plataforma MapBiomas.

7.1 Mapa da UFSCar Lagoa do Sino, ano de 1990

land_vis(mapas, year = 1990)

7.2 Mapa da UFSCar Lagoa do Sino, ano de 2020

land_vis(mapas, year = 2020)

8 Distribuição de classes

O comando land_dist apresenta a distribuição de classes, em termos de área total, para o ano de referência. As opções são gráfico de colunas (type = "barplot") e de pizza (type = "pie").

8.1 Gráfico de colunas

land_dist(results, year = 2020, type = "barplot")

8.2 Gráfico de setores

land_dist(results, year = 2020, type = "pie")

9 Métricas da paisagem

O Bioma Stats também apresenta um módulo para a reclassificação e métricas da paisagem. O módulo é integrado com o programa landscapemetrics do R e possui uso intuitivo: na função biomastats_metrics, o usuário precisa passar o objeto no padrão biomastats, o horizonte de tempo, a zona de fuso horário, o hemisfério ("south" ou "north") e as métricas de interesse ("Frag. Avg. Area (ha)", "Edge Length (m)", "Edge Density (m/ha)",
"Total Reclassified Area (ha)", "Aggregation Index (%)", "Number of Fragments"
). Ao fazer metrics = "keep.all", todas as métricas existentes no programa serão calculadas.

Automaticamente, o programa abrirá uma janela seletora para a escolhas de classes de uso e ocupação do solo.

plot_teste <- biomastats_metrics(mapas,  start = 1985, end = 2020, zone="20", hemisphere ="south", metrics =  "keep.all")

Janela seletora de classes. Fonte: Projeto Bioma Stats, 2024

As métricas são exportadas na forma de tabela, como retorno da função biomastats_metrics:

head(plot_teste$metrics_table, 6)
##   Year Frag. Avg. Area (ha) Edge Length (m) Edge Density (m/ha)
## 1 1985            0.9856075          1660.0            2.417469
## 2 1986            1.0284600          1660.0            2.417469
## 3 1987            3.6853150          1594.2            2.321644
## 4 1988            2.6568550          3776.1            5.499160
## 5 1989            4.0452760          6000.5            8.738569
## 6 1990            5.6458169         10913.3           15.893114
##   Total Reclassified Area (ha) Aggregation Index (%) Number of Fragments
## 1                     1.971215              50.00000                   2
## 2                     2.056920              52.63158                   2
## 3                     3.685315              81.94444                   1
## 4                    10.627420              77.77778                   4
## 5                    20.226380              81.40590                   5
## 6                    45.166535              85.01984                   8

Elas também podem ser visualizadas em gráficos de séries temporais, como ilustram os exemplos a seguir:

9.1 Área das classes selecionadas

plot_teste$area_plot

9.2 Índice de agregação para as classes selecionadas

plot_teste$ai_plot

9.3 Gráficos customizáveis

As saídas gráficas do Bioma Stats são objetos oriundos do pacote gráfico ggplot2. Dessa forma, os gráficos podem ser customizados usando a sintaxe introduzida por Hadley Wickham no ggplot2. Por exemplo, abaixo usamos a sintaxe do ggplot2 para mudar a cor dos pontos e remover as grades de fundo.

# install.packages("ggplot2")
library(ggplot2)
plot_teste$ai_plot +
  geom_point(color = "red") +  # Troca a cor dos pontos para azul (pode trocar por outras cores)
  theme_minimal() +  # Aplica um tema minimalista no fundo
  theme(
    panel.grid = element_blank()  # Remove todas as grades
  )

10 Dicionário de classes e mapas reclassificados

O Bioma Stats contém um dicionário de classes, indicando seus códigos, níveis hierárquicos, nomes em Português e Inglês, e cores padronizadas pela norma brasileira do IBGE.

No exemplo a seguir, o dicionário é carregado a partir do comando dict_build e, com os códigos processados em biomastats_metrics, os nomes das classificações usadas são recuperados.

dicti <- biomastats:::dict_build()
dicti$class[dicti$code %in% plot_teste$classes]
##  [1] "Cotton"                "Other Perennial Crops" "Citrus"               
##  [4] "Coffee"                "Other Temporary Crops" "Rice"                 
##  [7] "Soybean"               "Perennial Crop"        "Sugar Cane"           
## [10] "Temporary Crop"        "Agriculture"

11 Mapas reclassificados

O Bioma Stats também apresenta recurso para visualizar os mapas após a reclassificação. A função reclass_map processa objetos exportados pela função biomastats_metrics e, para usá-la, o usuário precisa apenas informar o objeto exportado (obj = plot_teste, por exemplo) e o ano de interesse.

11.1 Mapa da Lagoa do Sino reclassificado em 1985

reclass_map(obj = plot_teste, year = 1985)

11.2 Mapa da Lagoa do Sino reclassificado em 1985

reclass_map(obj = plot_teste, year = 2020)

12 Contribua com o projeto

Se você deseja:

Entre em contato conosco por e-mail

13 Agradecimentos

A equipe do CeMECA - UFSCar Lagoa do Sino agradece ao Projeto MapBiomas pela disponibilização das coleções de uso e cobertura da terra. Os dados utilizados neste estudo são provenientes do MapBiomas – Coleção 7 da Série Anual de Mapas de Cobertura e Uso do Solo do Brasil, acessados em outubro de 2023 em https://mapbiomas.org.

A equipe do CeMECA - UFSCar Lagoa do Sino agradece ao Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq) pelo fomento 406540/2023 - 3.

Agradeço a equipe CeMECA pela colaboração no desenvolvimento e teste do Programa Bioma Stats: - Kaik Octaviano Fontana - Pré-processamento de dados - Cristiano Augusto de Souza - Funções de visualização - Paulo Guilherme Molin (ctb) - Consultoria em GIS - Mateus Faria Santa - Funções de visualização - Ruth Silva Souza - Funções de visualização - Victor de Camargo Gomes - Métricas de paisagem - Ana Beatriz Oliveira Prado - Aquisição de dados e sistemas de comunicação - Ronan Emmanuel de Paula Ferreira - Sistemas de comunicação - Gustavo Bilia Marques - Aquisição de dados e sistemas de comunicação - João Vitor Valença Stefanini - Sistemas de comunicação e visualização

Agradeço aos prof. pesquisadores, membros do Projeto Universal CNPq 406540, e que assessoram a equipe de desenvolvimento do Bioma Stats em diversas frentes:

14 Termos de uso

O código-fonte deste programa está protegido por direitos autorais e é regido pela Licença GNU Affero General Public License (GNU AGPL) versão 3.0 ou posterior. Qualquer redistribuição ou modificação do código-fonte deve ser realizada de acordo com os termos desta licença.

É crucial destacar que a GNU AGPL estabelece a necessidade de que os autores do software sejam devidamente reconhecidos em qualquer redistribuição ou modificação efetuada no código-fonte original. Tal premissa se constitui como um requisito imprescindível para assegurar o respeito aos direitos autorais dos criadores do software, bem como para manter a transparência e a credibilidade do software, objetivos estes que são de grande relevância para toda a comunidade de usuários e desenvolvedores de software livre. Consequentemente, é fundamental observar tal exigência ao utilizar o programa.

A documentação deste programa foi confeccionada com a ajuda do modelo de linguagem GPT-4, desenvolvido pela OpenAI. O GPT-4 é uma ferramenta de inteligência artificial avançada que utiliza técnicas de aprendizado profundo para gerar texto natural em diversos idiomas e áreas de conhecimento. Agradecemos à OpenAI pelo fornecimento desta ferramenta e reconhecemos a sua contribuição na elaboração desta documentação.

Ao utilizar este programa, você concorda em cumprir os termos e condições estabelecidos pela Licença GNU Affero General Public License (GNU AGPL) versão 3.0 ou posterior. Para obter mais informações sobre a licença, consulte o arquivo “LICENSE” que acompanha este programa ou acesse o seguinte link: https://www.gnu.org/licenses/agpl-3.0.html.