Mostrando postagens com marcador R. Mostrar todas as postagens
Mostrando postagens com marcador R. Mostrar todas as postagens

segunda-feira, junho 16, 2014

Perfil Longitudinal do Rio Principal Utilizando o GRASS e o R

Por definição, o perfil longitudinal de um rio apresenta a relação existente entre a variação altimétrica e o comprimento do mesmo, desde a nascente até a foz ou ponto de confluência.

Neste tutorial daremos continuidade ao post "Caracterização Morfométrica de Bacias Hidrográficas utilizando o GRASS" onde a partir do rio principal, será gerado o gráfico do perfil longitudinal do mesmo, utilizando o GRASS e o R.

Com o GRASS aberto no terminal, digite os comandos a seguir:

Como resultado, teremos o gráfico abaixo:


Referências:

sexta-feira, setembro 27, 2013

Krigagem Ordinária no R

O código abaixo exemplifica a utilização da Krigagem Ordinária utilizando o R dentro de uma sessão do GRASS. O intuito desta postagem é mostrar a codificação básica necessária para se chegar a um primeiro resultado e não será abordado aqui como realizar o ajuste do variograma.



Foram utilizados 300 pontos cotados para gerar a superfície mostrada na Figura 1.

Figura 1 - Resultado da Krigagem

quarta-feira, fevereiro 27, 2013

Georreferenciamento de dados vetoriais usando o R e o PostGIS

Quem já trabalhou com o ArcGIS provavelmente já deve ter utilizado a extensão Spatial Adjustement que permite o ajuste de bases vetoriais distintas a partir de pontos de controle (conhecido como georreferenciamento de vetores). Neste tutorial irei apresentar uma solução semelhante utilizando a função ST_Affine do PostGIS e o software estatístico R.

Na Figura 1 temos duas camadas vetoriais, a de cor vermelha teve problemas no seu georreferenciamento e será ajustada a partir da base de cor verde. Para isso, primeiro é necessário  importar os shapefiles para um banco de dados geográfico e depois visualizar as tabelas criadas no QGIS:

Figura 1 - Bases cadastrais levantadas por empresas diferentes
Devem ser criadadas duas camadas vetoriais do tipo ponto no BDG onde foram importados os shapefiles. Observa-se na Figura 2 que a localização dos pontos vermelhos correspondem aos pontos verdes (origem -> destino).

Figura 2 - Pontos de controle criados
Em  seguida, em uma sessão no R via terminal deve-se digitar os seguintes comandos:
#carregando a biblioteca e o driver do PostgreSQL
library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
#conexão com o BD
con <- dbConnect(drv, dbname="cadastro", 
                 user="marcello", 
                 pass="<minha_senha>")
#query 1 - coordenadas x,y dos pontos de destino
pts_ok <- data.matrix(dbGetQuery(con, 
                "SELECT ST_X(geom) AS x,
                 ST_Y(geom) AS y 
                 FROM pontos_ok"))
#query 2 - coordenadas dos pontos de origem
pts_err <- data.matrix(dbGetQuery(con, 
                "SELECT ST_X(geom) AS x,  
                 ST_Y(geom) AS y 
                 FROM pontos_errados"))
#regressão linear: modele pts_ok 
#como função estatística de pts_err 
parameters <- lm(pts_ok ~ pts_err)
#visualizando a matriz transposta dos coeficientes
t(coef(parameters))

Como resultado, teremos os coeficientes da equação que lineariza os pontos com as coordenadas erradas (pts_err) em função dos pontos de referência (pts_ok).
 (Intercept)  pts_errx  pts_erry
x   1312943.9 1.0138267 -0.143060
y   -163870.4 0.1389882  1.013313
Tais coeficientes são os parâmetros de entrada da função ST_Affine:
Formato de saída no R:
   | xoff a b |
   | yoff d e |

Formato de entrada no PostGIS:
 ST_Affine(geom, a, b, d, e, xoff, yoff)

Por último, são executadas as seguintes instruções no BDG:
--criação de uma cópia da tabela errada:
CREATE TABLE lotes_corrigidos AS
SELECT * FROM lotes_errados;

--em seguida o georreferenciamento dos lotes:
UPDATE lotes_corrigidos
SET geom =  
ST_Affine(geom, 
  1.0138267, -0.143060, 
  0.1389882, 1.013313, 
  1312943.9, -163870.4);

Finalizando, a Figura 3 mostra o resultado da base corrigida, o resultado foi satisfatório considerando a quantidade de pontos utilizada:

Figura 3 - Resultado do georreferenciamento (lotes_corrigidos)

segunda-feira, janeiro 14, 2013

R: Análise de dados pluviométricos com o hydroTSM

A biblioteca  HydroTSM - Hydrological time series plotting and extraction, amplia a versatilidade do  R no que diz respeito ao trabalho com dados hidrológicos, possibilitando diversas análises e criação de gráficos de séries temporais pluviométricas e fluviométricas.

Por exemplo, a partir de dados coletados diariamente de uma estação pluviométrica, podem ser gerados gráficos de linhas, boxplots e histogramas, em três diferentes escalas de tempo (diário, mensal e anual).

O exemplo abaixo foi aplicado para a série histórica do posto pluviométrico de També, na Bacia do Rio Gramame (PB), entre os anos de 1972 a 1987:

#carregando a biblioteca:
library(hydroTSM)
#carregando os dados do posto pluv.
# de també (bacia do Gramame)
tambe <- read.zoo(
  "/home/marcello/tambe.csv",
  format="%m/%d/%Y", #formato das datas no arquivo (mês/dia/ano)
  sep=";", #separador dos dados
  tz="GMT", #timezone
  header=TRUE
)
#Plotando o Gráfico
hydroplot(
  tambe, 
  var.type="Precipitation",
  pfreq = "dma" #dma = diário, mensal e anual
)

O resultado pode ser visto na Figura 1:  

Figura 1 - Saída do comando  hydroplot

Uma outra saída interessante é a criação de treemaps, como mostra o script abaixo, o resultado pode ser conferido na Figura 2:

#gerando dados mensais a partir das leituras diárias
dados_mensais <- daily2monthly(tambe, FUN=sum)
#criando a matriz com os dados mensais 
M.dados_mensais <- matrix(monthly, ncol=12, byrow=TRUE)
#colocando os "headers" na matriz
colnames(M.dados_mensais) <- month.abb
rownames(M.dados_mensais) <- unique(format(time(monthly), "%Y"))
#carregando a biblioteca lattice (necessário)
require(lattice)
#plotand os dados
matrixplot(
  M.dados_mensais,
  ColorRamp="Precipitation",
  main="Precipitação mensal no posto També (mm/mês)"
)

Figura 2 - Heatmap: Precipitação mensal/Ano

Sugestões de Leitura

domingo, dezembro 30, 2012

Acessando Dados do PostGIS no R

Banco de Dados Geográficos aliados a softwares estatísticos possibilitam as mais complexas análises, isso pode ser feito através da biblioteca rgdal no R. Dessa forma é possível fazer a leitura das tabelas espaciais do PostGIS neste ambiente, veja o exemplo:

1 - Para abrir uma sessão do R, abra o terminal e digite R (Figura 1):

Figura 1 - Sessão do R no Terminal

2 - Dentro da sessão, instale os pacotes abaixo: 
install.packages("sp")
install.packages("gstat")
install.packages("rgdal")

3 - Agora execute os comandos abaixo:

# carregando a biblioteca rgdal
library(rgdal)
# criando o objeto streams, a partir da leitura da tabela streams
# no banco de dados ghydroweb
streams <-readOGR("PG:dbname=ghydroweb", "streams")
# vendo os dados, através da plotagem do gráfico 
plot(streams, axes="true", col="blue")
# adicionando uma grade ao gráfico
grid()

4 - O resultado pode ser conferido na Figura 2:

Figura 2 - Gráfico dos dados da tabela streams


Fiquem de olho nas próximas publicações sobre o R! Um abraço e até o ano que vem :)