Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2013:alunos:trabalho_final:fernanda.saturni:start

Fernanda Saturni

531200_474716932540907_1107158746_x.jpg

Mestranda em Ecologia, IB USP

exec

Projeto final

Introdução

O tema da minha pesquisa no mestrado será “os efeitos da estrutura da paisagem na efetividade da polinização em plantações de café”. Uma referência para minha dissertação é o trabalho de Lonsdorf et al (2009), Modelling pollination services across agricultural landscapes (anexo). Partindo desse artigo, apresento duas opções para o trabalho final da disciplina R.

Opção A

Entradas

Dados de cobertura florestal, diversidade de polinizadores e serviço de polinização das 15 paisagens a serem estudadas.

Função

Função que crie 3 mapas da região estudada com ranks de cobertura florestal (gradação em porcentagem de cobertura) diversidade de polinizadores (gradação em alta, média e baixa) e serviço de polinização (gradação em alta, média e baixa).

Saídas

3 mapas que permitam a comparação espacial das variáveis citadas acima. (ver exemplo dos mapas abaixo extraídos do trabalho de Lonsdorf et al (2009)).

mapas.jpg

Opção B

Entradas

Dados de diversidade de polinizadores e serviço de polinização das 15 paisagens a serem estudadas.

Função

Função para calcular a “pontuação” de uma fazenda para o serviço de polinização (Po), seguindo o modelo proposto por Lonsdorf et al (2009).

formula.jpg

Onde Cos é 1 se a cultura necessita de polinizadores e 0 se não. Ɛs representa a abundância de polinizadores na paisagem s, em relação a outras espécies de polinizadores ou guildas.

Saídas

Valor de Po nas 15 paisagens a serem estudadas.

lonsdorf_et_al_2009.pdf

Comentários

Oi Fernanda!

O plano A parece bem legal, mas faltou detalhar um pouco melhor como são seus dados de entrada. Você já sabe qual pacote vai usar para plotar os mapas? Dá uma olhada no ggplot2… ele faz coisas bem legais!

O plano B é bem simples. Talvez dê pra fazer os 2 :) mas dê prioridade para o A!

Ale

Concordo! Vai pelo plano A, há muitos pacotes para auxiliar em gráficos… — Alexandre Adalardo de Oliveira 2013/03/24 22:01

Minha função

mapasSE<- function(shapefile)
{
  require("ggplot2")
  require("maptools")
  require("RColorBrewer")
  require("gridExtra")
  
  SE=readShapePoly(shapefile) # Lê dados de um shapefile e transforma em um data.frame
  
  poly_coords<- function(shapefile)
  {
    if (nrow(data.frame(shapefile$ID))< 1) ##Se não tem dados para ID,
    {
      stop ("Coloque dados para ID no seu shape_Identificação do polígono") ##pára a função e imprime essa mensagem na tela
    }
    if (nrow(data.frame(shapefile$Cobertura))< 1) ##Se não tem dados para Cobertura,
    {
      print ("Coloque dados para Cobertura no seu shape_% de cobertura florestal") ##imprime essa mensagem na tela
    }
    if (nrow(data.frame(shapefile$Polin))< 1) ##Se não tem dados para Polin,
    {
      print ("Coloque dados para Polin no seu shape_% de aumento da provisão do SE") ##imprime essa mensagem na tela
    }
    else ##Se tem esses dados, continua com a função poly_coords que organiza informações em data.frame inserindo dados para coordenadas x e y de cada ponto dos polígonos
    {
      Order<-0 
      YX3<- as.numeric("XX", "XX", "XX", "XX") 
      num_polys<- nrow(shapefile@data)+1
      YX3<- as.numeric("XX", "XX", "XX")
      curr_poly<- shapefile@data[1,]
      curr_poly_start_row <- 1
      poly_old= F
      for(curr_row in curr_poly_start_row:num_polys)
      {
        curr_poly_row<-shapefile@data[curr_row,]
        curr_poly_end_row = curr_row - 1  
        Poly_n= shapefile@data[curr_poly_start_row:curr_poly_end_row,]
        curr_poly_start_row = curr_row
        Poly_Name<-as.vector(Poly_n$ID)  
        Poly<-shapefile[shapefile$ID==Poly_Name,]
        PolyCoords<-lapply(slot(Poly, "polygons"), function(x) lapply(slot(x,"Polygons"), function(y) slot(y, "coords"))) 
        PolyCoordsY<-PolyCoords[[1]][[1]][,1]
        PolyCoordsX<-PolyCoords[[1]][[1]][,2]
        Order<- 1:nrow(data.frame(PolyCoordsX)) + max(Order)
        if (poly_old != Poly_n$ID)
        {
          YX1<- data.frame(Poly_Name, Order, PolyCoordsY, PolyCoordsX) 
          YX2<-rbind(YX3,YX1) 
          YX3<-YX2
        }
        poly_old<-Poly_n$ID
      }
      join<-merge(YX3, shapefile@data, by.x="Poly_Name", by.y= "ID", all=T) 
      join[order(join$Order),][1:nrow(join)-1,]
    }
  } 
  
  SE_geom<-poly_coords(SE) ##roda a função poly_coords para um shape
  
  if (nrow(data.frame(SE_geom$Diversid))<1) ##Se não tem dados para Diversid,
  {
    print ("Você terá como resultado 2 mapas e as informações abaixo") ##imprime essa mensagem na tela
    
    mapacober=qplot(PolyCoordsY, PolyCoordsX, data=SE_geom, group=Poly_Name , fill= SE_geom[,6], geom="polygon",xlab="Coord x",ylab="Coord y",main="Cobertura Florestal")
    mapacobera=mapacober + labs(fill="% Cobertura Florestal") ##cria mapa de Cobertura Florestal
    
    mapaSE=qplot(PolyCoordsY, PolyCoordsX, data=SE_geom, group=Poly_Name , fill= SE_geom[,7], geom="polygon",xlab="Coord x",ylab="Coord y",main="Provisão de Serviço Ecossistêmico")
    mapaSEa=mapaSE + labs(fill="% Aumento SE") ##cria mapa de SE
    
    grid.arrange(mapacobera, mapaSEa, ncol=2, main = "Relação entre Cobertura Florestal e Provisão de SE") ##plota dois mapas 
    
    tabela=as.data.frame(SE)
    return(tabela) ##retorna data.frame com dados do shape
  }
  else ##Se não...
  {
    print ("Você terá como resultado 3 mapas e as informações abaixo") ##imprime essa mensagem na tela
    
    mapacober=qplot(PolyCoordsY, PolyCoordsX, data=SE_geom, group=Poly_Name , fill= SE_geom[,6], geom="polygon",xlab="Coord x",ylab="Coord y",main="Cobertura Florestal")
    mapacobera=mapacober + labs(fill="% Cobertura Florestal") ##cria mapa de Cobertura Florestal
    
    mapaSE=qplot(PolyCoordsY, PolyCoordsX, data=SE_geom, group=Poly_Name , fill= SE_geom[,7], geom="polygon",xlab="Coord x",ylab="Coord y",main="Provisão de Serviço Ecossistêmico")
    mapaSEa=mapaSE + labs(fill="% Aumento SE") ##cria mapa de SE
    
    mapadiv=qplot(PolyCoordsY, PolyCoordsX, data=SE_geom, group=Poly_Name , fill= SE_geom[,8], geom="polygon",xlab="Coord x",ylab="Coord y",main="Diversidade do grupo prestador de SE")
    mapadiva=mapadiv + labs(fill="Índice de diversidade") ##cria mapa de diversidade  
    
    grid.arrange(mapacobera, mapadiva, mapaSEa, ncol=3, main = "Relação entre Cobertura Florestal, Diversidade e Provisão de SE") ##plota três mapas 
    
    tabela=as.data.frame(SE)
    return(tabela) ##retorna data.frame com dados do shape
  }
}

Help da minha função

mapasSE                 package: nenhum	                R Documentation

Cria mapas para análise de provisão de serviços ecossistêmicos

Description
A função mapasSE lê dados de arquivos no formato shape (.shp) que contenham informações sobre provisão de serviços ecossistêmicos, cobertura florestal e índice de diversidade do grupo provedor do serviço (opcional) e cria mapas para análise visual das informações. Além dos mapas, a função retorna um data.frame com as informações inseridas. 

Usage
mapasSE(shapefile)

Arguments
shapefile	Arquivo.shp contendo dados para: Shape*(polígonos), Nome (nome do polígono), Cobertura (% de cobertura florestal do polígono), Polin (% de incremento de provisão do serviço ecossistêmico na presença do grupo provedor do serviço), ID (Identificação de um polígono. Exemplos:00AA, 00AB, etc...) e Diversid (Índice de diversidade do grupo provedor do serviço)

Details
A função mapasSE requer os pacotes “ggplot2”, “maptools”, “RColorBrewer” e “gridExtra”. 
Caso não sejam inseridos dados para ID, Cobertura ou Polin no shape, a função não executará. Caso não sejam inseridos dados para Diversid, a função executará, mas apresentará somente 2 mapas. 

Value
Caso sejam inseridos dados para Cobertura e Polin, retorna data.frame com as informações inseridas e 2 mapas: rank de cobertura florestal (gradação em porcentagem de cobertura) e serviço ecossistêmico (gradação em porcentagem).
Caso sejam inseridos dados para Cobertura, Polin e Diversid, retorna data.frame com as informações inseridas e 3 mapas: rank de cobertura florestal (gradação em porcentagem de cobertura), diversidade de grupo provedor do serviço (índice de diversidade) e serviço ecossistêmico (gradação em porcentagem).

Author(s)
Fernanda Saturni
fernandasaturni@gmail.com

Example
mapasSE("municipios.shp")

Arquivos para executar minha função (exemplos)

Não consigo anexar arquivos no formato .shp aqui. Se acharem interessante, posso passar por email os shapes que usei para montar a função.

Arquivos 24.04

Pessoal, descobri que consigo anexar os arquivos zipados. Segue então alguns shapes para vcs rodarem a função. Bjs, Fe

3_mapas.rar 2_mapas.rar sem_id.rar

05_curso_antigo/r2013/alunos/trabalho_final/fernanda.saturni/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)