import os
import ee
import geemap
import geemap.colormaps as cm
Riqueza de solos
Importando pacotes e inicializando geemap
geemap.ee_initialize()
A riqueza de solos é calculada como a quantidade de componentes da unidade de mapeamento de solos.
Banco de Dados
Utilizamos a base de dados de pedologia do Instituto Brasileiro de Geografia e Estatística (IBGE) (https://geoftp.ibge.gov.br/informacoes_ambientais/pedologia/vetores/escala_250_mil/versao_2023/pedo_area.zip) para o cálculo da riqueza de solos. Utilizamos o arquivo pedo_area.shp. Calculamos a quantidade de solos componentes de cada polígono e rasterizados na escala do modelo digital de elevação utilizado nas etapas anteriores (~ 92 metros).
Códigos para a criação da riqueza de solos
As análises foram rodadas no Google Earth Engine (Gorelick et al. 2017) , devido a demanda computacional do projeto, usando o pacote geemap (Wu 2020), em Python (Python Software Foundation 2023), como interface pela facilidade na documentação e reprodutividade das análises. O JupyterNotebook para a reprodução das análises pode ser encontrado em https://github.com/Resiliencia-climatica-Brasil/diversity-resilience-python/blob/master/jupyternotebook/4_soil_diversity.ipynb.
O primeiro passo é criar uma função que conta os tipos de solos componentes de cada polígono. Concatenamos as colunas componente, component1, component2 e component3. Depois, separamos a string pelos sinais de “+”, que indicam as separações das descrições de cada tipo de solo. Em seguida, contamos quantos tipo de solos existem em cada polígono como o comprimento da lista de tipos de solos. Adicionamos uma coluna chamada soil_richness com a riqueza de solos em cada polígono.
def fun(feature):
= (ee.String(feature.get("componente"))
number "component1")))
.cat(ee.String(feature.get("component2")))
.cat(ee.String(feature.get("component3")))
.cat(ee.String(feature.get("\+")
.split(
.length())
return feature.set("soil_richness", number)
Em seguida, importamos os dados de solo, definimos a região para exportar o dado e a escala da análise.
# Importando os polígonos de solo
= ee.FeatureCollection("projects/ee-lucasljardim9/assets/pedo_area")
solo
# Importando mapa de biomas do IBGE para extrair as coordenadas mínimas e máximas do Brasil
= ee.FeatureCollection("projects/ee-lucasljardim9/assets/Biome")
regiao
def func_cmp(feature):
return feature.bounds()
# Extraindo as coordenadas mínimas e máximas do Brasil
= regiao.map(func_cmp).geometry().dissolve(**{'maxError': 1}).bounds()
regiao_box
# Extraindo a resolução do mapa
= ee.Image("MERIT/DEM/v1_0_3")
DEM
= DEM.projection().nominalScale() escala
Aplicamos a função criada anteriormente aos polígonos de solo.
= solo.map(fun) solo
Rasterizamos a riqueza de solos na mesma escala das análises anteriores.
= solo.reduceToImage(**{'properties':["soil_richness"],
soil_diversity 'reducer':ee.Reducer.max()}) \
**{'crs':"EPSG:4326",
.reproject('scale':escala})
Por fim, exportamos o raster como um asset no Google Earth Engine.
# Exporte o raster de riqueza de solo
#modifique o assetId para do seu projeto
= "projects/ee-lucasljardim9/assets/soil_diversity"
assetId
geemap.ee_export_image_to_asset(='soil_diversity', assetId=assetId, region=regiao_box, scale=escala, maxPixels=1e13
soil_diversity, description )
O dado criado pode ser visualizado abaixo:
# Paleta de cores
= cm.get_palette('terrain', n_class=10)
palette
# Centralize o mapa
= geemap.Map(center=(-11.75, -51.52), zoom=4)
Map
# Importe os assets
= ee.Image("projects/ee-lucasljardim9/assets/soil_diversity")
soil_diversity
# Plote o mapa
'palette':palette, 'min':0, 'max': 6})
Map.addLayer(soil_diversity, {
Map