======Leandro Reverberi Tambosi====== {{:bie5782:01_curso_atual:alunos:trabalho_final:vieiralt:nasa_mapa_terra_satelite.jpg?200|}} **Doutorando em Ecologia** **LEPAC - Laboratório de Ecologia da Paisagem e Conservação Biológica** **Departamento de Ecologia - Instituto de Biociências - USP** Tenho especial interesse em trabalhos relacionados aos efeitos da fragmentação florestal, regeneração de florestas secundárias e restauração de áreas degradadas voltados para a conservação da biodiversidade em paisagens fragmentadas. [[.:exerc]] ==Proposta de Trabalho Final== **Plano A** **Definição do cronograma de restauração de propriedades rurais a partir de critérios de paisagem.** Contexto: Diversas propriedades agrícolas estão procurando se adequar a legislação ambiental para evitarem autuações e para terem acesso a créditos de organismos internacionais. Uma das ações mais freqüentes para a adequação ambiental de propriedades rurais é a restauração florestal de áreas irregularmente ocupadas como áreas de preservação permanente e áreas com baixa aptidão agrícola. As propriedades rurais de usinas produtoras de cana-de-açúcar geralmente apresentam grandes áreas irregulares como passivos ambientais e os projetos de restauração chegam a durar mais de 10 anos. Geralmente as ações de restauração são planejadas por propriedade, mas não levam em conta o benefício para a estrutura e configuração da paisagem que a restauração de cada propriedade proporcionará. Tendo em vista este contexto, será desenvolvida uma função no R que permitirá calcular o benefício que cada propriedade proporcionará à estrutura da paisagem. Esse cálculo será feito pela razão entre a área restaurada em cada propriedade e a área contínua formada após a restauração. Dessa forma pretende-se sugerir uma ordem de restauração que priorize as propriedades que trarão mais benefícios à estrutura da paisagem. Além disso, a função retornará um gráfico que possuirá o benefício à estrutura da paisagem em função do tempo de restauração, além de uma curva de benefício à estrutura da paisagem para restaurações das propriedades de forma aleatória. Dessa forma será possível comparar a estratégia adotada para definição do cronograma de restauração com cenários aleatórios. == Comentário == O plano A parece bom e o B tb. Ambos são bons desafios. Faltou definir melhor qual o formato dos dados de entrada, de saída e quais serão os procedimentos adotados na função. Sem isso fica difícil avaliar a viabilidade. Como já conversamos pessoalmente, parece-me que o plano A é factível, portanto defina qual o formato do objeto de entrada, saída e procedimentos na função. Outra ponto importante e definir se irá usar algum argumento para possibilitar mudanças de procedimentos ditada pelo usuário. --- //[[adalardo@usp.br|Alexandre Adalardo de Oliveira]] 2010/03/31 13:18// **Plano B** **Função para analisar a mudança de cobertura das terras** Criar uma função que trabalha com mapas de uso e cobertura das terras em diferentes datas, no formato matricial, para identificar as áreas em que ocorreram desmatamentos e regeneração natural na paisagem. A função ira gerar imagens de saída identificando os locais de desmatamento e regeneração natural, bem como a idade estimada dos fragmentos de vegetação natural remanescentes na paisagem. Além disso, será apresentado o resultado da quantificação das áreas de desmatamento, regeneração natural e remanescentes de vegetação na paisagem. ===== PÁGINA DE AJUDA DA FUNÇÃO ===== restore.strat package:unknown R Documentation Comparação do ganho de conectividade para diferentes cronogramas de restauração Description: A partir dos dados de mapeamento de uso das terras de um conjunto de propriedades rurais,verifica o ganho de conectividade dos fragmentos florestais durante a execução de projetos de restauração florestal e compara com possíveis situações sem planejamento para definição do cronograma de restauração. Usage: restore.strat(x) Arguments: x tabela de dados gerada a partir do mapeamento de uso e cobertura das propriedade A tabela de entrada de dados deve conter sete colunas de dados da seguinte forma: coluna 1: deve possuir a identificação da classe da área mapeada, sendo 1 para vegetação natural e 4 para áreas a serem restauradas coluna 2: identificador numérico e exclusivo para cada mancha mapeada, independente da classe da mancha coluna 3: área da mancha mapeada e identificada na coluna 2. O valor de área pode estar em qualquer unidade desde que a mesma unidade seja mantida para os outros campos da tabela que deverão conter valor de área coluna 4: identificador exclusivo para cada propriedade a ser restaurada coluna 5: área de cada mancha da coluna 2 localizada no interior da propriedade da coluna 4. A área deve estar na mesma unidade da coluna 3. coluna 6: área de uma mancha contínua formada após a restauração completa das propriedades. A área deve estar na mesma unidade das outras colunas com valores de área. coluna 7: identificados numérico e exclusivo para cada mancha contínua formada após a restauração das propriedades. Details: A tabela requerida para executar a função geralmente é obtida com cruzamento de diferentes planos de informação em ambiente SIG. Neste caso, a função foi planejada para rodar com dados gerados do cruzamento de limites de propriedades com mapeamentos de vegetação e áreas a serem restauradas e por fim com o cenário após a restauração total. Nesse caso ocorre uma divisão das manchas das manchas das diferentes camadas de informação geográfica e alguns valores aparecerão repetidos (por exemplo, fragmentos de vegetação que apresentam uma área no mapeamento e ao serem cruzados com os limites das propriedades eles poderão ser divididos e os valores de área e identificação desses fragmentos aparecerão uma vez em cada propriedade. A função compara o ganho de conectividade de fragmentos florestais em função da quantidade de área restaurada no conjunto de propriedade. Essa ganho de conectividade é medido para uma situação na qual se prioriza a restauração de manchas que resultarão em uma maior relação área conectada/área restaurada e uma outra forma de priorização na qual se prioriza a restauração de áreas que formarão maiores áreas contínuas de vegetação após a restauração. Nesse caso a ganho de conectivdade é calculado pela quantidade de vegetação previamente existente na área contínua formada após a restauração e subtrai-se o valor da maior mancha de vegetação pré-existente dentro da mesma área contínua após a restauração. Value: A função retorna os gráficos do ganho de conectividade em função da área de restauração executada e futuramente apresentará nos mesmos gráficos a comparação dessas duas estratégias com cenários de restauração das áreas de maneira aleatória. A função retornará as tabelas com a ordem indicada de restauração para as diferentes estratégias simuladas (ainda não implementado) Warning: A função apresenta os resultados de duas estratégias de restauração, mas é necessário conhecer as condições locais para adequar o cronograma à necessidade de restauração em função de outros fatores que não são considerados nas análises da estrutura da paisagem. Note: A função deverá passar por modificações frequentes para incorporar outras classes de cobertura à serem restauradas, bem como outras estratégias de definição de cronograma. Sugestões de desenvolvimento e notificações de problemas encontrados serão muito bem recebidas pelo autor. Author(s): Leandro Reverberi Tambosi letambosi at hotmail.com References: Por favor, visite os sites dos laboratórios para lista de publicações e trabalhos em andamentos http://eco.ib.usp.br/lepac/paisagem.htm http://lerf.esalq.usp.br See Also: ~~objects to See Also as 'help', ~~~ Examples: restore.strat(app) ==== CÓDIGO DA FUNÇÃO ==== restore.strat <- function(x) { x=dados rest.id<-unique(dados[,7]) #cria o vetor com os id dos frags a serem restaurados final.area<-c(rep(NA,length(rest.id))) #cria o vetor com a area final continua apos a restauracao rest.area<-c(rep(NA,length(rest.id))) #cria a area a ser restaurada forest.area<-c(rep(NA,length(rest.id))) #cria a area de floresta dentro da area que sera restaurada maxforest.area<-c(rep(NA,length(rest.id))) # cria a maior area de floresta ja existente na area a ser restaurada connected.area<-c(rep(NA,length(rest.id))) # cria o vetor para o calculo da area que sera conectada( fragmentos ja existentes na area a ser restaurada - maio mancha de vegetacao ja existente pct.connected.area<-c(rep(NA, length(rest.id))) # porcentagem de area que sera conectada durante a restauracao restaurada pct.restored.area<-c(rep(NA,length(rest.id))) # porcentagem da area total a ser restaurada con.rest.ratio<-c(rep(NA,length(rest.id))) #relacao ganho de conectividade por area restaurada for (i in 1:length(rest.id)) { final.area[i]<-tapply(dados[,6],dados[,7]==rest.id[i],max)[2] #calcula area final rest.area[i]<-tapply(dados[,5],dados[,1]==4&dados[,7]==rest.id[i],sum)[2] ##verificar se o valor de area a restaurar vai ficar 4 forest.area[i]<-tapply(dados[,5],dados[,1]==1&dados[,7]==rest.id[i],sum)[2] #calculo de area de floresta maxforest.area[i]<-tapply(dados[,3],dados[,1]==1&dados[,7]==rest.id[i],max)[2] #calculo da maior mancha de floresta connected.area[i]<-tapply(dados[,5],dados[,1]==1&dados[,7]==rest.id[i],sum)[2]- maxforest.area[i] #calculo de area conectada rest.area[is.na(rest.area)]<- 0 #remover os 0s e NAs forest.area[is.na(forest.area)]<-0 maxforest.area[is.na(maxforest.area)]<-0 connected.area[is.na(connected.area)]<-0 pct.connected.area[i]<-(connected.area[i]/sum(connected.area))*100 #calculo da porcentagem de area conectada pct.connected.area[is.nan(pct.connected.area)]<-0 pct.restored.area[i]<-(rest.area[i]/sum(rest.area))*100 #calculo da porcentagem da area conectada con.rest.ratio[i]<-connected.area[i]/rest.area[i] #calculo da razao entre conectividade e area restaurada con.rest.ratio[is.na(con.rest.ratio)]<-0 pct.connected.area<-round(pct.connected.area,2) #arredondando os valores para menos casas decimais pct.restored.area<-round(pct.restored.area,2) con.rest.ratio<- round(con.rest.ratio,3) } rest.table<-data.frame(final.area, rest.area, forest.area, maxforest.area, connected.area, pct.connected.area, pct.restored.area, con.rest.ratio) #criou o data frame com os dados do cronograma de restauracao ord.rest.table<-order(rest.table[,8], decreasing=TRUE) #ordena a restauracao por maior ganho de conectividade/area restaurada ord.large.area<-order(rest.table[,1], decreasing=TRUE) #ordena a restauracao por tamanho da area conectada a ser formada ord.pct.restored<-rep(NA, length(ord.rest.table)) ord.pct.connected<-rep(NA, length(ord.rest.table)) ord.pct.restored.large<-rep(NA, length(ord.rest.table)) ord.pct.connected.large<-rep(NA, length(ord.rest.table)) ord.pct.restored[1]<-rest.table[ord.rest.table[1],7] #gera o primeiro valor dos valores acumulados de ganho e de area restaurada ord.pct.connected[1]<-rest.table[ord.rest.table[1],6] ord.pct.restored.large[1]<-rest.table[ord.large.area[1],7] #idem comentario acima, mas para cronograma baseado por tamanho da area conectada ord.pct.connected.large[1]<-rest.table[ord.large.area[1],6] for(j in 2:length(ord.rest.table)) { k=j-1 ord.pct.restored[j]<-rest.table[ord.rest.table[j],7] + ord.pct.restored[k] #gera os outros valores de ganho acumulado >> nao esta gerando valores acumulados e esta atrapalhando todo o resto ord.pct.connected[j]<-rest.table[ord.rest.table[j],6] + ord.pct.connected[k] ord.pct.restored.large[j]<-rest.table[ord.large.area[j],7] + ord.pct.restored.large[k] ord.pct.connected.large[j]<-rest.table[ord.large.area[j],6] + ord.pct.connected.large[k] } graf.ord.rest<-data.frame(ord.pct.connected,ord.pct.restored) #junta os dados num dataframe para fazer o grafico graf.ord.large<-data.frame(ord.pct.restored.large,ord.pct.connected.large) #junta a outra ordenacao em um dataframe para fazer o grafico par(mfrow=c(2,1)) plot(ord.pct.connected~ord.pct.restored, data= graf.ord.rest, type="b", main="Cronograma baseado na relação \n ganho de conectividade X área restaurada",ylab= "Conectividade alcançada", xlab="Área restaurada", col="black") plot(ord.pct.connected.large~ord.pct.restored.large, type="b", data=graf.ord.large, main= "Cronograma definido pela priorização de \n formação de maiores áreas contínuas", ylab="Conectividade alcançada", xlab="Área restaurada", col="red") par(mfrow=c(1,1)) #gerar 1000 cronogramas de restauracao aleatoria #sim=1000 aleat<- list() for (l in 1:1000) { sample(rest.id, length(rest.id), replace=FALSE)->a ord.restored.a<-rep(NA, length(a)) ord.connected.a<-rep(NA, length(a)) ord.restored.a[1]<-rest.table[a[1],7] #gera o primeiro valor de porcentgem de area restaurada para o ciclo aleatorio ord.connected.a[1]<-rest.table[a[1],6] #gera o primeiro valor de porcentagem de conexao para o ciclo aleatorio for(m in 2:length(ord.rest.table)) { n=m-1 ord.restored.a[m]<-rest.table[a[m],7] + ord.restored.a[n] #cria do segundo ao elemento# esta parte não esta funcionando pois nao deixa inserir os valores no vetor ord.connected.a[m]<-rest.table[a[m],6] + ord.connected.a[n] # cria do 2 ao n elemento# idem obs acima ord.restored.a[is.na(ord.restored.a)]<-0 ord.connected.a[is.na(ord.connected.a)]<-0 } ord.aleat<-data.frame(ord.connected.a, ord.restored.a) ord.aleat->aleat[[l]] a<-c() } #Gerar a curva para o crítico de 95%. Ainda não consegui fazer isso #É preciso gerar intervalos de quantidade de restauração por exemplo 2,5% da restauração executada, 5%, 7.5%..100% # cada um desses intervalos terá cerca de 1000 valores de conectividade obtidos pelo cronograma ao acaso e a partir deles poderemos #estimar o p de 95% de ganho de conectividade para um cronograma de restauração aleatorio #pts<-seq(from=2.5, to=100, by=2.5) #for (o in 1:1000) # { # for (p in 1:length(pts)) # { # z<-aleat[[o]][2]<=pts[p] } **Arquivo do Help d função **{{:bie5782:01_curso_atual:alunos:trabalho_final:letambosi:help_restore_strat.txt|}} **Arquivo da função**{{:bie5782:01_curso_atual:alunos:trabalho_final:letambosi:restore_strat.r|restore.strat.R}} **Arquivo de dados para rodar a função**{{:bie5782:01_curso_atual:alunos:trabalho_final:letambosi:app.csv|app.csv}}