Resiliência da paisagem

Importando pacotes e inicializando geemap

import os
import ee
import geemap
import geemap.colormaps as cm
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

regiao = ee.FeatureCollection("projects/ee-lucasljardim9/assets/Biome")

# ModeloDigital de Elevação para extrair a resolução
DEM = ee.Image("MERIT/DEM/v1_0_3")

# 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_box = regiao.map(func_cmp).geometry().dissolve(**{'maxError': 1}).bounds()

# Resolução das análises
escala = DEM.projection().nominalScale()

Importamos os mapas de heterogeneidade da paisagem e conectividade local.

# modifique os endereços para os do seu projeto

local_connectedness = ee.Image("projects/ee-lucasljardim9/assets/local_connectedness")

landscape_heterogeneity = ee.Image("projects/ee-lucasljardim9/assets/landscape_heterogeneity")

Calculamos os quantis de 25, 50, 75% da heterogeneidade da paisagem e conectividade local.

# Heterogeneidade da paisagem
quartiles_Div = landscape_heterogeneity.reduceRegion(**{
    'reducer': ee.Reducer.percentile([25, 50, 75]), 
    'scale': escala,
    'maxPixels':1e13,
    'bestEffort': False
  })

# Extraímos os valores do quantis
div_25 = quartiles_Div.getNumber('z_p25')
div_50 = quartiles_Div.getNumber('z_p50')
div_75 = quartiles_Div.getNumber('z_p75')

# Conectividade local
quartiles_Con = local_connectedness.reduceRegion(**{
    'reducer': ee.Reducer.percentile([25, 50, 75]), 
    'scale': escala,
    'maxPixels':1e13,
    'bestEffort': False
  })

# Extraímos os valores do quantis
con_25 = quartiles_Con.getNumber('b1_p25')
con_50 = quartiles_Con.getNumber('b1_p50')
con_75 = quartiles_Con.getNumber('b1_p75')

Classificamos a heterogeneidade da paisagem e conectividade local pelos quantis.

class_div = (landscape_heterogeneity
             .where(landscape_heterogeneity.lt(div_25), 1)  
             .where(landscape_heterogeneity.gte(div_25).And(landscape_heterogeneity.lt(div_50)), 2)
             .where(landscape_heterogeneity.gte(div_50).And(landscape_heterogeneity.lt(div_75)), 3)
             .where(landscape_heterogeneity.gte(div_75).And(landscape_heterogeneity), 4))


class_con = (local_connectedness
             .where(local_connectedness.lt(con_25),10)
             .where(local_connectedness.gte(con_25).And(local_connectedness.lt(con_50)), 20)
             .where(local_connectedness.gte(con_50).And(local_connectedness.lt(con_75)),30)
             .where(local_connectedness.gte(con_75).And(local_connectedness), 40))

Somamos os mapas de heterogeneidade da paisagem e conectividade local classificados para atribuirmos as classes de resiliência.

resilience = class_div.add(class_con)

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

assetId = "projects/ee-lucasljardim9/assets/resilience"

geemap.ee_export_image_to_asset(
    resilience, 
    description='resilience', 
    assetId=assetId, 
    region=regiao_box, 
    scale=escala,
    maxPixels=1e13
)

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

Map = geemap.Map(center=(-11.75, -51.52), zoom=4)

# Importe os assets

resilience = ee.Image("projects/ee-lucasljardim9/assets/resilience")


# Plote o mapa

Map.addLayer(resilience.sldStyle(sld_intervals)) 


Map

Referências

Anderson, M. G., Barnett, Analie, M. Clark, A. O. Sheldon, e Prince, John. 2016. Resilient Sites for Terrestrial Conservation in Eastern North America. Página 186. The Nature Conservancy, Eastern Conservation Science.
Gorelick, N., M. Hancher, M. Dixon, S. Ilyushchenko, D. Thau, e R. Moore. 2017. Google Earth Engine: Planetary-scale geospatial analysis for everyone. Remote Sensing of Environment.
Python Software Foundation. 2023. Python Language Reference.
Wu, Q. 2020. geemap: A Python package for interactive mapping with Google Earth Engine. Journal of Open Source Software 5(), ,:2305.