====== Liliana ====== Liliana Piatti Doutoranda em Ecologia no IB/USP [[http://lattes.cnpq.br/9114006685473486]] Projeto de Pesquisa: Biogeografia e diversidade filogenética e morfológica das serpentes do Pantanal. Cursarei a disciplina com a intenção de me familiarizar com o ambiente R e sua linguagem, e dominar as funções básicas necessárias para analisar dados ecológicos. Acredito que com um bom aproveitamento do curso estarei preparada para, no R,aplicar as análises necessárias aos meus dados, explorando-os de maneira correta e apresentando meus resultados de forma clara e objetiva. ===== Meus Exercícios ===== Exercícios 1 [[.:exec]] Exercícios 4 {{:bie5782:01_curso_atual:alunos:trabalho_final:lilianapiatti:ex_4-2_a_4-5.r|}} Exercícios 5 {{:bie5782:01_curso_atual:alunos:trabalho_final:lilianapiatti:exer5.r|}} Exercícios 6 {{:bie5782:01_curso_atual:alunos:trabalho_final:lilianapiatti:ex6_1-2.r|}} Exercício 7.2 {{:bie5782:01_curso_atual:alunos:trabalho_final:lilianapiatti:ex7_2.r|}} Exercícios 8.2 {{:bie5782:01_curso_atual:alunos:trabalho_final:lilianapiatti:ex8_2.r|}} ===== Trabalho Final ===== ==== Plano A ==== Uma função em que as coordenadas de um registro fossem trasnformadas em uma vetor fator que dissesse se a coordenada está dentro ou fora de uma dada área de interesse. Os dados de entrada seriam duas colunas referentes as coordenadas(latitude e longitude) e um aquivo com um shape que delimita qual a área de interesse. O resultado seria uma coluna da classe fator, dizendo se as coordenadas de entrada estão dentro ou fora dessa área. Essa proposta envolve manipulações de mapas no R, o que eu não tenho a mínima ideia de como fazer. Estou com a esperança de que o conhecimento exigido seja básico, que eu consiga obter através dos helps dos pacotes exigidos. ==== Plano B ==== Uma função que corrigisse erros de digitação de nomes científicos de planilha de dados. Atualmente é bem comum planilhas com milhares de linhas, construídas por várias pessoas, e os erros de digitação são comuns. A correção automática, com base em um arquivo com os nomes corretos retirados de uma fonte confiável, pode poupar um bom tempo na manipulação dos dados. Os arquivos de entrada seriam o vetor contendo o nome das espécies retirado da planilha original (o que deve ser corrigido) e um vetor com o nome das espécies escrito de maneira correta, que pode ser retirado dos sites das sociedades oficiais dos grupos, por exemplo. o output da função seria o vetor de espécies da planilha original com todos os nomes conferidos e escritos na grafia correta. ===== Comentário ===== Liliana, sua proposta A parece interessante, porém a saída dela está um tanto simples. Nesse primeiro momento tenho duas sugestões: 1- Não conheço muito sobre como lidar com shapes em mapas, mas creio que para um mesmo conjunto de pontos de um shape, você possa fazer diferentes interpolações para definir a área. Seria interessante se você colocasse um argumento que você pudesse escolher o tipo de interpolação, pois isso vai mudar o shape e indivíduos que estão próximos às bordas podem estar dentro ou fora dependendo de como essa interpolação é feita. 2- Você pode tentar plotar um gráfico com o shape (se você tiver as coordenadas, pode inclusive plotar em um mapa - ver a função da monitora Tauana em 2012), com pontos representando as espécies tanto fora quanto dentro desses limites. Gustavo Burin ====== Função Final ====== Função construída a partir do **plano A **e comentários. Função que transforma coordenadas de ocorrências de espécies em um vetor fator que diz se os registros estão dentro ou fora de uma dada área de interesse (uma reserva biológica, por exemplo). **HELP** inside pacote:nenhum R Documentation ~~ Verifica se uma coordenada geográgica está localizada dentro de uma área de interesse ~~ Descrição: Esta função retorna um data frame contendo um vetor lógico, indicando se as coordenadas geográficas estão dentro de uma área de interesse, delimitada por um arquivo .kml. É dado também um plot, para que a área e a localização dos pontos possa ser visualizada. Uso: inside(x, y). Argumentos: x data frame ou matriz numérica com as coordenadas geográficas. y nome do arquivo kml, onde a área de interesse está delimitada. Detalhes: É necessário que estejam instalados os pacotes calibrate, gplots, maptools e rgeos. Os dados de entrada devem estar organizados de forma que a primeira coluna contenha os valores de longitude e a segunda de latitude, dadas em graus decimais. Valor: A função retorna um data frame contendo um vetor lógico, com TRUE nas linhas referente às coordenadas que estão dentro da área de interesse. A ordem das cordenadas de entrada é mantida no vetor retornado. São plotadas a área de interesse e todas as coordenadas, com números que correspondem à linha na qual se encontram na matriz de entrada. Warning: Para que todos os pontos possa ser visualizados no plot, pontos sobrepostos são realocados e mostrados lado a lado. Por isso o plot deve ser usado apenas para a vizualização, devendo-se utilizar as coordenadas originais para outras análises. Autora: Liliana Piatti See Also: getKMLcoordinates, SpatialPoints Exemplo: #Baixe o arquivo "registros.csv" e "ufms.kml" e salve-os no diretório de trabalho que será usado no R. reg<-read.csv("registros.csv", header=T, sep=";") #Registros de ocorrências de serpentes em Campo Grande, disponibilizados pela Coleão Zoológica da UFMS. #Quais registros estão dentro da reserva da UFMS? inside(reg[,4:5],"ufms.kml") **CÓDIGO DA FUNÇÃO** inside<- function(x,y){ library(rgeos) library(maptools) library(calibrate) library(gplots) perimetro<-getKMLcoordinates(y) areacheia<-gConvexHull(SpatialPoints(perimetro[[1]][,1:2])) pontos<-SpatialPoints(x) result<-data.frame(rep(NA,dim(x)[1])) for(i in 1:dim(x)[1]){ result[i,1]<-gContains(areacheia,pontos[i,]) } names(result)<-"Inside" s<-summary(pontos) eixoy<-c(s[[2]][2,1],s[[2]][2,2],min(perimetro[[1]][,2]),max(perimetro[[1]][,2])) eixox<-c(s[[2]][1,1],s[[2]][1,2],min(perimetro[[1]][,1]),max(perimetro[[1]][,1])) no<-(space(x[,1], x[,2])) plot(areacheia, col="gray",xlab=" ", ylab=" ", bty="n", pch=19, ylim=c(min(eixoy),max(eixoy)),xlim=c(min(eixox),max(eixox))) points(space(x[,1], x[,2]), pch=19, col="gray16") textxy(no$x,no$y,labs=rownames(x),cx = 0.8, dcol = "black") return(result) } **Arquivos** Dados de registros de espécies: {{:bie5782:01_curso_atual:alunos:trabalho_final:lilianapiatti:registros.csv|}} Shape da área de interesse: https://dl.dropboxusercontent.com/u/65568550/UFMS.kml