import os
import ee
import geemap
import geemap.colormaps as cm
Resiliência da paisagem
Importando pacotes e inicializando geemap
geemap.ee_initialize()
A resiliência da paisagem é classificada pela heterogeneidade da paisagem e conectividade local (Anderson et al. 2016). Modificamos a metodologia original de média das métricas pela classificação pelos quantis das duas variáveis. Classificamos as métricas por quantis e atribuímos classes para as combinações de quantis de heterogeneidade da paisagem e conectividade local de cada célula. Por exemplo, células com alta heterogeneidade local (quantil superior) e alta conectividade local (quantil superior) são áreas com alta resiliência. Por outro lado, locais com baixa conectividade local e heterogeneidade da paisagem possuem baixa resiliência. Nas classes intermediárias estão as células com alta heterogeneidade da paisagem e baixa conectividadel local, e as células com alta conectividade local e baixa heterogeneidade da paisagem.
Base de dados
Os dados utilizados para calcular a resiliência da paisagem são os mapa de heterogeneidade da paisagem e a conectividade local criados anteriormente.
Códigos para a criação da resiliência da paisagem
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/7_resilience.ipynb.
Primeiro, importamos o polígono de biomas do Brasil para extraímos as coordenadas geográficas mínimas e máximas. Extraímos também a escala do modelo digital de elevação que usamos nas análises anteriores.
# Importando o polígono de bioma para definir as
# coordenadas máximas e mínimas do Brasil
= ee.FeatureCollection("projects/ee-lucasljardim9/assets/Biome")
regiao
# ModeloDigital de Elevação para extrair a resolução
= ee.Image("MERIT/DEM/v1_0_3")
DEM
# função para extrair as bordas dos polígonos
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
# Resolução das análises
= DEM.projection().nominalScale() escala
Importamos os mapas de heterogeneidade da paisagem e conectividade local.
# modifique os endereços para os do seu projeto
= ee.Image("projects/ee-lucasljardim9/assets/local_connectedness")
local_connectedness
= ee.Image("projects/ee-lucasljardim9/assets/landscape_heterogeneity") landscape_heterogeneity
Calculamos os quantis de 25, 50, 75% da heterogeneidade da paisagem e conectividade local.
# Heterogeneidade da paisagem
= landscape_heterogeneity.reduceRegion(**{
quartiles_Div 'reducer': ee.Reducer.percentile([25, 50, 75]),
'scale': escala,
'maxPixels':1e13,
'bestEffort': False
})
# Extraímos os valores do quantis
= quartiles_Div.getNumber('z_p25')
div_25 = quartiles_Div.getNumber('z_p50')
div_50 = quartiles_Div.getNumber('z_p75')
div_75
# Conectividade local
= local_connectedness.reduceRegion(**{
quartiles_Con 'reducer': ee.Reducer.percentile([25, 50, 75]),
'scale': escala,
'maxPixels':1e13,
'bestEffort': False
})
# Extraímos os valores do quantis
= quartiles_Con.getNumber('b1_p25')
con_25 = quartiles_Con.getNumber('b1_p50')
con_50 = quartiles_Con.getNumber('b1_p75') con_75
Classificamos a heterogeneidade da paisagem e conectividade local pelos quantis.
= (landscape_heterogeneity
class_div 1)
.where(landscape_heterogeneity.lt(div_25), 2)
.where(landscape_heterogeneity.gte(div_25).And(landscape_heterogeneity.lt(div_50)), 3)
.where(landscape_heterogeneity.gte(div_50).And(landscape_heterogeneity.lt(div_75)), 4))
.where(landscape_heterogeneity.gte(div_75).And(landscape_heterogeneity),
= (local_connectedness
class_con 10)
.where(local_connectedness.lt(con_25),20)
.where(local_connectedness.gte(con_25).And(local_connectedness.lt(con_50)), 30)
.where(local_connectedness.gte(con_50).And(local_connectedness.lt(con_75)),40)) .where(local_connectedness.gte(con_75).And(local_connectedness),
Somamos os mapas de heterogeneidade da paisagem e conectividade local classificados para atribuirmos as classes de resiliência.
= class_div.add(class_con) resilience
Exportamos o mapa de resiliência como um asset no Google Earth Engine.
# Exporte o raster de resiliência
# modifique o assetId para o do seu projeto
= "projects/ee-lucasljardim9/assets/resilience"
assetId
geemap.ee_export_image_to_asset(
resilience, ='resilience',
description=assetId,
assetId=regiao_box,
region=escala,
scale=1e13
maxPixels )
O dado pode ser visualizado abaixo:
# Paleta de cores
=(
sld_intervals '<RasterSymbolizer>' + \
'<ColorMap type="intervals" extended="False">' + \
'<ColorMapEntry color="#d3d3d3" quantity="11" label="11"/>' + \
'<ColorMapEntry color="#95bdd5" quantity="12" label="12"/>' + \
'<ColorMapEntry color="#52a6d7" quantity="13" label="13"/>' + \
'<ColorMapEntry color="#0088d9" quantity="14" label="14"/>' + \
'<ColorMapEntry color="#d5ce9c" quantity="21" label="21"/>' + \
'<ColorMapEntry color="#96b89e" quantity="22" label="22"/>' + \
'<ColorMapEntry color="#53a19f" quantity="23" label="23"/>' + \
'<ColorMapEntry color="#0085a1" quantity="24" label="24"/>' + \
'<ColorMapEntry color="#d7c759" quantity="31" label="31"/>' + \
'<ColorMapEntry color="#98b35a" quantity="32" label="32"/>' + \
'<ColorMapEntry color="#539c5b" quantity="33" label="33"/>' + \
'<ColorMapEntry color="#00815c" quantity="34" label="34"/>' + \
'<ColorMapEntry color="#d9be00" quantity="41" label="41"/>' + \
'<ColorMapEntry color="#9aaa00" quantity="42" label="42"/>' + \
'<ColorMapEntry color="#549500" quantity="43" label="43"/>' + \
'<ColorMapEntry color="#007b00" quantity="44" label="44"/>' + \
'</ColorMap>' + \
'</RasterSymbolizer>')
# Centralize o mapa
= geemap.Map(center=(-11.75, -51.52), zoom=4)
Map
# Importe os assets
= ee.Image("projects/ee-lucasljardim9/assets/resilience")
resilience
# Plote o mapa
Map.addLayer(resilience.sldStyle(sld_intervals))
Map