Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
|
software:art:curso:chuvapr [2007/12/12 00:34] paulojus |
software:art:curso:chuvapr [2007/12/12 00:56] (atual) paulojus |
||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| ====== Exemplo: chuva no Paraná e Krigagem ====== | ====== Exemplo: chuva no Paraná e Krigagem ====== | ||
| - | 1. exemplo: Banco de Dados de Chuva no PR | + | Exemplo: Banco de Dados de Chuva no PR\\ |
| - | Banco existente no SGBD | + | Banco existente no SGBD\\ |
| (banco geográfico no formato TerraLib) | (banco geográfico no formato TerraLib) | ||
| - | ## | ||
| - | 2. Conectando e inspecionando o banco | ||
| - | ## | ||
| - | para ilustrar o uso vamos fazer as operações no R via aRT | + | // |
| - | e acompanhar visualizando no terraView | + | // |
| + | ** 1. Conectando banco, visualizando no R e criando vistasno TV ** | ||
| + | **//Fazer no TV://** | ||
| + | - abrir o terraView e conectar ao banco "chuvaPR" | ||
| + | - se existir alguma vista já criada, visualize! | ||
| - | ## | + | <code R> |
| - | 1. Conectando banco, visualizando no R e criando vistasno TV | + | |
| - | ## | + | |
| - | + | ||
| - | **** fazer no TV: | + | |
| - | a. abrir o terraView e conectar ao banco "chuvaPR" | + | |
| - | ## | + | |
| - | b. se existir alguma vista já criada, visualize! | + | |
| require(aRT) | require(aRT) | ||
| + | </code> | ||
| - | estabelecendo conexão com o DBMS (SGBD) | + | Estabelecendo conexão com o DBMS (SGBD) |
| + | <code R> | ||
| con <- openConn() | con <- openConn() | ||
| con | con | ||
| + | </code> | ||
| - | listando os bancos existentes no DBMS | + | Listando os bancos existentes no DBMS |
| + | <code R> | ||
| showDbs(con) | showDbs(con) | ||
| + | </code> | ||
| - | conectando a um banco da dados | + | Conectando a um banco da dados |
| + | <code R> | ||
| pr <- openDb(con, "chuvaPR", update=T) | pr <- openDb(con, "chuvaPR", update=T) | ||
| + | </code> | ||
| - | visualizando informações deste banco | + | Visualizando informações deste banco |
| + | <code R> | ||
| pr | pr | ||
| + | </code> | ||
| - | abrindo o layer com contorno do estado | + | Abrindo o layer com contorno do estado |
| + | <code R> | ||
| pr.l_contorno <- openLayer(pr, "contorno") | pr.l_contorno <- openLayer(pr, "contorno") | ||
| pr.l_contorno | pr.l_contorno | ||
| visualizando dado do layer | visualizando dado do layer | ||
| plot(pr.l_contorno) | plot(pr.l_contorno) | ||
| + | </code> | ||
| - | abrindo outro layer, das estações meteorológicas e dados de precipitação | + | Abrindo outro layer, das estações meteorológicas e dados de precipitação |
| + | <code R> | ||
| pr.l_dados <- openLayer(pr, "dados") | pr.l_dados <- openLayer(pr, "dados") | ||
| pr.l_dados | pr.l_dados | ||
| + | </code> | ||
| - | visualizando, sobrepondo ao gráfico anterior | + | Visualizando, sobrepondo ao gráfico anterior |
| + | <code R> | ||
| plot(pr.l_dados, add=T) | plot(pr.l_dados, add=T) | ||
| + | </code> | ||
| - | apagando uma "vista" pré-existente do banco | + | Apagando uma "vista" pré-existente do banco |
| + | <code R> | ||
| deleteView(pr, "Parana") type Y at the R prompt | deleteView(pr, "Parana") type Y at the R prompt | ||
| + | </code> | ||
| - | **** fazer no TV: | + | **//Fazer no TV://** |
| - | reconectar o banco o TV e ver que a vista "sumiu"!!! | + | - reconectar o banco o TV e ver que a vista "sumiu"!!! |
| - | + | Criando uma vista/tema com o contorno ... | |
| - | criando uma vista/tema com o contorno ... | + | <code R> |
| tema_pol <- createTheme(pr.l_contorno, "contorno", view="Parana") | tema_pol <- createTheme(pr.l_contorno, "contorno", view="Parana") | ||
| setVisual(tema_pol, visualPolygons()) | setVisual(tema_pol, visualPolygons()) | ||
| + | </code> | ||
| ... e adicionando os pontos à vista já criada | ... e adicionando os pontos à vista já criada | ||
| + | <code R> | ||
| tema_dados <- createTheme(pr.l_dados, "estacoes", view = "Parana") | tema_dados <- createTheme(pr.l_dados, "estacoes", view = "Parana") | ||
| setVisual(tema_dados, visualPoints(pch=21, color="black", size=5)) | setVisual(tema_dados, visualPoints(pch=21, color="black", size=5)) | ||
| + | </code> | ||
| - | **** fazer no TV: | + | **// Fazer no TV://** |
| - | reconectar o banco o TV e ver que "apareceu" a vista agora chamada "parana" !!! | + | - reconectar o banco o TV e ver que "apareceu" a vista agora chamada "parana" !!! |
| - | ## | + | // |
| - | 2. Operações da TL via aRT | + | // |
| - | ## | + | ** 2. Operações da TL via aRT ** |
| - | ilustrando como (algumas) operações da terraLib podem ser usadas | + | |
| + | Ilustrando como (algumas) operações da terraLib podem ser usadas | ||
| + | <code R> | ||
| getProj(pr.l_contorno) | getProj(pr.l_contorno) | ||
| getMetric(pr.l_contorno, "area") | getMetric(pr.l_contorno, "area") | ||
| Linha 78: | Linha 93: | ||
| getDistance(pr.l_contorno, id=as.character(c(1,3)), pr.l_dados) | getDistance(pr.l_contorno, id=as.character(c(1,3)), pr.l_dados) | ||
| getDistance(pr.l_contorno, id=as.character(c(2,3)), pr.l_dados) | getDistance(pr.l_contorno, id=as.character(c(2,3)), pr.l_dados) | ||
| + | </code> | ||
| + | // | ||
| + | // | ||
| + | ** 3. Trazendo e manipulando dados e fazendo análises no R ** | ||
| - | + | Abrindo o tema e trazendo dados para um objeto do R\\ | |
| - | ## | + | Duas possibilidades: |
| - | 3. Trazendo e manipulando dados e fazendo análises no R | + | - via "theme" |
| - | ## | + | <code R> |
| - | + | ||
| - | abrindo o tema e trazendo dados para um objeto do R | + | |
| - | + | ||
| - | duas possibilidades: | + | |
| - | a. via "theme" | + | |
| pr | pr | ||
| th_dados <- openTheme(pr, "estacoes") | th_dados <- openTheme(pr, "estacoes") | ||
| Linha 94: | Linha 108: | ||
| dados <- getData(th_dados) | dados <- getData(th_dados) | ||
| head(dados) | head(dados) | ||
| - | + | </code> | |
| - | b. via tabela do banco | + | - via tabela do banco |
| + | <code R> | ||
| pr.l_dados | pr.l_dados | ||
| tb_dados <- openTable(pr.l_dados, "t_dados") | tb_dados <- openTable(pr.l_dados, "t_dados") | ||
| Linha 103: | Linha 118: | ||
| pts <- getPoints(pr.l_dados) | pts <- getPoints(pr.l_dados) | ||
| dat[1:5,] | dat[1:5,] | ||
| + | </code> | ||
| - | trazendo o polígono com a borda do espaço para um objeto do R | + | Trazendo o polígono com a borda do espaço para um objeto do R |
| + | <code R> | ||
| pol <- getPolygons(pr.l_contorno) | pol <- getPolygons(pr.l_contorno) | ||
| pol | pol | ||
| plot(pol) | plot(pol) | ||
| + | </code> | ||
| Fazendo agora uma interpolação dos dados de chuva via geoestatística/krigagem | Fazendo agora uma interpolação dos dados de chuva via geoestatística/krigagem | ||
| - | carregando o pacote geoR | + | * Carregando o pacote geoR |
| + | <code R> | ||
| require(geoR) | require(geoR) | ||
| - | + | </code> | |
| - | convertendo dados os dados para o formato "geodata" da geoR (conveniente) | + | * Convertendo dados os dados para o formato "geodata" da geoR (conveniente) |
| + | <code R> | ||
| geo <- as.geodata(dados, data.col=2) | geo <- as.geodata(dados, data.col=2) | ||
| geo$borders <- pol@polygons[[1]]@Polygons[[1]]@coords | geo$borders <- pol@polygons[[1]]@Polygons[[1]]@coords | ||
| plot(geo) | plot(geo) | ||
| - | + | </code> | |
| - | estimando parâmetros | + | * Estimando parâmetros |
| + | <code R> | ||
| ml <- likfit(geo, trend="1st", ini=c(1000, 100)) um pouco demorado | ml <- likfit(geo, trend="1st", ini=c(1000, 100)) um pouco demorado | ||
| definindo e visualizando grid de predição | definindo e visualizando grid de predição | ||
| Linha 125: | Linha 146: | ||
| points(geo, bor=borders) | points(geo, bor=borders) | ||
| points(loc0, pch=".", col=2) veja gráfico! | points(loc0, pch=".", col=2) veja gráfico! | ||
| - | e fazendo krigagem | + | </code> |
| + | * e fazendo krigagem | ||
| + | <code R> | ||
| kc <- krige.conv(geo, loc=loc0, krige=krige.control(obj=ml), bor=geo$borders) | kc <- krige.conv(geo, loc=loc0, krige=krige.control(obj=ml), bor=geo$borders) | ||
| - | + | </code> | |
| - | visualizando no R | + | * visualizando no R |
| + | <code R> | ||
| image(kc, col=terrain.colors(15), coords=parana$coords) ver gráfico | image(kc, col=terrain.colors(15), coords=parana$coords) ver gráfico | ||
| + | </code> | ||
| Preparing the predictions for aRT to transfer as a raster to the DBMS | Preparing the predictions for aRT to transfer as a raster to the DBMS | ||
| + | <code R> | ||
| georpred <- .prepare.graph.kriging(locations=loc0, borders=parana$borders, values=kc$pred) | georpred <- .prepare.graph.kriging(locations=loc0, borders=parana$borders, values=kc$pred) | ||
| names(georpred)[3] <- "z" | names(georpred)[3] <- "z" | ||
| + | </code> | ||
| - | criando um novo layer no banco para armazenar o grid de predição | + | Criando um novo layer no banco para armazenar o grid de predição |
| + | <code R> | ||
| pr.l_pred <- createLayer(pr, "predicao") | pr.l_pred <- createLayer(pr, "predicao") | ||
| addRaster(pr.l_pred, georpred) | addRaster(pr.l_pred, georpred) | ||
| + | </code> | ||
| - | checking the current status of the DB | + | Checking the current status of the DB |
| + | <code R> | ||
| pr | pr | ||
| + | </code> | ||
| - | **** fazer no TV: | + | **// Fazer no TV://** |
| - | reconectar o banco o TV e ver que um novo layer foi criado | + | - reconectar o banco o TV e ver que um novo layer foi criado |
| Optional : setting to a TV view | Optional : setting to a TV view | ||
| + | <code R> | ||
| th <- createTheme(pr.l_pred, "raster", view="parana") | th <- createTheme(pr.l_pred, "raster", view="parana") | ||
| setVisual(th, visualRaster(color = terrain.colors(15)), mode="r") | setVisual(th, visualRaster(color = terrain.colors(15)), mode="r") | ||
| pr | pr | ||
| + | </code> | ||
| - | **** fazer no TV: | + | **// Fazer no TV://** |
| - | reconectar o banco o TV e ver que um novo tema foi adicionado a vista | + | - reconectar o banco o TV e ver que um novo tema foi adicionado a vista |
| - | visualize!!!! | + | - visualize!!!! |
| - | ## | ||
| - | Adicionando uma nova coluna (com predições) à tabela de dados | ||
| - | ## | ||
| - | para exemplicifar isto vamos fazer a krigagem nos pontos onde há dados | + | // |
| + | // | ||
| + | ** 4. Adicionando uma nova coluna (com predições) à tabela de dados **\\ | ||
| + | Para exemplificar isto vamos fazer a krigagem nos pontos onde há dados | ||
| + | <code R> | ||
| kc0 <- krige.conv(geo, loc=geo$coords, krige=krige.control(obj=ml), borders=NULL) | kc0 <- krige.conv(geo, loc=geo$coords, krige=krige.control(obj=ml), borders=NULL) | ||
| prs <- data.frame(id=rownames(geo$coords), pred=kc0$pred) | prs <- data.frame(id=rownames(geo$coords), pred=kc0$pred) | ||
| createColumn(tb_dados, "preds", type="numeric") | createColumn(tb_dados, "preds", type="numeric") | ||
| updateColumns(tb_dados, prs) | updateColumns(tb_dados, prs) | ||
| + | </code> | ||
| veja o novo status da tabela | veja o novo status da tabela | ||
| + | <code R> | ||
| tb_dados | tb_dados | ||
| + | </code> | ||
| - | *** fazer no TV: | + | **//Fazer no TV://** |
| - | reconectar o banco e ver que há agora uma nova tabela no layer de dados | + | - reconectar o banco e ver que há agora uma nova tabela no layer de dados |
| - | ## | + | // |
| - | 4. Some plots | + | // |
| - | ## | + | ** 5. Some plots ** |
| Plotting directly from the data-base (not using R objects) | Plotting directly from the data-base (not using R objects) | ||
| + | <code R> | ||
| plot(pr.l_pred, col=terrain.colors(15)) | plot(pr.l_pred, col=terrain.colors(15)) | ||
| plot(pr.l_dados, add=T) | plot(pr.l_dados, add=T) | ||
| plot(pr.l_contorno, add=T) veja a figura! | plot(pr.l_contorno, add=T) veja a figura! | ||
| + | </code> | ||
| + | |||
| - | ## | ||
| Deletando um layer | Deletando um layer | ||
| - | + | <code R> | |
| - | # deleteLayer(con, "pr.l_pred") | + | deleteLayer(con, "pr.l_pred") |
| + | </code> | ||