1 Apresentação

De modo sintético, os antromas (biomas antropogênicos) representam subdivisões dos biomas terrestres, as quais são baseadas na interpolação de dados demográficos (ocupações humanas) e nas tipologias de uso e cobertura do solo. Por meio destas subdivisões diferentes propostas analíticas podem ser desenvolvidas, como o planejamento e ordenamento territorial. Entretanto, para atingirmos a construção do mapeamento dos antromas, tornou-se imprescindível analisar e mapear os dados separadamente, ou seja, operar dados demográficos e de uso e cobertura do solo individualmente, para posteriormente correlacioná-los.

O presente documento integra a Tese de Doutorado: REGIONALIZAÇÃO DOS ANTROMAS BRASILEIROS: Ferramenta para o Mapeamento em Linguagem R®. Neste capítulo, realizamos a diferentes operações em R com os dados de uso e cobertura do solo, o quais são produzidos bienalmente pelo Instituto Brasileiro de Geografia e Estatística (IBGE). Nele, retratamos desde a captação de dados, demonstrando como e onde estes dados foram baixados e tratados em nossas análises. Sequencialmente, realizamos a mineração, a junção e a plotagem dos dados, de modo a reconhecer características estruturais e espaciais destes dados nacionais. Após estas etapas, nos dedicamos à construção dos mapeamentos estático e interativo dos antromas de uso e cobertura do solo brasileiros, utilizando os próprios polígonos do conjunto de dados analisados para o primeiro e o Open Street Maps (OSM) do segundo como pano de fundo. Finalizados (os mapeamentos), nos dedicamos aos estudos de validação e incerteza do mapeamento produzido, de maneira a aferir a qualidade da informação geoespacial produzida nesta etapa de pesquisa.

Convidamos você a conhecer nosso trabalho e percorrer cada uma das etapas analíticas deste trabalho. Você também pode conhecer este trabalho através do GitHub, acessando nosso repositório de códigos: https://github.com/maximilianogobbo/brazilian-anthromes. E para conhecer mais sobre a linha de pesquisa do Grupo de Trabalho EcoMetrologia acesse nosso linktree: https://linktr.ee/maximiliano.gobbo.

2 Introdução

O levantamento de atributos associados a um conjunto de dados geoespaciais é fundamental para identificar pontos para correlação entre diferentes tipologias de informações geográficas, como apresentou Machlis (2017). O reconhecimento destes atributos permite que informações sociais e ambientais possam ser conectadas dentro da programação para o mapeamento, gerando cartografias para as diferentes áreas do conhecimento, conforme discorreu Anderson (2021). Nesta ótica, Moreno e Basile (2021) mostraram que por meio desta integração é possível, no universo da linguagem R®, produzir mapas com qualidade suficiente para compor análises territoriais, espaciais, socioambientais, ambientais e culturais, atendendo assim aos mais diversos campos científicos. Considerando isto, Gauthier (2021) e Ellis, Beusen e Goldewijk (2020) demonstraram, por meio do mapeamento global dos biomas antropogênicos (antromas), que a correlação entre diferentes tipologias de informações geoespaciais, além de possível, mostra-se como uma ferramenta moderna para os estudos socioecológicos. Estes autores realizaram o mapeamento apenas indicado utilizando linguagem computacional, linguagem R® propriamente dita, e foram capazes de gerar um mapeamento relevante em grade hexagonal de 96 km² do DGG.

Segundo as informações reportadas nas bases estruturais sobre os antromas, Ellis e Ramankutty (2008) apontaram que as informações demográficas, como densidade demográfica, e de uso e cobertura do solo, como tipologias de coberturas, são fundamentais para a identificação, classificação e mapeamento das diferentes classes antropogênicas. Tanto no produto cartográfico reportados por estes dois autores, como naquele publicizado por Gauthier (2021) e Ellis, Beusen e Goldewijk (2021), é perceptível que os recortes territoriais dos usos do solo (polígonos estruturados) representam uma informação significativa para a classificação e para o mapeamento dos antromas.

Assumindo os produtos cartográficos descritos acima e as indicações sobre atributos de bancos de dados, e intuindo futuramente produzir o mapeamento local dos antromas brasileiros, realizamos a análise exploratória de dados sobre uso e cobertura do solo. Estes dados são produzidos pelo Instituto Brasileiro de Geografia e Estatística (IBGE), seguindo a descrição técnica documentada no Manual Técnico de Uso e Cobertura da Terra (IBGE, 2013b).

Os objetivos centrais desta investigação foram identificar os atributos que compunham os dados disponibilizados pela instituição, reconhecer a espacialização da informação geográfica de uso e cobertura do solo e verificar se existiam atributos chave para correlação destes dados geoespaciais com os dados demográficos, analisados por nós em outro trabalho. Para atingir a estes objetivos, nos baseamos nas formatação lógica e analítica apresentadas nas obras de Lovelace et al. (2019) e Anderson (2021), onde são apresentadas as funções para a análise exploratória de dados no software R®.

3 Apresentação dos dados e diretrizes metodológicas

Os dados sobre uso e cobertura do solo utilizados nesta pesquisa foram aqueles disponibilizados na plataforma do Instituto Brasileiro de Geografia e Estatística (IBGE). Estes dados foram baixados e salvos na pasta de trabalho (diretório) associada a esta etapa da investigação. Ressaltamos que ele integram as políticas nacionais de dados abertos brasileiros (IBGE, 2019) e estão disponíveis para acesso remoto no link:

https://www.ibge.gov.br/geociencias/informacoes-ambientais/cobertura-e-uso-da-terra/15831-cobertura-e-uso-da-terra-do-brasil.html?=&t=o-que-e.

Destacamos que os dados de uso e cobertura do solo foram produzidos pelo IBGE seguindo as diretrizes metodológicas expressas no Manual Técnico de Uso e Cobertura da Terra (IBGE, 2013b). Previamente, realizamos a análise da qualidade dos dados disponibilizados pelo instituto brasileiro, verificando a conformidade deles ao uso pretendido para regionalização dos antromas brasileiros (GOBBO, 2020).

Dando prosseguimento a nossa pesquisa de Doutorado, investigamos nesta análise exploratória atributos que integravam o acervo de dados disponibilizados pelo IBGE. O objetivo central foi identificar quais atributos associados a estas informações geográficas que permitiriam a correlação entre os dados de uso e cobertura do solo e os dados demográficos, bem como a plotagem desta informações no mapeamento local dos antromas, como sugerem Guathier (2021) e Ellis, Beusen e Goldewijk (2020).

Para tanto, a análise exploratória de dados de uso e cobertura do solo foi realizada no software R®, alinhando nossa investigação àquelas realizadas pelos autores supracitados sobre os antromas. As diretrizes analíticas utilizadas na linguagem R® foram extraídas das obras de Lovelace et al. (2019) e Anderson (2021), onde os autores percorrem um caminho investigativo para identificar os atributos constituintes dos dados e a possibilidade de integração das informações a mapeamentos.

Como apresentamos anteriormente na Metodologia da Tese, nosso enfoque foi dado ao Estado de São Paulo, justificando-nos na representatividade da Unidade da Federação para economia, política e gestão nacional e pelos recortes territoriais e diversidade sociocultural das populações que compõe o mosaico paulista. Nesta perspectiva, foram baixados, do acervo digital do IBGE, os dados referentes à cobertura do solo de São Paulo para o intervalo entre os anos de 2010 e 2018.

Seguindo as recomendações metodológicas de Gauthier (2021) para classificação e mapeamento dos antromas, o qual indica que os dados de uso e cobertura e censitários devem possuir mesma datação para otimizar a correlação e reduzir as distorções das informações, optamos por utilizar os dados raster referentes ao ano de 2010, último ano em que os dados da operação censitária já se encontram totalmente disponibilizados na plataforma do instituto (IBGE, 2013a).

4 Da Análise Exploratória ao Mapeamento dos Usos e Coberturas do Solo associados aos Antromas Paulistas

4.1 Análise Exploratória

Para apresentar e confirmar o diretório de trabalho da análise exploratória de dados sobre uso e cobertura do solo, utilizamos a função getwd (_), a qual informa o nome da pasta em que os arquivos a serem analisados foram salvos, como demonstramos na sequência.

getwd()
## [1] "C:/ARQUIVOS COMPUTADOR/DOUTORADO/DOUTORADO TESE/03 DADOS GEOESPACIAIS/03 USO E COBERTURA DO SOLO"

Destacamos que estes dados brasileiros são do tipo raster e, portanto, seguem uma lógica de carregamento diferente dos dados vetoriais no software R®. Deste modo, empregamos a função shapefile () para carregar estes dados no programa. Entre os parênteses da função, especificamos o nome do arquivo no diretório, cujo nome era Cobertura_uso_da_terra_SP. Ressaltamos que este nome refletia um conjunto de arquivos disponibilizados pelo IBGE com diferentes extensões, os quais deveriam constar na pasta de trabalho para que a função shapefile () pudesse interpretá-los conjuntamente.

O Script 12 expressa na primeira linha como foi realizado o carregamento dos dados. Após o carregamento do conjunto de dados raster, criamos um objeto (dataframe) a partir dele, utilizando para isto o indicador (seta) precedido do nome dado de coberturasp, conforme demonstramos na segunda linha do código. Seguidamente, confirmamos a criação do objeto e sua composição utilizando somente o nome do conjunto coberturasp (destacado no script).

Script 12: Carregamento do arquivo coberturasp.shp.

# Carregamento do Arquivo
coberturasp <- st_read("coberturasp.shp")
## Reading layer `coberturasp' from data source 
##   `C:\ARQUIVOS COMPUTADOR\DOUTORADO\DOUTORADO TESE\03 DADOS GEOESPACIAIS\03 USO E COBERTURA DO SOLO\coberturasp.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 248217 features and 8 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -53.10706 ymin: -25.30115 xmax: -44.16211 ymax: -19.78065
## Geodetic CRS:  SIRGAS 2000

Fonte: os autores (2023). Legenda: script descrevendo o carregamento dos dados de “coberturasp.shp” por meio da função st_read() e a criação do dataframe coberturasp. No script são apresentadas diferentes informações que constituem o arquivo e os dados carregados.

Os resultados apresentados no Script 12 trouxeram informações relevantes sobre a composição do conjunto coberturasp. Primeiramente, observamos que a classe (do inglês, class) do objeto é do tipo dataframe de polígonos espaciais, ou seja, os dados descreviam um conjunto de polígonos que representavam as áreas que compunham o mosaico territorial do Estado de São Paulo. Adicionalmente, verificamos que o objeto era composto por 248.217 linhas (do inglês, features) e 8 variáveis (do inglês, variables). Estas variáveis possuíam os seguintes nomes (do inglês, names): INDICE_GRE, USO2000, USO2010, USO2012, USO2014, USO2016, USO2018 e ID_GRE.

Em valores mínimos e máximos (respectivamente, min values e max values) foram apresentados os valores mínimos e máximos para cada uma das variáveis que integravam o conjunto de dados. Por outro lado, em extend, nos deparamos com a indicação da extensão mínima e máxima dos valores de X e Y que estruturavam o conjunto de polígonos, ou seja, os valores dos pares ordenados para plotagem dos dados. Complementarmente, por meio do CRS indicado no Script 12, reconhecemos que existia um sistema de projeção e posicionamento geográfico atrelado à estrutura do conjunto de dados.

De modo a ampliar nossa percepção sobre o conjunto coberturasp e confirmar os dizeres acima, utilizamos a função summary () para identificar características básicas do dataframe poligonal. Posteriormente, empregamos a função class () na análise para ratificar a classe que o conjunto integra. Sequencialmente, utilizamos a função names () para identificar quais eram os nomes expressos na primeira linha do dataframe, ou seja, os atributos que o integravam. Para confirmar o número de linhas que integram o dataframe, aplicamos a função dim (). As funções e seus resultados foram reportados no Script 13 adiante.

Script 13: Análise preliminar de coberturasp

class(coberturasp)
## [1] "sf"         "data.frame"
names(coberturasp)
## [1] "INDICE_GRE" "USO2000"    "USO2010"    "USO2012"    "USO2014"   
## [6] "USO2016"    "USO2018"    "ID_GRE"     "geometry"
dim(coberturasp)
## [1] 248217      9
summary(coberturasp)
##   INDICE_GRE           USO2000          USO2010          USO2012      
##  Length:248217      Min.   : 1.000   Min.   : 1.000   Min.   : 1.000  
##  Class :character   1st Qu.: 2.000   1st Qu.: 2.000   1st Qu.: 2.000  
##  Mode  :character   Median : 3.000   Median : 3.000   Median : 3.000  
##                     Mean   : 3.848   Mean   : 3.697   Mean   : 3.643  
##                     3rd Qu.: 4.000   3rd Qu.: 4.000   3rd Qu.: 4.000  
##                     Max.   :13.000   Max.   :13.000   Max.   :13.000  
##     USO2014          USO2016          USO2018           ID_GRE         
##  Min.   : 1.000   Min.   : 1.000   Min.   : 1.000   Min.   :1.124e+13  
##  1st Qu.: 2.000   1st Qu.: 2.000   1st Qu.: 2.000   1st Qu.:1.124e+13  
##  Median : 3.000   Median : 3.000   Median : 3.000   Median :1.124e+13  
##  Mean   : 3.624   Mean   : 3.605   Mean   : 3.597   Mean   :1.124e+13  
##  3rd Qu.: 4.000   3rd Qu.: 4.000   3rd Qu.: 4.000   3rd Qu.:1.124e+13  
##  Max.   :13.000   Max.   :13.000   Max.   :13.000   Max.   :1.124e+13  
##           geometry     
##  POLYGON      :248217  
##  epsg:4674    :     0  
##  +proj=long...:     0  
##                        
##                        
## 

Fonte: os autores (2023). Legenda: script com a análise preliminar de coberturasp, onde foram empregadas as funções class(), names(), dim() e summary().

Conforme os resultados apresentados acima (Script 13), ratificamos através da função class () que o objeto pertencia a classe de dataframes de polígonos espaciais. Na estrutura do objeto, verificamos ainda que o objeto possuía integrado a si um sistema de coordenadas geográficas (CRS), o qual foi representado no Script pelos valores mínimos e máximos de X e Y e pela expressão “proj4string”. Esta expressão revelou a capacidade de projeção geográfica dos dados graças às coordenadas indicadas na estrutura do objeto (pares ordenados XY).

Para além, comprovamos que coberturasp possuía a característica espacial integrada à sua estrutura, revelada pela expressão “sp”, que provém do termo inglês spatial (espacial). Outro aspecto importante foi a indicação de “attr”, expressão que demonstrou que o objeto era composto por um conjunto de atributos (attr), os quais estavam armazenados no formato de pacote (do inglês, package).

Ademais, os resultados provenientes da função names () reafirmaram os nomes dos atributos do conjunto coberturasp, bem como sua distribuição em 8 colunas. Naquilo que resguardava à função dim (), os resultados comprovaram que o objeto era constituído por 248.217 linhas e 8 colunas. Verificamos assim que cada uma das linhas se referia a diferentes estruturas poligonais do território paulista, ou seja, são retratavam as localidades e as tipologias de uso e cobertura que compõem o mosaico do Estado de São Paulo.

Por outro lado, considerando os resultados obtidos pela função names () e a tipologia dos resultados para cada um dos atributos, indicados pela função summary (), reconhecemos que os atributos “USO2000”, “USO2010”, “USO2012”, “USO2014”, “USO2016” e “USO2018” retratavam os diferentes anos do monitoramento de uso e cobertura da Terra, operação realizada pelo IBGE bienalmente (IBGE, 2017; 2018; 2020).

Nesta perspectiva, como nos interessavam o ano de 2010 para estruturação da árvore de decisão para classificação dos antromas brasileiros, filtramos os dados referentes ao ano na função plot (), utilizando para tal o nome do atributo “USO2010” entre os colchetes [] na função. A Figura 12 reporta como foram plotados os dados de coberturasp para o ano de 2010.

Figura 12: Plotagem dos dados de coberturasp para o ano de 2010.

Fonte: os autores (2023). Legenda: Figura produzida através da plotagem dos dados de coberturasp, utilizando a função plot (_) para produção e os colchetes [] para filtrar os dados referentes ao ano de 2010.

A Figura 12, produzida pela plotagem do conjunto de dados, demonstrou que a estrutura poligonal do Estado de São Paulo estava visivelmente estruturada dentro do dataframe coberturasp. Porém, o preenchimento completo da área territorial não permitiu a diferenciação dos usos e coberturas do solo que compunham o mosaico. Entretanto, pelos resultados obtidos anteriormente, pudemos identificar que existem números na coluna USO2010 e, conforme sugerido pelos metadados do IBGE, sabemos que estes números se referem a diferentes tipologias de uso e cobertura do solo. Este fato pode ser demonstrado através da aplicação da função head(), cuja aplicação versa sobre a demonstração das primeiras linhas do conjunto. O código a seguir ilustra o emprego da função.

Script: Aplicação da função head() em coberturasp.

head(coberturasp)
## Simple feature collection with 6 features and 8 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -49.89744 ymin: -23.05592 xmax: -49.88686 ymax: -23.00143
## Geodetic CRS:  SIRGAS 2000
##      INDICE_GRE USO2000 USO2010 USO2012 USO2014 USO2016 USO2018       ID_GRE
## 1 1KME5422N8762       4       4       4       4       4       4 1.123535e+13
## 2 1KME5422N8763       2       2       2       2       2       2 1.123535e+13
## 3 1KME5422N8764       2       2       2       2       2       2 1.123535e+13
## 4 1KME5422N8765       2       2       2       2       2       2 1.123535e+13
## 5 1KME5422N8766       4       4       4       4       4       4 1.123535e+13
## 6 1KME5422N8767       4       4       4       4       4       4 1.123535e+13
##                         geometry
## 1 POLYGON ((-49.88686 -23.055...
## 2 POLYGON ((-49.88701 -23.046...
## 3 POLYGON ((-49.88715 -23.037...
## 4 POLYGON ((-49.88729 -23.028...
## 5 POLYGON ((-49.88744 -23.019...
## 6 POLYGON ((-49.88758 -23.010...

Fonte: os autores (2024). Legenda: demonstração da função head() para constatar os números nas primeiras seis linhas do conjunto coberturasp.

Conforme visualiza-se nos resultados apresentados pela função head(), notamos que na coluna USO2010 existem diferentes números para cada linha do conjunto. Sinergicamente, notamos que na figura gerada anteriormente é apresentada uma escala que vai de 0 a 14, a qual revela quais números encontram-se presentes neste conjunto. Diante destas constatações, avançamos com nossas análises para a mineração e manipulação dos dados.

4.2 Mineração e Manipulação dos Dados

Considerando nosso foco nos dados de 2010, tendo em vista os dados demográficos anteriormente analisados, nossa mineração se iniciou isolando as colunas do conjunto coberturasp que seriam úteis às análises posteriores. Assim sendo, utilizando a função select(), criamos um novo conjunto com as colunas USO2010 e geometry, que recebeu o nome de cobertura_sp_2010, como ilustra o código a seguir.

Script: criação do conjunto cobertura_sp_2010.

cobertura_sp_2010 <- coberturasp[c("USO2010", "geometry")]
cobertura_sp_2010
## Simple feature collection with 248217 features and 1 field
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -53.10706 ymin: -25.30115 xmax: -44.16211 ymax: -19.78065
## Geodetic CRS:  SIRGAS 2000
## First 10 features:
##    USO2010                       geometry
## 1        4 POLYGON ((-49.88686 -23.055...
## 2        2 POLYGON ((-49.88701 -23.046...
## 3        2 POLYGON ((-49.88715 -23.037...
## 4        2 POLYGON ((-49.88729 -23.028...
## 5        4 POLYGON ((-49.88744 -23.019...
## 6        4 POLYGON ((-49.88758 -23.010...
## 7        4 POLYGON ((-49.88772 -23.001...
## 8        4 POLYGON ((-49.88787 -22.992...
## 9        4 POLYGON ((-49.88801 -22.983...
## 10       4 POLYGON ((-49.93661 -22.983...

Fonte: os autores (2024). Legenda: aplicação da função select() para criar um novo conjunto de dados referente ao ano de 2010. No código foram isoladas as colunas INDICE_GRE, USO2010, ID_GRE e geometry do conjunto cobertura_sp.

Conforme verifica-se nos resultados, o conjunto cobertura_sp_2010 segue a mesma estrutura de cobertura_sp, todavia somente com os dados relevantes para as análises posteriores referentes ao ano de 2010. Com base nisso, realizamos uma sondagem na coluna USO2010 para confirmar o apresentado anteriormente sobre os valores presentes nessa coluna. Para realizar tal sondagem, empregamos a função unique(), a qual reporta os valores, no caso numéricos, presentes na coluna. A seguir tem-se a apresentação do código e dos resultados.

Script: aplicação da função unique() em cobertura_sp_2010.

unique(cobertura_sp_2010$USO2010)
##  [1]  4  2  1  3 12  5  6 11 10 13  9

Fonte: os autores (2024). Legenda: aplicação da função unique() no conjunto de dados coberutra_sp_2010 na coluna USO2010 para identificar os valores numéricos presentes na coluna.

De acordo com os resultados reportados pela função unique(), notamos os identificadores numéricos: 1,2,3,4,5,6,9,10,11,12 e 13. Chamamos de identificadores numéricos porque, segundo a documentação técnica do IBGE, estes valores são atribuídos a diferentes usos e coberturas do solo. Considerando isto, devemos trazer uma síntese, com base no documento, dos respectivos usos e coberturas para podermos avançar nas nossas análises. Nos metadados disponibilizados pelo IBGE, encontramos o arquivo coberturasp2018.xlsx, no qual constam os respectivos usos e coberturas e uma breve descrição para cada um dos números acima identificados. Estas informações são reportadas na íntegra a seguir.

1.Área artificial: Áreas onde predominam superfícies antrópicas não-agrícolas. São aquelas estruturadas por edificações e sistema viário, nas quais estão incluídas as metrópoles, cidades, vilas, as aldeias indígenas e comunidades quilombolas, áreas ocupadas por complexos industriais e comerciais e edificações que podem, em alguns casos, estar situadas em áreas peri-urbanas. Também pertencem a essa classe as áreas onde ocorrem a exploração ou extração de substâncias minerais, por meio de lavra ou garimpo.

  1. Área Agrícola: Área caracterizada por lavouras temporárias, semi-perenes e permanentes, irrigadas ou não, sendo a terra utilizada para a produção de alimentos, fibras, combustíveis e outras matérias-primas. Segue os parâmetros adotados nas pesquisas agrícolas do IBGE e inclui todas as áreas cultivadas, inclusive as que estão em pousio ou localizadas em terrenos alagáveis. Pode ser representada por zonas agrícolas heterogêneas ou extensas áreas de plantations. Inclui os tanques de aquicultura.

  2. Pastagem com Manejo: Áreas destinadas ao pastoreio do gado e outros animais, com vegetação herbácea cultivada (braquiária, azevém, etc) ou vegetação campestre (natural), ambas apresentando interferências antrópicas de alta intensidade. Estas interferências podem incluir o plantio; a limpeza da terra (destocamento e despedramento); eliminação de ervas daninhas de forma mecânica ou química (aplicação de herbicidas); gradagem; calagem; adubação; entre outras que descaracterizem a cobertura natural.

  3. Mosaico de Ocupações em Área Florestal: Área caracterizada por ocupação mista de área agrícola, pastagem e/ou silvicultura associada ou não a remanescentes florestais, na qual não é possível uma individualização de seus componentes. Inclui também áreas com perturbações naturais e antrópicas, mecânicas ou não mecânicas, que dificultem a caracterização da área.

  4. Silvicultura: Área caracterizada por plantios florestais de espécies exóticas ou nativas como monoculturas. Segue os parâmetros adotados nas pesquisas de extração vegetal e silvicultura do IBGE.

  5. Vegetação Florestal: Área ocupada por florestas. Consideram-se florestais as formações arbóreas com porte superior a 5 metros de altura, incluindo-se aí as áreas de Floresta Ombrófila Densa, de Floresta Ombrófila Aberta, de Floresta Estacional, além da Floresta Ombrófila Mista. Inclui outras feições em razão de seu porte superior a 5 m de altura, como a Savana Florestada, Campinarana Florestada, Savana-Estépica Florestada, os Manguezais e os Buritizais, conforme o Manual Técnico de Uso da Terra (IBGE, 2013).

  6. Área Úmida: Área caracterizada por vegetação natural herbácea ou arbustiva (cobertura de 10% ou mais), permanentemente ou periodicamente inundada por água doce ou salobra. Inclui os terrenos de charcos, pântanos, campos úmidos, estuários, entre outros. O período de inundação deve ser de no mínimo 2 meses por ano. Pode ocorrer vegetação arbustiva ou arbórea, desde que estas ocupem área inferior a 10% do total.

  7. Vegetação Campestre: Área caracterizada por formações campestres. Entende-se como campestres as diferentes categorias de vegetação fisionomicamente bem diversas da florestal, ou seja, aquelas que se caracterizam por um estrato predominantemente arbustivo, esparsamente distribuído sobre um estrato gramíneo-lenhoso. Incluem-se nessa categoria as Savanas, Estepes, Savanas-Estépicas, Formações Pioneiras e Refúgios Ecológicos. Encontram-se disseminadas por diferentes regiões fitogeográficas, compreendendo diferentes tipologias primárias: estepes planaltinas, campos rupestres das serras costeiras e campos hidroarenosos litorâneos (restinga), conforme o Manual Técnico de Uso da Terra (IBGE, 2013). Essas áreas podem estar sujeitas a pastoreio e a outras interferências antrópicas de baixa intensidade como as áreas de pastagens não manejadas do Rio Grande do Sul e do Pantanal.

  8. Mosaico de Ocupações em Área Campestre: Área caracterizada por ocupação mista de área agrícola, pastagem e/ou silvicultura associada ou não a remanescentes campestres, na qual não é possível uma individualização de seus componentes. Inclui também áreas com perturbações naturais e antrópicas, mecânicas ou não mecânicas, que dificultem a caracterização da área.

  9. Corpo d’água Continental:Inclui todas as águas interiores, como rios, riachos, canais e outros corpos d’água lineares. Também engloba corpos d’água naturalmente fechados (lagos naturais) e reservatórios artificiais (represamentos artificiais de água construídos para irrigação, controle de enchentes, fornecimento de água e geração de energia elétrica). Não inclui os tanques de aquicultura.

13: Corpo d’água Costeiro: Inclui as águas inseridas nas 12 milhas náuticas, conforme Lei nº 8.617, de 4 de janeiro de 1993.

Com base neste extrato do documento IBGE, retomamos nossa tabela de classes de antromas para estabelecer um paralelo entre as categorias de uso e cobertura do solo e as classes antropogêncas. A tabela a seguir representa as categorias e as cores referentes a cada antroma a ser classificado.

Tabela: Categorias e cores dos antromas.

##                                                categorias   cores
## 1  Urbano (centro urbano e aglomerado populacional denso) #FF0000
## 2                       Urbanos mistos (periferia urbana) #FF4747
## 3                                         Vilas agrícolas #ED833B
## 4                                       Vilas pecuaristas #FFD966
## 5                                Comunidades Tradicionais #9CC2E5
## 6                                       Vilas mineradoras #8C8C8C
## 7                                        Terras agrícolas #F4B488
## 8                                        Terras pecuárias #FFEEB7
## 9                                     Terras de mineração #B6B6B6
## 10                                           Silvicultura #E2EFD9
## 11                    Áreas florestais de uso sustentável #A8D08D
## 12                     Áreas de preservação e conservação #538135

Fonte: os autores (2024). Legenda: Categorias dos antromas e seus respectivos códigos de cores (RGB).

Considerando esta tabela e as classes anteriormente apresentadas para os usos e coberturas do solo, devemos fazer alguns apontamentos para auxiliar na compreensão das próximas etapas analíticas. Estes apontamentos resguardam aos ajustes realizados para estabelecer o parelelo entre as classes de antromas e as classes de uso e cobertura do solo presentes nos dados de cobertura_sp_2010. Enumeraremos a seguir os ajustes.

  1. A classe de área artificial agrega diferentes tipologias de aglomerados populacionais, o que inviabiliza sua distinção em um primeiro momento. Portanto, estabelecemos para esta classe a nomenclatura e a cor referente a categoria antropogênica de urbanos mistos, considerando a amplitude das classes de antromas que estes dados podem aglomerar.

  2. Para a tipologia área agrícola (uso e cobertura) estabelecemos a nomenclatura e a coloração de terras agrícolas, considerando a descrição fornecida pelo IBGE para esta categoria de uso e cobertura do solo. O mesmo foi aplicado a categoria de uso e cobertura referente a pastagem com manejo, cujo referencial para os antromas foram terras pecuárias. Ademais, sendo silvicultura uma categoria comum entre as classes de uso e cobertura e dos antromas, a mesma coloração foi estabelecida.

  3. Para as categorias de uso e cobertura do solo vegetação campestre, área úmida e vegetação florestal estabelecemos a nomenclatura e a coloração de áreas de preservação e conservação, fundindo-as em um único conjunto. Nossa escolha foi realizada com base na descrição dos usos e coberturas que estas áreas descrevem. Segundo o IBGE, as três tipologias de uso e cobertura referem-se a áreas naturais não atropizadas. Notoriamente, desconsideramos as diferenças fitofisiológicas e biogeográficas associadas às três tipologias, entretanto, isto não inviabiliza a análise ulterior e pode ser considerado como uma limitação das nossas análises.

  4. A categoria de uso e cobertura mosaico de ocupações em área florestal foi compreendida por nós como áreas florestais de uso sustentável nas categorias de antromas. Portanto, estabelecemos esta nomenclatura e coloração para tais áreas. Por outro lado, consideramos a categoria mosaico de ocupações em áreas campestres como sinérgicas às vilas agrícolas/pecuárias; assim, estabelecemos a nomenclatura e a coloração de vilas agricolas (categoria de antroma) para esta categoria de uso e cobertura. Ressalva-se que, assim como nas áreas artificiais, não era possível a distinção entre agrícola e pecuária; portanto, a distinção foi feita a posteriori com a integração dos dados demográficos aos de uso e coberutra do solo

  5. Para as categorias corpo d’água continental e corpo d’água costeiro não haviam categorias representativas nos antromas. Para não remover este conjunto de dados das nossas análises, estabelecemos a coloração “#000066” (azul escuro) para incluir os dados nas análises posteriores e definimos a tipologia como aguas. O mantenimento deste conjunto visava retratar a relevância dos cursos d’água para manutenção e abastecimento das comunidades, bem como para as políticas de ordenamento territorial.

Após estes dizeres, estruturamos, a partir da função if/else(), o código para que os dados sejam interpretados como supramencionado. Portanto, determinamos em cobertura_sp_2010 o que cada um dos valores na coluna USO2010 representa como tipologia de uso e cobertura do solo e a cor definida para cada uma das tipologias. O código a seguir ilustra o procedimento para a inserção de duas novas colunas no conjunto cobertura_sp_2010: tipologia e cor.

Script: Determinação do uso e cobertura do solo e da coloração da tipologia com base no atributo numérico da coluna USO2010.

# Adicionar coluna de tipologia de uso e cobertura com if/else
cobertura_sp_2010$tipologia <- ifelse(cobertura_sp_2010$USO2010 == 1, "urbanos mistos",
ifelse(cobertura_sp_2010$USO2010 == 2, "terras agrícolas",
ifelse(cobertura_sp_2010$USO2010 == 3, "terras pecuárias",
ifelse(cobertura_sp_2010$USO2010 == 4, "áreas florestais de uso sustentável",
ifelse(cobertura_sp_2010$USO2010 == 5, "silvicultura",
ifelse(cobertura_sp_2010$USO2010 == 6, "áreas de preservação e conservação",
ifelse(cobertura_sp_2010$USO2010 == 9, "áreas de preservação e conservação",
ifelse(cobertura_sp_2010$USO2010 == 10, "áreas de preservação e conservação",
ifelse(cobertura_sp_2010$USO2010 == 11, "vilas agricolas",
ifelse(cobertura_sp_2010$USO2010 == 12, "aguas",
ifelse(cobertura_sp_2010$USO2010 == 13, "aguas", NA)))))))))))
# Adicionar coluna de cor especificada com if/else
cobertura_sp_2010$cor <- ifelse(cobertura_sp_2010$USO2010 == 1, "#FF4747",
ifelse(cobertura_sp_2010$USO2010 == 2, "#F4B488",
ifelse(cobertura_sp_2010$USO2010 == 3, "#FFEEB7",
ifelse(cobertura_sp_2010$USO2010 == 4, "#A8D08D",
ifelse(cobertura_sp_2010$USO2010 == 5, "#E2EFD9",
ifelse(cobertura_sp_2010$USO2010 == 6, "#538135",
ifelse(cobertura_sp_2010$USO2010 == 9, "#538135",
ifelse(cobertura_sp_2010$USO2010 == 10, "#538135",
ifelse(cobertura_sp_2010$USO2010 == 11, "#ED833B",
ifelse(cobertura_sp_2010$USO2010 == 12, "#000066",
ifelse(cobertura_sp_2010$USO2010 == 13, "#000066", NA)))))))))))

Fonte: os autores (2024). Legenda: aplicação da função if/else() para a construção das colunas tipologia (uso e cobertura do solo) e cor, utilizando como fator o atributo numérico da coluna USO2010 de cobertura_sp_2010.

Após a inserção destas duas informações no conjunto cobertura_sp_2010, realizamos a fragmentação dele para os diferentes grupos de uso e cobertura do solo representados pelos códigos: 1,2,3,4,5,6,9,10,11,12 e 13. O script a seguir ilustra o processo para a construção das classes dos antromas com base no atributo uso e cobertura do solo.

Script: fragmentação do conjunto cobertura_sp_2010 em grupos de uso e cobertura do solo.

# Área artificial (1)
ucs_urbanos_mistos = cobertura_sp_2010 %>% filter(USO2010 == 1)

# Área agrícola (2)
ucs_terras_agricolas = cobertura_sp_2010 %>% filter(USO2010==2)

# Pastagem com manejo (3)
ucs_terras_pecuarias = cobertura_sp_2010 %>% filter(USO2010 == 3)

# Mosaico de ocupações em área florestal (4)
ucs_floresta_uso_sustentavel = cobertura_sp_2010 %>% filter(USO2010 == 4)

# Silvicultura (5)
ucs_silvicultura = cobertura_sp_2010 %>% filter(USO2010 == 5)

# Matas - junção de Vegetação Florestal (6), Área Úmida (9) e Vegetação Campestre (10)
ucs_conservacao_preservacao = cobertura_sp_2010 %>% filter(USO2010 %in% c(6,9,10))

# Mosaico de ocupações em áreas campestres (11)
ucs_vilas_agricolas = cobertura_sp_2010 %>% filter(USO2010 == 11)

# Corpos d'água continental (12) e costeiro (13)
ucs_aguas = cobertura_sp_2010 %>% filter(USO2010 %in% c(12,13))

Fonte: os autores (2024). Legenda: criação das diferentes classes de antromas com base no atributo uso e cobertura do solo (provenientes de cobertura_sp_2010).

No script acima, realizamos a fragmentação do conjunto **cobertura_sp_2010* utilizando os códigos para as diferentes tipologias de uso e cobertura do solo. Destacamos que as áreas foram agregadas em conformidade ao postulado anteriormente. Proveniente desta fragmentação, também entendida como mineração dos dados, criamos os seguintes conjuntos (8 no total):

  1. ucs_urbanos_mistos
  2. ucs_vilas_agricolas
  3. ucs_terras_agricolas
  4. ucs_terras_pecuarias
  5. ucs_silvicultura
  6. ucs_floresta_uso_sustentavel
  7. ucs_conservacao_preservacao
  8. ucs_aguas

Estes conjuntos representam as tipologias de uso e cobertura do solo presentes no Estado de São Paulo e também os antromas classificados com base nos usos e coberturas presentes na Unidade da Federação. Ressalva-se que, como reportamos anteriormente, algumas tipologias agregam dados de diferentes contextos territoriais. A exemplo toma-se a área artificial a qual aglomera áreas como cidades, vilas, aldeias indígenas e comunidades quilombolas. Nesta perspectiva, tivemos um alerta para as próximas análises, tendo em vista que estas áreas descrevem diferentes antromas povoados. Assim, nesta etapa as consideramos somente como áreas artificiais, tratando-as conjuntamente. Todavia, na junção dos dados de uso e cobertura do solo com os dados populacionais, a distinção da tipologia do bioma antropogênico foi referida com base nos dados dos antromas povoados, tendo em vista a melhor diferenciação frente as ocupações e usos dos biomas antropogênicos.

4.3 Plotagem dos Dados

Realizada a mineração e a manipulação dos dados, criando os conjuntos dos antromas de uso e cobertura do solo presentes no Estado de São Paulo, passamos para visualização destes conjuntos individualmente. No código a seguir, estabelecemos, através de st_geometry() o mecanismo para operação da função plot(), indicando que esta utilizasse a geometria dos polígonos de cada tipologia de uso e cobertura como forma para a plotagem. Além disso, usamos o fator col para que a função plot() atribuisse aos polígonos as respectivas cores destinadas à tipologia antropogênica. Ademais, removemos as bordas dos polígonos, permitindo somente a plotagem da forma colorida (border = NA). Adiante estão representados os diferentes antromas com base nos usos e coberturas do solo.

Figura: estrutura codificada para produção das imagens referentes às tipologias de antromas com base no atributo uso e cobertura do solo.

# Plotar Urbanos Mistos (1)
plot(st_geometry(ucs_urbanos_mistos), col = ucs_urbanos_mistos$cor, main = "Urbanos Mistos", border = NA)

# Plotar Terras Agrícolas (2)
plot(st_geometry(ucs_terras_agricolas), col = ucs_terras_agricolas$cor, main = "Terras Agrícolas", border = NA)

# Plotar Terras Pecuárias
plot(st_geometry(ucs_terras_pecuarias), col = ucs_terras_pecuarias$cor, main = "Terras Pecuárias", border = NA)

# Plotar Florestas de Uso Sustentável (4)
plot(st_geometry(ucs_floresta_uso_sustentavel), col = ucs_floresta_uso_sustentavel$cor, main = "Áreas Florestais de Uso Sustentável", border = NA)

# Plotar Silvicultura (5)
plot(st_geometry(ucs_silvicultura), col = ucs_silvicultura$cor, main = "Silvicultura", border = NA)

# Plotar Áreas de Conservação e Preservação (6)
plot(st_geometry(ucs_conservacao_preservacao), col = ucs_conservacao_preservacao$cor, main = "Áreas de Conservação e Preservação", border = NA)

# Plotar Vilas Agrícolas (11)
plot(st_geometry(ucs_vilas_agricolas), col = ucs_vilas_agricolas$cor, main = "Vilas Agrícolas", border = NA)

# Plotar Corpos d'água 
plot(st_geometry(ucs_aguas), col = ucs_aguas$cor, main = "Corpos d'água", border = NA)

Fonte: os autores (2024). Legenda: antromas paulistas isolados com base na tipologia de uso e cobertura do solo.

As imagens geradas pela plotagem dos conjuntos revelaram como os antromas paulistas estão distribuídos dentro da Unidade da Federação isoladamente. Na figura área artificial observamos a distribuição dos aglomerados populacionais, principalmente aqueles associados a municípios, vilas, distritos e comunidades tradicionais. Vale destacar que nas imagens mosaico de ocupações em área florestal e mosaico de ocupações em áreas campestres também há presença de população, todavia, aqui foram representadas de forma genérica. Conforme pontuamos anteriormente, na junção dos antromas de uso e cobertura do solo com os antromas povoados, poderemos distinguir onde as populações estão inseridas de fato nesses dois conjuntos.

No que resguarda as imagens área agrícola e pastagem com manejo temos representadas as áreas agrícolas e áreas pecuárias isoladamente. Aqui temos a referência às áreas propriamente de plantio e criação, não havendo população diretamente associada. Do mesmo modo matas nativas, conservação e preservação representam antromas onde não há presença humana e atividade humana associada. Diferentemente, a imagem silvicultura representa áreas destinadas à produção de espécies arbóreas ou áreas de uso, mas são também áreas onde a presença humana é pouco representativa.

Finalmente, a imagem corpos d’água representam a magnitude dos rios, lagos, lagoas e cursos d’água, inclusive costeiros, que percorrem o Estado. Apesar de não representar propriamente um antroma, consideramos a relevância dos rios tanto para manutenção da qualidade de vida e ambiental, bem como por sua significativa importância para o planejamento territorial, conforme preconiza as normalizações e regulamentações nacionais.

Dando continuidade às nossas análises, passamos à junção destes conjuntos para a plotagem conjunta dos antromas de uso e cobertura do solo, de modo a obtermos um panorama geral da distribuição destes antromas no território paulista. Para tal, mostrou-se necessário criar uma legenda que representasse as tipologias e cores associdas a cada um dos antromas de uso e cobertura do solo. Para tanto, extraímos estas informações (tipologia e cor) do conjunto cobertura_sp_2010 para construção da legenda. O script a seguir ilustra o processo de criação da **legenda___antromas_ucs**.

Script: criação da legenda para os antromas de uso e cobertura do solo (legenda_antromas_ucs).

# Definir a legenda manualmente
legenda_antromas_ucs <- data.frame(tipologia = c("Urbanos Mistos", "Terras Agrícolas", "Terras Pecuárias", "Áreas Florestais de Uso Sustentável", "Silvicultura", "Áreas de Conservação e Preservação", "Vilas Agrícolas", "Corpos d'Água"),cor = c("#FF4747", "#F4B488", "#FFEEB7", "#A8D08D", "#E2EFD9", "#538135", "#ED833B", "#000066"))

Fonte: os autores (2024). Legenda: script demonstrando o mecanismo para criação da legenda a ser plotada na imagem dos antromas de uso e cobertura do solo.

Realizados estes procedimentos para construção da imagem dos antromas de uso e cobertura do solo, passamos propriamente à plotagem dos conjuntos conjuntamente. Através do operador add = TRUE colocamos em uma mesma plotagem os diferentes conjuntos dos antromas de uso e cobertura do solo. A imagem a seguir representa os antromas de uso e cobertura presentes no Estado de São Paulo.

Figura: Antromas de uso e cobertura do solo do Estado de São Paulo.

# Plotar todas as geometrias com suas cores correspondentes
plot(st_geometry(ucs_urbanos_mistos), col = ucs_urbanos_mistos$cor, border = NA, main = "Antromas de Uso e Cobertura do Solo")
plot(st_geometry(ucs_terras_agricolas), col = ucs_terras_agricolas$cor, border = NA, add = TRUE)
plot(st_geometry(ucs_terras_pecuarias), col = ucs_terras_pecuarias$cor, border = NA, add = TRUE)
plot(st_geometry(ucs_floresta_uso_sustentavel), col = ucs_floresta_uso_sustentavel$cor, border = NA, add = TRUE)
plot(st_geometry(ucs_silvicultura), col = ucs_silvicultura$cor, border = NA, add = TRUE)
plot(st_geometry(ucs_conservacao_preservacao), col = ucs_conservacao_preservacao$cor, border = NA, add = TRUE)
plot(st_geometry(ucs_vilas_agricolas), col = ucs_vilas_agricolas$cor, border = NA, add = TRUE)
plot(st_geometry(ucs_aguas), col = ucs_aguas$cor, border = NA, add = TRUE)

# Adicionar a legenda
legend("topright", legend = legenda_antromas_ucs$tipologia, fill = legenda_antromas_ucs$cor, title = "Tipologia", cex = 0.8)

Fonte: os autores (2024). Legenda: figura apresentando os diferentes antromas de uso e cobertura do solo presentes no Estado de São Paulo. A legenda presente na figura representa as cores associadas a cada uma das tipologias de antromas.

A Figura gerada representa os diferentes antromas de uso e cobertura do solo. Nesta plotagem temos as 8 classes elencadas anteriormente coloridas conforme estipulado para as classes. Ressalva-se que a plotagem, apesar de considerar o sistema de referenciamento geográfico, não representa o mapeamento no plano de coordenadas, sendo um extrato ordenado dos dados. Nas próximas etapas realizaremos a junção dos dados para plotagem através da função ggplot(), onde o plano cartográfico é visível.

4.4 Mapeamento Estático dos Antromas de Uso e Cobertura em São Paulo

Dando continuidade às análises, realizamos nesta etapa a construção do mapeamento estático por meio da função ggplot(). Entretanto, para realizarmos isto, foi preciso, primeiramente, realizar a junção das oito classes de antromas de uso e cobertura do solo. A seguir, o código para junção dos dados em um único dataframe (antromas_ucs_sp) é apresentado. Além disso, foi necessário criar um conjunto em que constavam as cores associadas a cada uma das tipologias de uso e cobertura (antromas_ucs_sp_cores); o código deste procedimento também é representado na sequência.

Script: Junção das classes de antromas de uso e cobertura do solo em um único dataframe(antromas_ucs_sp) e junção de cores ((antromas_ucs_sp_cores))

# Criar um dataframe com as geometrias e cores correspondentes
antromas_ucs_sp <- rbind(ucs_urbanos_mistos, ucs_vilas_agricolas, ucs_terras_agricolas, ucs_terras_pecuarias, ucs_silvicultura, ucs_floresta_uso_sustentavel, ucs_conservacao_preservacao, ucs_aguas)

# Obter os níveis únicos da coluna "cor"
antromas_ucs_sp_cores <- unique(antromas_ucs_sp$cor)

Fonte: os autores (2024). Legenda: script apresentando o modelo para a construção do conjunto antromas_ucs_sp, o qual aglomera as 8 classes de antromas de uso e cobertura do solo, e do conjunto antromas_ucs_sp_cores, que integra as cores associadas às diferentes tipologias de uso e cobertura do solo.

De acordo com o observado no código acima, o conjunto antromas_ucs_sp foi construído de forma correta, agregando as diferentes classes de antromas de uso e cobertura do solo em um único dataframe. Partindo deste conjunto, passamos à criação do mapeamento estático dos antromas de uso e coberutra do solo. O código a seguir demonstra como foi estruturada a função ggplot() para realizar o mapeamento dos dados dos antromas de uso e cobertura do solo, seguido da imagem referente ao Mapeamento Estático dos Antromas de Uso e Cobertura do Solo.

Script: Mapeamento Estático dos Antromas de Uso e Cobertura do Solo

# Plotar com ggplot2 e adicionar a legenda diretamente
mapa_antromas_ucs <- ggplot(antromas_ucs_sp, aes(fill = factor(cor, levels = unique(legenda_antromas_ucs$cor)))) +
  geom_sf(color = NA) +
  scale_fill_manual(values = legenda_antromas_ucs$cor, 
                    labels = legenda_antromas_ucs$tipologia,
                    name = "Tipologia") +  # Definindo o nome da legenda
  labs(title = "Antromas de Uso e Cobertura do Solo", 
       subtitle = "Área de Estudo: Estado de São Paulo", 
       x = "Longitude", 
       y = "Latitude") +
  theme_minimal()

print(mapa_antromas_ucs)

Fonte: os autores (2024). Legenda: na imagem gerada pelo script são representados os antromas de uso e cobertura do solo no Estado de São Paulo.

Detalhadamente, em ggplot() inserimos o nome do conjunto (antromas_ucs_sp) e indicamos que os polígonos fossem plotados com os preenchimentos (fill) presentes no conjunto, seguindo e pareando com as cores (cor) presentes no conjunto antromas_ucs_sp_cores. Em geom_sf determinamos que que as bordas dos polígonos não fossem representadas (color = NA), de modo a não interferir nas cores representadas pelo preenchimento.

Complementarmente, em scale_fill_manual() determinamos o formato para a construção da legenda presente no mapeamento; em values = legenda_antromas_ucs\(cor* indicamos que os valores seriam as cores presentes no conjunto **legenda_antromas_ucs**, enquanto em *labels = legenda_antromas_ucs\)tipologia indicamos as categorias que deveriam estar presentes na legenda. Por fim, em name = “tipologia” determinamos o nome escrito sobre a legenda.

Em labs() determinamos aspectos gráficos para a plotagem, como title (título), subtitle (subtítulo), dimensões gráficas x (longitude) e y (latitude).Finalmente, em theme_minimal() tem-se o formato de representação gráfica do mapeamento, como linhas e distribuições visuais, não requerendo ajustes para tal.

Com isto, conseguimos realizar o mapeamento estático dos antromas de uso e cobertura do solo no Estado de São Paulo. As análises para validação do mapeamento serão realizadas posteriormente. Deste ponto, partimos para construção do mapeamento interativo, utilizando a base OpenStreetMaps (OSM).

4.5 Mapeamento Interativo dos Antromas de Uso e Cobertura em São Paulo

Realizada a construção do mapeamento estático dos antromas de uso e cobertura do solo do Estado de São Paulo, passamos ao mapeamento interativo. O mapeamento interativo teve por objetivo espacializar os resultados classificados em um layout dinâmico, que pudesse ser integrado com outras plataformas desktop, mobile ou web. Para tanto, o procedimento para criação do mapeamento interativo é representado a seguir. Destaca-se que em tentativas não reportadas neste trabalho, o conjunto de dados antromas_ucs_sp exigiu grande tempo de processamento, comprometendo a memória do computador. Tendo em vista isto, passamos ao emprego dos 8 subconjuntos que compunham o conjunto maior, ou seja, aqueles 8 conjuntos que tratavam das diferentes tipologias de antromas de uso e cobertura do solo, sendo eles:

  1. ucs_urbanos_mistos
  2. ucs_vilas_agricolas
  3. ucs_terras_agricolas
  4. ucs_terras_pecuarias
  5. ucs_silvicultura
  6. ucs_floresta_uso_sustentavel
  7. ucs_conservacao_preservacao
  8. ucs_aguas

Dito isso, o primeiro passo para construção do mapeamento interativo foi determinar que os 8 subconjuntos possuissem a mesma base de projeção geométrica ou sistema de coordenadas (crs) que o OpenStreetMaps (OSM). Para tal, utilizamos a função st_transform() nos 8 sbuconjuntos, selecionando o crs +proj=longlat +datum=WGS84 em st_crs(). Nesta etapa os nomes dos subconjuntos foram mantidos os mesmos, pois, a mudança indicada pelas funções resguarda somente à estrutura de projeção dos dados.

Realizada a transformação do crs dos subconjuntos, passamos à fusão dos polígonos que integravam os subconjuntos. Conforme apresentamos anteriormente, a tentativa de criar o mapeamento interativo com os dados fragmentados exigiu muito tempo de processamento e não viabilizou o resultado previsto. Portanto, realizamos a fusão dos polígonos por meio da função st_union(), a qual permitiu a construção de camadas de multipolígonos. Para cada um dos 8 subconjuntos foram construídas camadas que os representassem, sendo elas:

  1. camada_ucs_urbanos_mistos
  2. camada_ucs_terras_agricolas
  3. camada_ucs_terras_pecuarias
  4. camada_ucs_floresta_uso_sustentavel
  5. camada_ucs_silvicultura
  6. camada_ucs_conservacao_preservacao
  7. camada_ucs_vilas_agricolas
  8. camada_ucs_aguas

Estruturadas as 8 camadas para os subconjuntos do antromas de uso e cobertura do solo, realizamos o procedimento de simplificação das camadas. O objetivo deste procedimento também foi reduzir o tempo de processamento e a demanda por memória para construção do mapeamento interativo. De acordo com a literatura, este é um procedimento comum quando a quantidade de dados a serem mapeados é significativa (mais de 200 mil polígonos no Estado de São Paulo, por exemplo). Assim, seguindo as sugestões dos autores, aplicamos o índice de tolerância (tolerancia_deg) de 0.001, sendo este um valor que não prejudicaria a resolução do mapeamento interativo.

Após a determinação do índice de tolerância para a simplificação, construímos a função para simplificar os multipolígonos conjuntamente. A função estabeleceu a estrutura para que a simplificação ocorresse, em cada uma das 8 camadas, de modo único, utilizando a base do índice de tolerância para a simplificação. O emprego desta função culminou na criação de 8 camadas simplificadas referentes às diferentes tipologias de uso e cobertura, sendo elas:

  1. camada_ucs_urbanos_mistos_simplificada
  2. camada_ucs_terras_agricolas_simplificada
  3. camada_ucs_terras_pecuarias_simplificada
  4. camada_ucs_floresta_uso_sustentavel_simplificada
  5. camada_ucs_silvicultura_simplificada
  6. camada_ucs_conservacao_preservacao_simplificada
  7. camada_ucs_vilas_agricolas_simplificada
  8. camada_ucs_aguas_simplificada

Finalizada a etapa de simplificação, passamos à organização do layout das camadas a serem plotadas no mapeamento interativo. Esta organização foi devida à estrutura como os dados estavam organizados e distribuídos nas dimensões XY. Para que o processamento das camadas ocorressem de forma única (redução do tempo de processamento) era necessário que os dados que compunham as camadas fossem lidos de forma única. Portanto, atribuímos à lista outras duas chaves “[]”, para que a estrutura fosse lida de forma individual, como ilustra o código a seguir.

Script: Organização para leitura da camada de forma única.

# Camada de área artificial simplificada
urbanos_mistos_multipolygons <- camada_ucs_urbanos_mistos_simplificada[[1]]  
terras_agricolas_multipolygons <- camada_ucs_terras_agricolas_simplificada[[1]]
terras_pecuarias_multipolygons <- camada_ucs_terras_pecuarias_simplificada[[1]]
floresta_uso_sustentavel_multipolygons <- camada_ucs_floresta_uso_sustentavel_simplificada[[1]]
silvicultura_multipolygons <- camada_ucs_silvicultura_simplificada[[1]]
conservacao_preservacao_multipolygons <- camada_ucs_conservacao_preservacao_simplificada[[1]]
vilas_agricolas_multipolygons <- camada_ucs_vilas_agricolas_simplificada[[1]]
aguas_multipolygons <- camada_ucs_aguas_simplificada[[1]]

Fonte: os autores (2024). Legenda: código demonstrando o formato para o estabelecimento de leitura única por camada de multipolígonos, de modo a reduzir o tempo de processamento dos dados durante o mapeamento das informações.

Conforme observado no código acima, 8 camadas foram estruturadas no modelo para representação no mapeamento interativo. Cada uma delas representa uma tipologia de antromas de uso e cobertura do solo a ser inserida no mapeamento. São as camadas construídas:

  1. Urbanos mistos: urbanos_mistos_multipolygons
  2. Terras agrícolas: terras_agricolas_multipolygons
  3. Terras pecuárias: terras_pecuarias_multipolygons
  4. Florestas de uso sustentável: floresta_uso_sustentavel_multipolygons
  5. Silvicultura: silvicultura_multipolygons
  6. Áreas de conservação e preservação: conservacao_preservacao_multipolygons
  7. Vilas agrícolas: vilas_agricolas_multipolygons
  8. Águas: aguas_multipolygons

Com estas 8 camadas estruturadas, partimos para a construção do mapeamento interativo através da função leaflet(). A base (fundo) para o mapeamento dos dados foi a mesma utilizada na construção do mapeamento interativo dos antromas povoados, o Open Street Maps (OSM). Reiteramos que nossa escolha foi feita pela gratuidade dos serviços OSM e pela colaboração na construção de mapeamentos que esta fonte de cartografias permite. Sobre a estrutura de mapeamento, direcionamos a visualização na região do Estado de São Paulo através da função setView(), utizando as informações lng = -47.9292, lat = -23.5505, zoom = 7 (longitude, latitude e zoom, respectivamente) para tal.

A função addPolygons() foi responsável pela integração das 8 camadas ao mapeamento. Nela, direcionamos o conjunto de dados a ser plotado (data), a coloração das bordas (color), a cor do preendimento dos polígonos (fillColor), a opacidade do preencimento (fillOpacity) e o indicador do nome para aquela camada (popup). Devemos pontuar que as cores utilizadas no atributo de mapeamento fillColor foram as mesmas estabelecidas em legenda_antromas_ucs, de modo a manter o padrão colorimétrico utilizado ao longo do trabalho. Além disso, removemos as bordas na representação das camadas (color = NA), de modo que elas não se sobrepusessem em outros polígonos, afetando a visualização das outras camadas.

Por fim, fomos adicionando camada por camada ao mapeamento interativo Para que pudéssemos observar se o tempo de processamento foi otimizado e que o computador seria capaz de gerar o mapeamento interativo dos antromas de uso e cobertura do solo do Estado de São Paulo. Assim sendo, o código a seguir representa o modelo para construção do mapeamento interativo por camadas.

Script: Construção do mapeamento interativo dos antromas de uso e cobertura do solo do Estado de São Paulo por camadas.

# Criar um mapa Leaflet com base no OpenStreetMap e adicionar a camada de área artifical
antromas_ucs_interativo <- leaflet() %>%
  addTiles() %>%  
  setView(lng = -47.9292, lat = -23.5505, zoom = 7) %>%  
  addPolygons(data = urbanos_mistos_multipolygons,
              color = NA,    
              fillColor = "#FF4747",  
              fillOpacity = 1,  
              popup = "Urbanos Mistos")  
  
# Adicionar camada de área agrícola
antromas_ucs_interativo <- antromas_ucs_interativo %>% addPolygons(data = terras_agricolas_multipolygons,
                             color = NA,
                             fillColor = "#F4B488",
                             fillOpacity = 1,
                             popup = "Terras Agrícolas")

# Adicionar camada de pastagem com manejo
antromas_ucs_interativo <- antromas_ucs_interativo %>% addPolygons(data = terras_pecuarias_multipolygons,
                             color = NA,
                             fillColor = "#FFEEB7",
                             fillOpacity = 1,
                             popup = "Terras Pecuárias")

# Adicionar camada de ocupação florestal
antromas_ucs_interativo <- antromas_ucs_interativo %>% addPolygons(data = floresta_uso_sustentavel_multipolygons,
                             color = NA,
                             fillColor = "#A8D08D",
                             fillOpacity = 1,
                             popup = "Floresta de Uso Sustentável")

# Adicionar camada de silvicultura
antromas_ucs_interativo <- antromas_ucs_interativo %>% addPolygons(data = silvicultura_multipolygons,
                             color = NA,
                             fillColor = "#E2EFD9",
                             fillOpacity = 1,
                             popup = "Silvicultura")

# Adicionar camada de Matas
antromas_ucs_interativo <- antromas_ucs_interativo %>% addPolygons(data = conservacao_preservacao_multipolygons,
                             color = NA,
                             fillColor = "#538135",
                             fillOpacity = 1,
                             popup = "Conservação e Preservação")

# Adicionar camada de Ocupação Campestre
antromas_ucs_interativo <- antromas_ucs_interativo %>% addPolygons(data = vilas_agricolas_multipolygons,
                             color = NA,
                             fillColor = "#ED833B",
                             fillOpacity = 1,
                             popup = "Vilas Agrícolas")

# Adicionar camada de Águas
antromas_ucs_interativo <- antromas_ucs_interativo %>% addPolygons(data = aguas_multipolygons,
                             color = NA,
                             fillColor = "#000066",
                             fillOpacity = 1,
                             popup = "Águas")

# Adicionar a legenda ao mapa
antromas_ucs_interativo <- antromas_ucs_interativo %>% 
  addLegend(position = "bottomright",  
            colors = legenda_antromas_ucs$cor,  
            labels = legenda_antromas_ucs$tipologia,  
            title = "Tipologia")  

Fonte: os autores (2024). Legenda: código ilustrando a construção do mapeamento interativo dos biomas antropogênicos de uso e cobertura do solo do Estado de São Paulo através da função leaflet() na base Open Street Maps. Em cada linha de comando é representada a inserção de uma das camadas que representam os diferentes antromas no Estado.

Estruturado o mapeamento, passamos à visualização do mapeamento interativo dos antromas de uso e cobertura do solo do Estado de São Paulo.

Figura: Mapeamento interativo dos antromas de uso e cobertura do solo do Estado de São Paulo.

antromas_ucs_interativo

Fonte: os autores (2024). Legenda: mapeamento interativo dos antromas de uso e cobertura do solo do Estado de São Paulo, criado a partir da função leaflet() e com base nos dados de uso e cobertura do solo produzidos e disponibilizados pelo Instituto Brasileiro de Geografia e Estatística (IBGE). Os dados empregados no mapeamento são referentes ao ano de 2010, mesmo ano dos dados demográficos tratados em pesquisa anterior dos autores.

O mapeamento interativo revelou que a espacialização dos dados (distribuição das camadas) ocorreu de forma relevante. Podemos observar que as diferentes camadas se integraram ao mosaico territorial do Estado, fornecendo uma imagem representativa da distribuição dos antromas na Unidade da Federação. Além disso, verificamos que tanto os popups quanto a legenda auxiliam de forma significativa no entendimento da planta cartográfica.

Uma limitação que encontramos no mapeamento está associada à representação de bacias hidrográficas e/ou cursos d’água continentais que não foram representados no mapeamento interativo. Entretanto, esta limitação não está associada aos dados manipulados, tratados e mapeados nesta pesquisa. Conforme avaliamos no conjunto de dados disponibilizado pelo IBGE e nos metadados referentes a ele, identificamos que as bacias hidrográficas e cursos d’água com menor volume de vazão não são representados no conjunto de dados. Nesta perspectiva, ainda temos que alguns dos polígonos de outros usos e coberturas (diferentes de águas) se sobrepõem a estas regiões, cobrindo as águas continentais e levando à ausência desta informação no mapeamento interativo.

Entretanto, apesar destas limitações, o mapeamento interativo dos antromas de uso e cobertura do solo representam de forma significativa a distribuição destes setores antropogênicos no Estado e servem de guia para a construção de modelos mais apurados, utilizando, por exemplo, dados regionalizados ou imagens orbitais para o aprimoramento das informações. Na próxima etapa, realizaremos as análises para a validação e erro do mapeamento dos antromas de uso e cobertura do solo, focando no produto gerado pela função ggplot(), ou seja, o mapeamento estático dos antromas de uso e coberutra do solo do Estado de São Paulo.

4.6 Estudos de Validação e Incerteza do Mapeamento

Realizadas as etapas anteriores, passamos à validação do mapeamento e o estudo da incerteza associada ele. Neste tópico utilizamos como comparador os dados brutos do IBGE, aqueles referentes aos usos e coberturas do solo filtrados para o ano de 2010. Por outro lado, o conjunto analisado foi aquele estruturado com as diferentes tipologias de uso e cobertura do solo dos antromas e as suas respectivas cores. Sendo assim, os conjuntos que tratamos neste tópico foram:

  • Comparador: cobertura_sp_2010
  • Conjunto analisado: antromas_ucs_sp

As etapas a seguir são as mesmas realizadas para validação e incerteza do mapeamento dos antromas povoados. A escolha pela mesma sequência analítica se justifica na sinergia entre os dois modelos, de modo que os resultados pudessem ser unidos posteriormente na fusão dos dados demográficos aos dados de uso e cobertura do solo.

Pontua-se que antes da realização das etapas subsequentes, realizamos o ajuste do sistema de coordenadas dos dois conjuntos (crs), estabelecendo o crs “+proj=longlat +datum=WGS84” para ambos. Para confirmar que ambos os conjuntos foram ajustados para o mesmo sistema de coordenadas, empregamos a função if/else(). O Quadro a seguir ilustra o ajuste do crs e indica se ambos possuem ou não o mesmo sistema associado aos dados.

Quadro: Ajuste do sistema de coordenadas e conferência.

## [1] "os CRS são os mesmos"

Fonte: os autores (2024). Legenda: confirmação do ajuste do sistema de coordenadas e verificação da similaridade entres os dois conjuntos.

O Script revelou que o ajuste do sistema de coordenadas do conjunto foi realizado corretamente e que ambos os conjuntos encontram-se no mesmo crs. Diante desta inferência, demos continuidade ao processo de validação e estudo da incerteza do mapeamento.

4.6.1 Análise de Sobreposição

Conforme apresentado no capítulo precedente, a análise de sobreposição assume como premissa a identificação de polígonos de áreas demarcadas (urbanas e rurais) que se sobrepõem em diferentes cadastros legais, como regristros de propriedades urbanas e rurais nos órgãos da Federação, dos Estados e/ou dos municípios (MAPA/INCRA, 2022; BRASIL, 2018; MMA, 2006; 2002). Portanto, realizamos nesta etapa a comparação entre os dois conjuntos supracitados para avaliar se os dados mapeados dos antromas de uso e cobertura do solo se sobrepunham exatamente aos polígonos determinados para as áreas identificadas (e demarcadas) pelo IBGE.

Sendo os dois conjuntos, cobertura_sp_2010 e antromas_ucs_sp, estruturados no mesmo formato (coleção de dados simples, do inglês, simple feature collection), realizamos a comparação através da função st_intersection(), a qual verifica automaticamente a interseção entre os dois conjuntos. Em outras palavras, a função realiza uma sondagem nos conjuntos avaliando se todos os poligonos (geometrias) presentes em cobertura_sp_2010 foram representadas no conjunto antromas_ucs_sp. Para facilitar a apresentação dos resultados, utilizamos a função if/else(), de modo que, ao final da análise por st_intersection(), fosse apresentada a setença nenhuma/algumas/todas as geometrias de cobertura_sp_2010 estão presentes em antromas_ucs_sp (Quadro).

Quadro: Análise de sobreposição pela função st_intersection().

## Todas as geometrias de cobertura_sp_2010 estão presentes em antromas_ucs_sp.

Fonte: os autores (2024). Legenda: quadro apresentando a esquemática para a análise de sobreposição dos conjuntos, tomando cobertura_sp_2010 como comparador (padrão ouro) e antromas_ucs_sp como conjunto analisado.

O resultado obtido demonstrou que todas as geometrias que constavam nos dados brutos do IBGE (cobertura_sp_2010) estão presentes nos dados referentes aos antromas de uso e cobertura do solo. Ou seja, todas as geometrias que representam diferentes usos e coberturas do solo nos dados do Instituto Brasileiro encontram correspondentes geométricos nos dados de uso e cobertura dos antromas paulistas. Ressalva-se aqui que o critério de comparação utilizado pela função st_intersection() são as colunas geometry presentes nos dois conjuntos e, portanto, as demais colunas dos conjuntos são desconsideradas na análise realizada pela função.

4.6.2 Exame das Propriedades dos Dados

No capítulo precedente sobre os antromas povoados, realizamos o exame das propriedades dos dados, ou seja, uma investigação da similaridade entre o padrão ouro e os dados gerados na pesquisa. Aqui, nosso procedimento investigou a sinergia estrutural entre os dados de cobertura_sp_2010 e os dados dos antromas_ucs_sp. Primeiramente verificamos se o número de linhas entre os dois conjuntos era identifo ou diferente, utilizando para isto a função if/else() novamente (Quadro).

Quadro: Verificação do número de linhas dos conjuntos.

## [1] "o número de linhas é o mesmo"

Fonte: os autores (2024). Legenda: quadro apresentando o resultado da verificação do número de linhas dos dois conjuntos, realizada através da função if/else().

Conforme visualiza-se no resultado gerado pela função, notamos que o número de linhas entre os dois conjuntos é o mesmo. Assim, constatamos que todas as linhas que compõem o padrão ouro estão presentes no conjunto de dados gerados pela pesquisa (antromas_ucs_sp). Sequencialmente, investigamos se os limites mínimos e máximos de latitude e longitude são os mesmos entre os dois conjuntos.

Para realizarmos esta análise, foi preciso extrair os limites (mínimos e máximos) de latitude e longitude dos dois conjuntos. Isto foi realizado através da função st_box(), a qual retorna um conjunto com estes limites para o padrão ouro e outro para os dados dos antromas. Com estes conjuntos de limites (limites_cobertura_sp_2010 e limites_antromas_ucs_sp), empregamos as funções min() e max() para extrair, respectivamente, os valores mínimos e máximos de latitude e longitude dos conjuntos para comparação. No Quadro a seguir são apresentados os resultados da comparação.

Quadro: Comparação dos limites mínimos e máximos de latitude e longitude dos conjuntos.

## Latitude mínima de cobertura_sp_2010: -25.30115
## Latitude mínima de antromas_ucs_sp: -25.30115
## Latitude máxima de cobertura_sp_2010: -19.78065
## Latitude máxima de antromas_ucs_sp: -19.78065
## Longitude mínima de cobertura_sp_2010: -53.10706
## Longitude mínima de antromas_ucs_sp: -53.10706
## Longitude máxima de cobertura_sp_2010: -44.16211
## Longitude máxima de antromas_ucs_sp: -44.16211

Fonte: os autores (2024). Legenda: quadro apresentando os valores mínimos e máximos de latitude e longitude de cobertura_sp_2010 e antromas_ucs_sp.

De acordo com o Quadro, confirmamos que os limites mínimos e máximos de latitude e longitude dos conjuntos investigados são os mesmos. Portanto, temos que a representação de ambos ocorre dentro do mesmo quadrante de mapeamento.

Assim sendo, constatamos que não existem linhas faltantes em antromas_ucs_sp, ou seja, todas as linhas do padrão ouro cobertura_sp_2010 estão representadas no conjunto gerado. Além disso, identificamos que os sistemas de coordenadas (crs) e os limites de latitude e longitude dos dois conjuntos são os mesmos. Estas inferências contribuiram significativamente para a confirmação preliminar da qualidade do mapeamento gerado ao longo desta investigação.

4.6.3 Estatísticas de Resumo do Mapeamento

Intuindo aprofundar nosso conhecimento sobre os conjuntos, de modo a garantir a qualidade do mapeamento gerado, passamos às Estatística de Resumo do Mapeamento. Neste caso, investigamos os dois conjuntos em grade estatística, similarmente à construída no capítulo dos antromas povoados. O roteiro analítico segue o mesmo formato dos dados demográficos, portanto, representamos aqui somente os resultados gerados da análise.

A primeira etapa de trabalho foi extrair dos poligonos de cobertura_sp_2010 e antromas_ucs_sp os pontos que estruturavam seus vértices. Essa operação foi realizada para termos o número de pontos dentro de cada quadrante da grade estatística de análise. Justificamos esta operação na dinamicidade para calcular a precisão dos pontos ali enquadrados, uma vez que um mesmo polígono poderia estar distribuído entre dois quadrantes da grade, inviabilizando a análise estatística.

Portanto, através da função st_coordinates() realizamos a extração dos vértices (pontos de coordenadas) dos dois conjuntos supracitados. Sequencialmente, determinamos a criação de um dataframe composto pelos pontos X e Y dos pontos, longitude e latitude respectivamente. No Quadro a seguir são apresentadas as primeiras 6 linhas dos conjuntos gerados para o padrão ouro, coordenadas_pontos_cobertura_sp_2010_df, e dos dados dos antromas de uso e cobertura do solo, coordenadas_pontos_antromas_df.

Quadro: primeiras linhas dos conjuntos de coordenadas (pontos) de coordenadas_pontos_cobertura_sp_2010_df e coordenadas_pontos_antromas_df

# Verificar a estrutura do novo data frame
head(coordenadas_pontos_cobertura_sp_2010_df)
##           x         y
## 1 -49.88686 -23.05579
## 2 -49.89659 -23.05592
## 3 -49.89673 -23.04686
## 4 -49.88701 -23.04673
## 5 -49.88686 -23.05579
## 6 -49.88701 -23.04673
# Verificar a estrutura do novo data frame
head(coordenadas_pontos_antromas_df)
##           x         y
## 1 -49.87772 -23.01941
## 2 -49.88744 -23.01955
## 3 -49.88758 -23.01049
## 4 -49.87786 -23.01035
## 5 -49.87772 -23.01941
## 6 -49.87786 -23.01035

Fonte: os autores (2024). Legenda: primeiras linhas dos conjuntos provenientes das coordenadas dos pontos extraídos de cobertura_sp_2010 (padrão ouro) e de antromas_ucs_sp (antromas de uso e cobertura do solo).

Realizadas as extrações dos pontos, e suas respectivas coordenadas, passamos a estruturação da grade estatística para análise da distribuição de pontos. O primeiro passo foi extrair do padrão ouro os limites de longitude e latitude, o que foi realizado por meio da função st_bbox(). Com estes limites, determinamos uma grade de 20 por 20 (altura e largura), ou seja, uma grade estatística de 400 células para a contagem de pontos.

Vale destacar que consideramos nesta construção a Fórmula de Haversine, de modo que a esfericidade da Terra fosse assumida como premissa para sua construção. A seguir reapresentamos a estrutura global desta fórmula :

\[ a = \sin^2\left(\frac{\Delta\text{lat}}{2}\right) + \cos(\text{lat}_1) \cdot \cos(\text{lat}_2) \cdot \sin^2\left(\frac{\Delta\text{lon}}{2}\right) \]

\[ c = 2 \cdot \text{atan2}\left(\sqrt{a}, \sqrt{1-a}\right) \]

\[ d = R \cdot c \]

onde:

  • \(\Delta\text{lat}\) é a diferença de latitude entre os dois pontos,
  • \(\Delta\text{lon}\) é a diferença de longitude entre os dois pontos,
  • \(\text{lat}_1\) e \(\text{lat}_2\) são as latitudes dos dois pontos em radianos,
  • \(R\) é o raio da esfera (por exemplo, o raio médio da Terra).

Portanto, após a estruturação da grade, realizamos a multiplicação pelo fator de conversão para integrar a esfericidade do planeta na projeção da grade estatística. Ao finalizarmos este procedimento, calculamos a largura, a altura, a área do quadrante em km² e a dimensão média dos lados do quadrado. No Quadro a seguir, são apresentados os resultados deste procedimento.

Quadro: Dimensões dos quadrantes da grade estatística.

## Largura (tamanho_celula_x_km): 45.98414 km
## Altura (tamanho_celula_y_km): 11.77902 km
## Área de cada quadrante da grade em km²: 541.6479 km²
## Dimensão média dos lados do quadrado da grade em km: 23.27333 km

Fonte: os autores (2024). Legenda: quadro apresentando as dimensões dos quadrantes da grade estatística.

Determinadas as dimensões, passamos à construção da grade para a integração com os dados dos pontos dos dois conjuntos analisados. Utilizamos para isso as informações de latitude e longitude máxima e mínima, proveniente de st_bbox(). Utilizamos as dimensões X e Y para enquadrar a grade e induzimos a criação da grade, com as informações acima apresentadas, por meio da função st_make_grid().

Depois desta estruturação final da grade, passamos a integração dos pontos em cada um dos quadrantes. Este procedimento foi realizado através da função st_join(), onde pontos_cobertura_sp_2010 e pontos_antromas foram unidos aos polígonos da grade estatística (grade_quadrantes_pol). Após a junção, realizamos a contagem de pontos por quadrante, utilizando uma função group_by(id) para que os dados dos pontos fossem integrados aos polígonos para a contagem.

# Realizar a junção espacial entre os pontos de cobertura e os polígonos dos quadrantes
juncao_cobertura_sp_2010_grade <- st_join(pontos_cobertura_sp_2010, grade_quadrantes_pol)

# Verificar o resultado da junção
print(juncao_cobertura_sp_2010_grade)
## Simple feature collection with 1241085 features and 1 field
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: -53.10706 ymin: -25.30115 xmax: -44.16211 ymax: -19.78065
## Geodetic CRS:  +proj=longlat +datum=WGS84
## First 10 features:
##     id                    geometry
## 1  168 POINT (-49.88686 -23.05579)
## 2  168 POINT (-49.89659 -23.05592)
## 3  168 POINT (-49.89673 -23.04686)
## 4  168 POINT (-49.88701 -23.04673)
## 5  168 POINT (-49.88686 -23.05579)
## 6  168 POINT (-49.88701 -23.04673)
## 7  168 POINT (-49.89673 -23.04686)
## 8  168  POINT (-49.89687 -23.0378)
## 9  168 POINT (-49.88715 -23.03767)
## 10 168 POINT (-49.88701 -23.04673)
# Contar o número de pontos em cada quadrante
contagem_por_quadrante_cobertura_sp_2010 <- juncao_cobertura_sp_2010_grade %>%
  group_by(id) %>%
  summarize(num_pontos_cobertura_sp_2010 = n())

# Juntar com a grade completa para preencher os quadrantes sem pontos
contagem_por_quadrante_cobertura_sp_2010 <- st_join(grade_quadrantes_pol, contagem_por_quadrante_cobertura_sp_2010, by = "id")

# Preencher os valores NA na contagem de pontos com zero
contagem_por_quadrante_cobertura_sp_2010$num_pontos_cobertura_sp_2010[is.na(contagem_por_quadrante_cobertura_sp_2010$num_pontos_cobertura_sp_2010)] <- 0

No Script a seguir são apresentados os resumos das junções realizadas e da contagem propriamente dita. Destaca-se que o resultados dos códigos sintetizam as primeiras linhas dos conjuntos contagem_por_quadrante_cobertura_sp_2010 e contagem_por_quadrante_antromas.

Script: síntese da contagem de pontos por quadrante da grade estatística.

# Verificar o resultado da contagem
print(contagem_por_quadrante_cobertura_sp_2010)
## Simple feature collection with 400 features and 3 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -53.10706 ymin: -25.30115 xmax: -44.16211 ymax: -19.78065
## Geodetic CRS:  +proj=longlat +datum=WGS84
## First 10 features:
##    id.x id.y num_pontos_cobertura_sp_2010                              x
## 1     1   NA                            0 POLYGON ((-53.10706 -25.301...
## 2     2   NA                            0 POLYGON ((-52.65982 -25.301...
## 3     3   NA                            0 POLYGON ((-52.21257 -25.301...
## 4     4   NA                            0 POLYGON ((-51.76532 -25.301...
## 5     5   NA                            0 POLYGON ((-51.31807 -25.301...
## 6     6   NA                            0 POLYGON ((-50.87082 -25.301...
## 7     7   NA                            0 POLYGON ((-50.42358 -25.301...
## 8     8   NA                            0 POLYGON ((-49.97633 -25.301...
## 9     9   NA                            0 POLYGON ((-49.52908 -25.301...
## 10   10   NA                            0 POLYGON ((-49.08183 -25.301...
# Verificar o resultado da contagem para os antromas
print(contagem_por_quadrante_antromas)
## Simple feature collection with 400 features and 3 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -53.10706 ymin: -25.30115 xmax: -44.16211 ymax: -19.78065
## Geodetic CRS:  +proj=longlat +datum=WGS84
## First 10 features:
##    id.x id.y num_pontos_antromas                              x
## 1     1   NA                   0 POLYGON ((-53.10706 -25.301...
## 2     2   NA                   0 POLYGON ((-52.65982 -25.301...
## 3     3   NA                   0 POLYGON ((-52.21257 -25.301...
## 4     4   NA                   0 POLYGON ((-51.76532 -25.301...
## 5     5   NA                   0 POLYGON ((-51.31807 -25.301...
## 6     6   NA                   0 POLYGON ((-50.87082 -25.301...
## 7     7   NA                   0 POLYGON ((-50.42358 -25.301...
## 8     8   NA                   0 POLYGON ((-49.97633 -25.301...
## 9     9   NA                   0 POLYGON ((-49.52908 -25.301...
## 10   10   NA                   0 POLYGON ((-49.08183 -25.301...

Fonte: os autores (2024). Legenda: síntese do procedimento de contagem de pontos, onde constam somente as primeiras linhas dos conjuntos e as respectivas descrições de cada um deles (estrutura dos conjuntos de dados).

Realizada a contagem de pontos em cada quadrante da grade estatística, passamos à visualização destes dados. O mapeamento das informações da grade estatística foi realizado através da função ggplot(), de modo a melhorar a visualização dos dados na grade. Nos dois mapeamentos a seguir (Figuras), apresentamos o número de pontos em cada um dos quadrantes da grade estatística de 20 por 20 (400) células. A coloração foi aleatoriamente estabelecida, não havendo nenhuma associação com o padrão colorimétrico utilizado nas etapas precedentes das nossas análises.

Figura: Mapeamento da grade estatística para os dados de cobertura_sp_2010

Fonte: os autores (2024). Legenda: grade estatística referente aos dados de contagem_por_quadrante_antromas, onde são apresentados o número de pontos em cada um dos quadrantes da grade estatística.

Figura: Mapeamento da grade estatística para os dados de **antromas_ucs_sp*

Fonte: os autores (2024). Legenda: grade estatística referente aos dados de contagem_por_quadrante_antromas, onde são apresentados o número de pontos em cada um dos quadrantes da grade estatística.

Como forma de atestar a distribuição destes dados na grade estatística e comparar a distribuição de pontos entre os dois conjuntos, realizamos a estruturação de um dataframe com o número de pontos dos conjuntos. Portanto, isolamos as informações do número de pontos de contagem_por_quadrante_cobertura_sp_2010 e contagem_por_quadrante_antromas e criamos um novo conjunto de dados, cujo nome foi dados_comparativos.

Nele, ainda inserimos uma coluna com o nome de diferenca, na qual os valores das colunas com o número de pontos de num_pontos_cobertura_sp_2010 é subtraído por num_pontos_antromas. Realizados estes procedimentos estruturais, utilizamos a função if/else() para avaliar se havia alguma linha no conjunto dados_comparativos em que eram apresentadas diferenças entre os dois conjuntos comparados. No Quadro a seguir é representado o resultado da análise.

Quadro: Comparação entre os números de pontos nos quadrantes dos conjuntos de cobertura_sp_2010 e antromas_ucs_sp.

## Os conjuntos têm o mesmo número de pontos em cada quadrante.

Fonte: os autores (2024). Legenda: o quadro apresenta o resultado da comparação entre o número de pontos dos conjuntos provenientes de cobertura_sp_2010 e antromas_ucs_sp. Nele há indicação que não há diferença entre a distribuição de pontos nas duas grades estatísticas estruturadas ao longo da análise.

O resultado apresentado pelo código acima demonstra que todos os pontos presentes no conjunto cobertura_sp_2010 são representados igualmente pelo conjunto antromas_ucs_sp. Isto demonstra que os dados foram espacializados de forma correta e garantem a qualidade da distribuição dos polígonos, tanto na grade estatística quanto no mapeamento gerado ao longo desta análise.

4.6.3.1 Estruturação da Matriz de Confusão para as Análises Estatísticas

Com os resultados gerados pela contagem de pontos em grade estatística, partimos para a produção da matriz de confusão. Os conjuntos empregados na estruturação da matriz de confusão foram estruturados na etapa anterior, a saber:

  • Padrão ouro (IBGE), proveniente dos dados de cobertura_sp_2010: coordenadas_pontos_cobertura_sp_2010_df
  • Dados analisados dos antromas de uso e cobertura, provenientes de antromas_ucs_sp: coordenadas_pontos_antromas_df

Conforme apresentamos no capítulo precedente, onde analisamos os dados dos antromas povoados, a matriz de confusão foi empregada para que pudéssemos realizar as análises de: sensibilidade, especificidade e acurácia e erro global. Vale destacar que esta matriz também visa identificar os Verdadeiros Positivos (VPs), os Verdadeiros Negativos (VNs), os Falsos Positivos (FPs) e os Falsos Negativos (FNs), os quais representam respectivamente nesta análise:

  1. Verdadeiros Positivos (VPs): quadrantes da grade estatística onde o número de pontos é igual entre coordenadas_pontos_cobertura_sp_2010_df e coordenadas_pontos_antromas_df;
  2. Verdadeiros Negativos (VNs): quadrantes da grade estatística onde não há pontos representados tanto em coordenadas_pontos_cobertura_sp_2010_df quanto em coordenadas_pontos_antromas_df;
  3. Falsos Negativos (FNs): quadrantes da grade estatística onde o número de pontos de coordenadas_pontos_cobertura_sp_2010_df é maior que o número de pontos em coordenadas_pontos_antromas_df.
  4. Falsos Positivos (FPs): quadrantes da grade estatística onde o número de pontos de coordenadas_pontos_cobertura_sp_2010_df é menor que o número de pontos em coordenadas_pontos_antromas_df.

Assim sendo, passamos à combinação dos conjuntos em um único dataframe, estabelecendo as colunas com o número de pontos nos respectivos quadrantes. Para tal, utilizamos a função data.frame() para criar o conjunto_combinado_ucs que constavam os pontos (vértices dos polígonos dos dois conjuntos) divididos por quadrantes (grade estatística de 400 células).

Após este procedimento, empregamos a função if/else() para identificar os VPs, os VNs, os FPs e os FNs presentes no conjunto_combinado_ucs. As regras estabelecidas para esta função são as mesmas 4 acima apresentadas, porém em formatação de código 0 e 1. Sendo o conjunto_combinado_ucs um dataframe de 400 linhas, estruturamos a Tabela a seguir como síntese do número de VPs, VNs, FPs e FNs identificados pela análise.

Tabela: Síntese analítica do número de VPs, VNs, FPs e FNs identificados na análise.

##    VP  VN FP FN
## 1 222 178  0  0

Fonte: os autores (2024). Legenda: tabela apresentando o número de Verdadeiros Positivos (VPs), Verdadeiros Negativos (VNs), Falsos Positivos (FPs) e Falsos Negativos (FNs) identificados durante a comparação entre o padrão ouro (IBGE) e os dados dos antromas de uso e cobertura do solo.

Com base nos resultados apresentados na Tabela, constatamos que os vértices do conjunto dos antromas povoados encontram-se fortemente atrelados aos dados do padrão ouro (IBGE). De acordo com a literatura, a ausência dos FPs e dos FNs demonstra que não houve erro significativo no enquadramento dos pontos dos dois conjuntos. Além disso, os VPs e VNs demonstram a eficiência do modelo em distribuir os pontos referentes ao vértices, conforme apresenta a literatura, reiterando a qualidade da espacialização dos dados. Portanto, entendemos que o mapeamento dos antromas de uso e cobertura do solo representa suficientemente a distribuição poligonal dos dados do IBGE e garante a qualidade da informação geoespacial no Estado de São Paulo.

Com estes resultados, avançamos com as métricas de sensibilidade, especificidade e acurárica e erro global.

4.6.3.2 Sensibilidade e Especificidade do Mapeamento

Em se tratando de sensibilidade do mapeamento, utilizamos a mesma fórmula apresentada no capítulo precedente para a análise, a saber:

\[\text{Sensibilidade (Recall)} = \frac{VP}{VP + FN}\]

onde VP representa os verdadeiros positivos e FN representa os falsos positivos.

O objetivo desta análise foi identificar se o modelo de mapeamento empregado para os antromas de uso e cobertura conseguia identificar corretamente os pontos (vértices dos polígonos) presentes no padrão ouro. O Script a seguir representa a função e o resultado obtido para esta métrica.

Script: Cálculo da Sensibilidade do modelo.

#Calculando a Sensibilidade
sensibilidade_ucs <- sum(conjunto_combinado_ucs$VP) / (sum(conjunto_combinado_ucs$VP) + sum(conjunto_combinado_ucs$FN))

#Exibindo o resultado
sensibilidade_ucs
## [1] 1

Fonte: os autores (2024). Legenda: script representando o formato codificado para o cálculo da sensibilidade do modelo empregado no mapeamento dos antromas de uso e cobertura do solo e o resultado obtido.

De acordo com o resultado apresentado acima, obtivemos o valor de 1 para a métrica de sensibilidade. Este valor revela que 100% dos vértices presentes em cobertura_sp_2010 são representados igualmente no conjunto antromas_ucs_sp. De acordo com a literatura, este valor representa a qualidade do modelo em espacializar as informações geoespaciais, indicando sua eficiência em reproduzir espacialmente estas informações geográficas.

Outra métrica que contribuiu para a avaliação do modelo para o mapeamento dos antromas de uso e cobertura do solo, foi a especificidade. Segundo a literatura, esta métrica tem por objetivo identificar pontos presentes em antromas_ucs_sp que não estavam presentes em cobertura_sp_2010. Neste horizonte, a especificidade versa sobre a análise dos Verdadeiros Negativos entre os conjuntos e sua fórmula é apresentada a seguir:

\[\text{Especificidade} = \frac{VN}{VN + FP}\]

onde VN representa o número de quadrantes identificados como Verdadeiros Negativos e FN o número de Falsos Positivos.

No Script a seguir, apresentamos o cálculo da especificidade do modelo e o resultado gerado.

Script: Cálculo da Especificidade do modelo.

#Calculando a Especificidade
especificidade_ucs <- sum(conjunto_combinado_ucs$VN) / (sum(conjunto_combinado_ucs$VN) + sum(conjunto_combinado_ucs$FP))

#Exibindo o resultado
print(especificidade_ucs)
## [1] 1

Fonte: os autores (2024). Legenda: script representando o formato codificado para o cálculo da especificidade do modelo empregado no mapeamento dos antromas de uso e cobertura do solo e o resultado obtido.

O cálculo da especificidade retornou o valor de 1, ou seja, houve uma representação de 100% de acerto do modelo dos antromas comparado ao padrão ouro. Nesta perspectiva, notamos que o modelo foi capaz de representar corretamente todos os pontos presentes em cobertura_sp_2010 no mapeamento dos dados de antromas_ucs_sp. Assim, assumindo o postulado pela literatura, conseguimos identificar outra métrica que aponta para a qualidade do modelo de mapeamento para os antromas tendo em vista sua especificidade.

4.6.3.3 Acurácia e Erro Global do Mapeamento

Complementarmente às análises acima realizadas, focamos na acurácia e erro global do mapeamento. De acordo com a literatura, o cálculo da acurácia tem por objetivo identificar o número de pontos (vértices dos polígonos) de antromas_ucs_sp que foram corretamente mapeados quando comparados a cobertura_sp_2010 (padrão ouro). Portanto, esta métrica também versa sobre o número de Verdadeiros Positivos e sua fórmula é dada por:

\[\text{Acurácia Global} = \frac{VP + VN}{VP + VN + FP + FN}\]

onde VP, que representa as células da grade em que o número de pontos é igual no mapeamento de antromas e no padrão ouro, é dividido pelo total de células da grade estatística, ou seja, pelo somatório das células com número de pontos iguais (VPs) e diferentes (FPs e FNs) entre os conjuntos.

O Script a seguir representa a fórmula empregada no R para o cálculo da acurácia global e o resultado gerado.

Script: Cálculo da Acurácia Global do modelo.

#Calculando a Acurácia Global
acuracia_global_ucs <- (sum(conjunto_combinado_ucs$VP) + sum(conjunto_combinado_ucs$VN)) / (sum(conjunto_combinado_ucs$VP) + sum(conjunto_combinado_ucs$VN) + sum(conjunto_combinado_ucs$FP) + sum(conjunto_combinado_ucs$FN))

#Exibindo o resultado
print(acuracia_global_ucs)
## [1] 1

Fonte: os autores (2024). Legenda: script representando o formato codificado para o cálculo da acurácia global do modelo empregado no mapeamento dos antromas de uso e cobertura do solo e o resultado obtido.

A estimativa (valor) obtida pelo cálculo da acurácia global foi de 1, ou seja, 100% dos vértices de antromas_ucs_sp foram mapeados corretamente frente ao vértices do padrão ouro. Segundo a literatura, esta alta taxa de correspondência reforça a qualidade do modelo empregado na análise, apontando para a qualidade da informação gerada, o mapeamento.

Por outro lado, o cálculo do erro glogal versa sobre as informações geoespaciais erroneamente mapeadas, conforme aponta a literatura. Assim, esta métrica se refere à proporção de Falsos Negativos e Falsos Positivos presentes na comparação entre os conjuntos. Sua fórmula é dada por:

\[\text{Erro Global} = \frac{FP + FN}{VP + VN + FP + FN}\]

onde temos o somatório de FPs e FNs, áreas com número divergente de pontos entre os antromas e o padrão ouro, dividido pelo número total de células com pontos.

No Script a seguir a fórmula é representada através da codificação R e na sequência o resultado é gerado.

Script: Cálculo do Erro Global do modelo.

#Calculando o Erro Global
erro_global_ucs <- (sum(conjunto_combinado_ucs$FP) + sum(conjunto_combinado_ucs$FN)) / (sum(conjunto_combinado_ucs$VP) + sum(conjunto_combinado_ucs$VN) + sum(conjunto_combinado_ucs$FP) + sum(conjunto_combinado_ucs$FN))

#Exibindo o resultado
print(erro_global_ucs)
## [1] 0

Fonte: os autores (2024). Legenda: script representando o formato codificado para o cálculo do erro global do modelo empregado no mapeamento dos antromas de uso e cobertura do solo e o resultado obtido.

A estimativa (valor) obtida para o erro global foi de 0, ou seja, não houve no modelo de mapeamento erro na espacialização das informações geoespacias. Em outras palavras, observamos a completa correspondência entre os vértices dos polígonos de antromas_ucs_sp quando comparados a cobertura_sp_2010. Diante desse resultado, obtivemos outros indicativos que apontam para a qualidade do modelo de antromas e, consequentemente, do mapeamento gerado por ele.

4.6.4 Síntese das Estatísticas do Mapeamento e Visualização dos Resultados

Nos encaminhando para a finalização deste capítulo, apresentamos aqui uma síntese dos resultados obtidos ao longo das nossas investigações. A seguir, trouxemos uma tabela onde são apresentadas as estimativas (valores e porcentagem) para as métricas de sensibilidade, especificidade, acurária e erro global.

Tabela: Síntese das métricas empregadas na análise da qualidade do mapeamento.

##           Métrica Estimativa Porcentagem
## 1   Sensibilidade          1        100%
## 2  Especificidade          1        100%
## 3 Acurácia Global          1        100%
## 4     Erro Global          0          0%

Fonte: os autores (2024). Legenda: tabela representando os valores numéricos e percentuais para as métricas investigadas: sensibilidade, especificidade, acurácia global e erro global.

Como apresentamos anteriormente, as estimativas para as 4 métricas reportadas na Tabela refletem a qualidade do modelo empregado no mapeamento dos antromas de uso e cobertura do solo. Notamos que o modelo foi capaz de espacializar com eficiência as informações geoespaciais presentes em antromas_ucs_sp quando comparado à espacialização dos dados do padrão ouro (cobertura_sp_2010). As métricas acima apresentadas reforçam estes dizeres e a literatura demonstra que estas estimativas são significativamente positivas para a operabilidade do modelo de mapeamento.

De modo a representar visualmente estas métricas, realizamos a construção de um histograma, onde fosse claramente visível a contribuição de cada uma das métricas na avaliação do modelo. O gráfico a seguir representa o histograma das métricas aplicadas nas análises anteriores.

Gráfico: Histograma das métricas investigadas.

Fonte: os autores (2024). Legenda: histograma representando a contribuição das métricas sensibilidade, especificidade, acurácia global e erro global na análise da qualidade do modelo de mapeamento dos antromas de uso e cobertura do solo.

Diante do gráfico, notamos, visivelmente, que as métricas de especificidade, sensibilidade e acurácia global atingem o valor de 1, ou seja, 100% de aproveitamento para a qualidade do mapeamento. Linearmente, o erro global estando em 0 também indica que o modelo utilizado não possui erros representativos na espacialização da informação, contribuindo significativamente para a qualidade do modelo empregado.

Tendo em vista nosso alinhamento com a Metrologia, utilizamos o formato de gráfico radar para a visualização dos resultados. Este modelo, característico das Ciências Metrológicas, representa o nível de distribuição das estimativas obtidas em um alvo, como ilustra o gráfico a seguir.

Gráfico: Gráfico radar das métricas investigadas.

## `geom_path()`: Each group consists of only one observation.
## ℹ Do you need to adjust the group aesthetic?

Fonte: os autores (2024). Legenda: gráfico radar representando as estimativas obtidas para as métricas investigadas. O centro do gráfico represensta o valor de 0, enquanto a linha mais externa representa o valor de 1.

Visualmente, o gráfico radar deixa claro a distribuição das estimativas obtidas para as métricas que avaliavam o modelo. Novamente, observam-se os pontos de sensibilidade, especificidade e acurácia global na margem de 1 (100% de aproveitamento), ao passo que o erro global encontra-se no centro do gráfico, apontando para o valor de 0. Com isto, finalizamos a síntese dos resultados e apresentamos a distribuição das estimativas que garantiram a qualidade do modelo empregado nesta pesquisa.

5 Conclusões

Ao longo desta etapa de pesquisa, conseguimos identificar os atributos necessários para a construção do modelo de mapeamento dos antromas de uso e cobertura do solo do Estado de São Paulo. Construímos uma estrutura codificada que permitiu a mineração e a manipulação dos dados brutos do IBGE para enquadrá-los no perfil de subdivisão territorial dos antromas. Partindo deste particionamento dos dados, estabelecemos uma formatação específica para o mapeamento dos antromas de uso e cobertura do solo na Unidade da Federação, utilizando as mesmas diretrizes amplicadas no mapeamento dos antromas povoados.

Geramos os mapeamentos isolados para cada uma das classes dos antromas de uso e cobertura do solo e, posteriormente, produzimos os mapeamentos estático e interativo para os antromas em São Paulo. Notamos que ambos foram construídos em uma base sólida, considerando as métricas de validação e estudo da incerteza do mapeamento. Nesta ótica, as análises estatísticas realizadas ao longo da pesquisa indicaram a qualidade do modelo e do produto por ele gerado, seja no que se refere à espacialização da informação, seja propriamente na cartografia gerada.

Diante dos resultados promissores, assumimos como horizonte investigativo a ulterior reprodutibilidade do modelo para outras Unidades da Federação empregando a mesma fonte de dados, o IBGE. Outra perspectiva para a análise versa sobre o emprego de dados locais, de maneira a reduzir as dimensões poligonais e refinar o mapeamento aqui construído.