====== Fernanda Saturni ====== {{:bie5782:01_curso_atual:alunos:trabalho_final:fernanda.saturni:531200_474716932540907_1107158746_x.jpg?200|}} 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)). {{:bie5782:01_curso_atual:alunos:trabalho_final:fernanda.saturni:mapas.jpg?200|}} __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). {{:bie5782:01_curso_atual:alunos:trabalho_final:fernanda.saturni:formula.jpg?200|}} 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. {{:bie5782:01_curso_atual:alunos:trabalho_final:fernanda.saturni: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... --- //[[adalardo@usp.br|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 {{:bie5782:01_curso_atual:alunos:trabalho_final:fernanda.saturni:3_mapas.rar|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:fernanda.saturni:2_mapas.rar|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:fernanda.saturni:sem_id.rar|}}