dataframe
contendo 3 colunas nomeadas como: “graus”, “min”, “seg”.
Verificando os parâmetros
- a tabela possui uma coluna chamada “graus”? Se não, escreve: “a tabela não possui uma coluna chamada “graus”
- a tabela possui uma coluna chamada “min”? Se não, escreve: “a tabela não possui uma coluna chamada “min”
- a tabela possui uma coluna chamada “seg”? Se não, escreve: “a tabela não possui uma coluna chamada “seg”
- cria um objeto que exclui os valores NA do cálculo
- cria um objeto com a conversão da coordenada GMS em graus decimais
- cria um
dataframe
com as coordenadas em GMS e as coordenadas em graus
dataframe
com as três colunas contendo os “graus”, “min” e “seg” e uma quarta coluna contendo as coordenadas em graus decimais calculadas.
Função dist.costa()
===== Função "dist.costa"===== Autora: Alessandra Rocha #Carregando os pacotes necessários# library(sf) library(tidyverse) library(mapview) #criando os objetos x e y# x<-st_read("drive/pasta do computador/arquivo.shp") y<-st_read("drive/pasta do computador/arquivo_de_coordenadas.shp") #####Função##### dist.costa<-function(x, #objeto contendo a camada vetorial linear de referência y, #objeto contendo a camada de coordenadas geográficas nboot=1000 #número de simulações, por padrão será 1000 valores simulados ) { #verificando parâmetros# if(class(x)!= c("sf", "data.frame") && class(y)!=c("sf", "data.frame")) {stop("o vetor de dados não é da classe sf")} #verificando a classe dos objetos x e y que devem ser "sf" "data.frame" if(nboot<=0|as.integer(nboot)!=(nboot)) #verifica se o número de simulações indicado é um número inteiro maior que zero { nboot=1000 warning("nboot deve ser um número inteiro e maior que zero, função rodou com o nboot padrão de 1000 simulações") #se o número em nboot não for inteiro e maior que zero, a função rodará com o número padrão de 1000 valores e mostrará essa mensagem de 'warning' } sn<-readline("quer visualizar o mapa? (s/n)") #pergunta ao usuário, no console, se quer visualizar o mapa ou não if(sn=="s")#se o usuário quiser visualizar o mapa, deverá digitar a letra "s" no console e a função irá prosseguir { #início da função# w<-mapview(x, color="grey")+y} #gera o mapa x%>% st_transform(st_crs(5641)) #modifica o Datum do objeto x para UTM,sistema de coordenadas planas, para realizar o cálculo das distâncias em metros y%>% st_transform(st_crs(5641))#modifica o Datum do objeto y para UTM, sistema de coordenadas planas, para realizar o cálculo das distâncias em metros dist<- as.data.frame(st_distance(y,x)) #calcula as distâncias e cria um objeto com o data.frame das distâncias tab<-data.frame(y) #cria um data.frame da camada vetorial y (coordenadas geográficas) tab.dist<-data.frame(tab,dist) #junta o data.frame com as distâncias e o data.frame com as coordenadas media.dist<-mean(tab.dist$st_distance.y..x.) #calcula a média das distâncias calculadas #preparando para o ciclo for() - bootstrap# nboot=nboot #atribui o objeto nboot com os valor do padrão ou o valor que o usuário escolher para a simulação do bootstrap boot.sim<-rep(NA, nboot) #cria um objeto com NAs, de mesmo comprimento que o nboot boot.sim[1]<-media.dist #coloca na posição 1 do objeto de valores NA, a média das distâncias calculada for(i in 2:nboot){ #cria um ciclo for() que começa na posição 2, pois na posição 1 já está a média das distâncias com comprimento nboot boot.sim[i]<-mean(sample(tab.dist$st_distance.y..x., replace=TRUE))#faz uma amostragem com reposição dos valores de distância encontrados e calcula a média desses valores } z<-hist(boot.sim) #gera um histograma com os valores de distância média simulados abline(v=boot.sim[1], lty=2, col="red") #coloca uma linha tracejada vermelha no histograma, indicando a média da distância dos valores reais q<-quantile(boot.sim, prob=c(0.05, 0.95)) #calcula os quantis para o intervalo de confiança de 95% #preparando os resultados da função# if(sn=="s"){ #se quiser o mapa final<-list(tab.dist,z,q, w)} #o objeto 'final' do return conterá o mapa if(sn=="n"){ #se não quiser o mapa final<-list(tab.dist,z,q)} #o objeto 'final' do return não retornará o mapa return(final) #apresenta os resultados do cálculo de distâncias, o histograma de valores simulados com a média da distância de valores calculados e o valor de média dos dados, os quantis do intervalo de confiança do bootstrap e um mapa caso o usuário queira visualizar o mapa. ####fim da função#### }Help função dist.costa
dist.costa package:unkown R Documentation Cálculo da distância da costa a partir de coordenadas geográficas de interesse Description: Função para calcular distâncias euclideanas entre coordenadas geográficas e um shapefile (camada vetorial linear) de referência. As distânca são calculadas em metros. A função fornece a opção de um mapa, representando methods/html/as.html">as coordenadas e o shapefile de referência. O mapa possui opções de 'layout' no menu do canto esquerdo. Um dataframe contendo methods/html/as.html">as distâncias calculadas é fornecido, assim como a média das distâncias e um histograma contendo valores simulados e o calculo do intervalo de confiança de 95%. A função é especialmente útil para usuários que desejam conhecer distâncias lineares, por exemplo, de pontos (coordenadas geográficas), tomando-se como referência uma linha de costa. Usage: dist.costa (x,y, nboot=1000) Arguments: x : objeto da classe "sf" "data.frame" y : objeto da classe "sf" "data.frame" nboot=1000: número de simulação para o bootstrap com o padrão de 1000 valores simulados. Details: Para usar esta função, os pacotes "sf", "tidyverse" e "mapview" devem estar instalados e carregados. Para ler o shapefile, pode-se usar a função st_read (e.g. Examples). A ordem das variáveis faz diferença, sendo a primeira variável(x) o shapefile de referência para o cálculo da distância e a segunda variável (y), o shapefile contendo methods/html/as.html">as coordenadas geográficas de interesse. O shapefile de referência (x) deve ser uma camada vetorial linear. A função funciona melhor na região da América Latina pois o código EPSG usado é o 5641. É possível optar pela visualização do mapa ou não. Momentos após o usuário rodar a função, virá a pergunta sobre a visualização do mapa, que deve ser respondida com a letra 's' se deseja visualizar o mapa e com a letra 'n' se não deseja visualizar o mapa. A função retorna a distância média, representada por uma linha tracejada, dentro de um histograma de 'nboot' valores médios simulados e o intervalo de confiança de 95%, calculados por bootstrap. Value: Mapa de visualização contendo a camada com methods/html/as.html">as coordenadas geográficas de interesse e o shapefile de referência. Dataframe contendo methods/html/as.html">as distâncias calculadas em unidades métricas. Histograma contendo a indicação (linha tracejada) da média dos valores das distâncias calculadas, os valores médios simulados de distância e o intervalo de confiança destes valores, calculados por bootstrap. Warning: Se x e y não forem arquivos da classe "sf" "data.frame" a função não é executada. O mapa só é gerado se o usuário quiser, clicando a letra "s" depois de se executar a função, no console. Se o valor escolhido para o nboot não for um número inteiro maior que zero, a função rodará com o número de simulações do padrão da função (1000 valores). A função funciona melhor e tem bastante utilidade quando se usa uma camada vetorial linear como shapefile de referência. Author(s): Alessandra Rocha email: emaildaalessandra@gmail.com Examples linha_costa<-st_read("C:/Users/R/linha_rs.shp") pontos_n<-st_read("C:/Users/R/linha_rs.shp") distancias<-dist.costa(linha_costa, pontos_n, nboot=2000) #se quiser 2000 valores simulados no bootstrap distancias.1<-dista.costa(linha_costa, pontos_n) #se quer utilizar o número de simulações do padrão (1000 valores)Link de arquivos para se utilizar como exemplo no help da função 'dist.costa': arquivos_exemplos_r.rar
Taio
- Eu não sei o que é um shapefile nem um código EPSG 5641. Sugiro que você coloque um quadrinho explicativo sobre os conceitos específicos de sua área. Com um quadrinho explicativo, a sua função poderia ser útil para pessoas de outras áreas.
- Eu creio que sua proposta A pode resultar em uma função legal se ela tiver mais opções para o usuário. Por exemplo: e se o usuário querer um mapa com paletas de cores X ou Y? Ou um mapa com as escalas Z? Ou usar um shapefile dos formatos X, Y ou Z (não sei se existe)?
- Reveja a página http://ecologia.ib.usp.br/bie5782/doku.php?id=01_curso_atual:alunos:trabalho_final:start. Veja que umas das principais ideias é que sua função seja uma tarefa geral ou aplicável recorrentemente e que seja uma tarefa factível, mas que ao mesmo tempo seja um desafio estimulante e que te tire da zona de conforto! .
Resposta Alessandra Rocha