<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Senhores, bom dia!</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Concordo que o uso do pacote {raster} facilita bem algumas operações. Abaixo tem a geração do arquivo xyz usando {raster}.</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default"><div class="gmail_default"><font face="monospace, monospace">### <code r></font></div><div class="gmail_default"><font face="monospace, monospace">require(raster)</font></div><div class="gmail_default"><font face="monospace, monospace">b <- brick('<a href="http://teste.nc">teste.nc</a>')</font></div><div class="gmail_default"><font face="monospace, monospace">nlayers(b); names(b)</font></div><div class="gmail_default"><font face="monospace, monospace">xyz <- cbind(coordinates(b), z=getValues(b[[2]])); head(xyz)</font></div><div class="gmail_default"><font face="monospace, monospace"># x y z</font></div><div class="gmail_default"><font face="monospace, monospace"># [1,] -119.5 9.5 246.8778</font></div><div class="gmail_default"><font face="monospace, monospace"># [2,] -118.5 9.5 246.6111</font></div><div class="gmail_default"><font face="monospace, monospace"># [3,] -117.5 9.5 246.6185</font></div><div class="gmail_default"><font face="monospace, monospace"># [4,] -116.5 9.5 246.7667</font></div><div class="gmail_default"><font face="monospace, monospace"># [5,] -115.5 9.5 246.8889</font></div><div class="gmail_default"><font face="monospace, monospace"># [6,] -114.5 9.5 247.0407</font></div><div class="gmail_default"><br></div><div class="gmail_default"><font face="monospace, monospace"><div class="gmail_default"># write.table(xyz, file="teste2.txt",row.names=TRUE, sep="", quote=FALSE)</div></font></div><div class="gmail_default"><span style="font-family:monospace,monospace">### </code></span><br></div><div class="gmail_default"><font face="monospace, monospace"><br></font></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><font face="arial, helvetica, sans-serif" style="font-size:small"><div style="font-family:'trebuchet ms',sans-serif;display:inline"></div></font><font face="arial, helvetica, sans-serif" style="font-size:12.8px"><span style="font-size:small">================================================</span><br>Éder Comunello</font><div style="font-size:12.8px"><span style="font-family:arial,helvetica,sans-serif">Agronomist (UEM), MSc in Environ. Sciences (UEM)</span><font face="arial, helvetica, sans-serif"><br></font></div><div style="font-size:12.8px"><div style="font-size:small"><span style="font-family:arial,helvetica,sans-serif">DSc in Agricultural Systems Engineering (USP/Esalq)</span><br></div><div><span style="font-size:small">Brazilian Agricultural Research Corporation (</span><font face="arial, helvetica, sans-serif" style="font-size:small">Embrapa)</font></div><div><div><font face="arial, helvetica, sans-serif" style="font-size:small">Dourados, MS, Brazil </font><font face="arial, helvetica, sans-serif" size="2">|<O>|</font></div><div style="font-size:small"><span style="font-family:arial,helvetica,sans-serif">================================================</span><br></div></div></div><div style="font-size:small"><font face="arial, helvetica, sans-serif">GEO, </font>-22.2752, -54.8182, 408m<span style="font-family:arial,helvetica,sans-serif"><br></span></div><div style="font-size:12.8px"><span style="font-size:small;font-family:arial,helvetica,sans-serif">UTC-04:00 / DST: UTC-03:00</span></div><div><div><div><br></div><div><br></div></div><div style="font-size:small"><br></div></div></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">Em 22 de fevereiro de 2016 18:03, Thiago V. dos Santos <span dir="ltr"><<a href="mailto:thi_veloso@yahoo.com.br" target="_blank">thi_veloso@yahoo.com.br</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Você realmente precisa do arquivo texto nesse formato lat, lon e medição?<br>
<br>
Dependendo da aplicação, uma outra alternativa aqui seria usar:<br>
library(raster)<br>
<br>
r <- brick("<a href="http://teste.nc" rel="noreferrer" target="_blank">teste.nc</a>")<br>
<br>
r1 <- calc(r, fun=mean)<br>
<br>
writeRaster(r1, "~/Desktop/teste.asc", format="ascii")<br>
<br>
<br>
Isso vai escrever o arquivo no formato de texto usado pela ESRI. Me parece ser mais fácil usar outro programa para abrir esse arquivo do que um arquivo .csv com valores de latitude, longitude e medição.<br>
<br>
Mas novamente, isso vai depender da aplicação final.<br>
Greetings,<br>
-- Thiago V. dos Santos<br>
<br>
PhD student<br>
Land and Atmospheric Science<br>
University of Minnesota<br>
<div><div class="h5"><br>
<br>
On Sunday, February 21, 2016 7:23 AM, Éder Comunello <<a href="mailto:comunello.eder@gmail.com">comunello.eder@gmail.com</a>> wrote:<br>
<br>
<br>
<br>
Mateus, bom dia!<br>
<br>
Sugiro que você forneça o feedback acerca das sugestões que recebe na lista. Assim, podemos saber qual solução funcionou e o material fica útil pra referência futura. Dentro das suas possibilidades, avalie a possibilidade de postar o script final com a solução que você produziu.<br>
<br>
Segue uma ideia pra produzir um arquivo ascii (x, y, z):<br>
<br>
### <code r><br>
### acrescente no seu script!<br>
<br>
map( xlim=c(-100,-10), ylim=c(-60,10))<br>
map.axes()<br>
contour(lon, lat, media_ColumnAmountO3, add=T, levels=intervalos, lwd=2, labcex=1.3, col=heat.colors(14) )<br>
<br>
# Transpose + flip pra matriz corresponder ao que você vê plotado na tela com contour(), filled.countour()<br>
tmp <- (t(media_ColumnAmountO3)[ncol(media_ColumnAmountO3):1,])<br>
<br>
# Verificando...<br>
tmp[1:3, 1:4] # UL<br>
tmp[1:3, 127:130] # UR<br>
tmp[68:70, 1:4] # LL<br>
tmp[68:70, 127:130] # LR<br>
as.vector(tmp[1:3, 1:4]) ### by columns - upper left<br>
<br>
grid <- expand.grid(x=lon, y=lat)<br>
head(grid[order(grid$x, rev(grid$y)),]) # by columns<br>
<br>
teste <- cbind(grid[order(grid$x, rev(grid$y)),], z=as.vector(tmp))<br>
head(teste, 3)<br>
# x y z<br>
# 8971 -119.5 9.5 245.2939<br>
# 8841 -119.5 8.5 244.0713<br>
# 8711 -119.5 7.5 242.9422<br>
<br>
tail(teste, 3)<br>
# x y z<br>
# 390 9.5 -57.5 296.8890<br>
# 260 9.5 -58.5 297.0280<br>
# 130 9.5 -59.5 296.6809<br>
<br>
write.table(teste,file="teste.txt",row.names=TRUE, sep="", quote=FALSE)<br>
### </code><br>
<br>
<br>
<br>
================================================<br>
Éder Comunello<br>
Agronomist (UEM), MSc in Environ. Sciences (UEM)<br>
<br>
DSc in Agricultural Systems Engineering (USP/Esalq)<br>
<br>
Brazilian Agricultural Research Corporation (Embrapa)<br>
Dourados, MS, Brazil |<O>|<br>
================================================<br>
<br>
GEO, -22.2752, -54.8182, 408m<br>
<br>
UTC-04:00 / DST: UTC-03:00<br>
<br>
<br>
<br>
<br>
Em 20 de fevereiro de 2016 23:44, Mateus Dias Nunes <<a href="mailto:nunes.mateusdias@gmail.com">nunes.mateusdias@gmail.com</a>> escreveu:<br>
<br>
Olá preciso gerar um arquivo de saída ascii que contenha as informações de lat e lon para este campo meteorológico.<br>
>Já consegui gerar o arquivo ascii, porém ele fica sem as informações de lat (-60S,10N) e lon(-120W,10E)<br>
>abaixo o script.<br>
><br>
><br>
>library(maps)<br>
><br>
><br>
>library(ncdf4)<br>
><br>
><br>
><br>
> dados <- nc_open('<a href="http://teste.nc" rel="noreferrer" target="_blank">teste.nc</a>')<br>
><br>
><br>
><br>
><br>
>lat <- ncvar_get( dados, 'lat' )<br>
><br>
><br>
>lon <- ncvar_get( dados, 'lon' )<br>
><br>
><br>
>time <- ncvar_get( dados, 'time' )<br>
><br>
><br>
><br>
><br>
># lendo dados coluna total de Ozônio<br>
><br>
><br>
>ColumnAmountO3 <- ncvar_get( dados, 'ColumnAmountO3' )<br>
><br>
><br>
><br>
><br>
><br>
><br>
># dimensoes da variavel ColumnAmountO3<br>
><br>
><br>
>dims_ColumnAmountO3 <- dim(ColumnAmountO3)<br>
><br>
><br>
><br>
><br>
><br>
><br>
># tornando o arranjo 3D (ColumnAmountO3) em um 2D, organizado em ptos de grade X tempo<br>
><br>
><br>
>dim(ColumnAmountO3) <- c( dims_ColumnAmountO3[1]*dims_ColumnAmountO3[2], dims_ColumnAmountO3[3] )<br>
><br>
><br>
># calculando a média e retornado-a em 2D<br>
><br>
><br>
>media_ColumnAmountO3 <- rowMeans( ColumnAmountO3)<br>
><br>
><br>
>dim(media_ColumnAmountO3) <- c( dims_ColumnAmountO3[1], dims_ColumnAmountO3[2] )<br>
><br>
><br>
><br>
><br>
><br>
><br>
>#==========================================================================================================<br>
><br>
><br>
># longitude varia de 0 a 360, convertendo para -180 a 180, essa conversão é feita para plotagem sobre o mapa<br>
><br>
><br>
>for (i in 1:dim(lon)) { if (lon[i]>180) { lon[i] <- lon[i]-360 } }<br>
><br>
><br>
>plotando mapa da America do Sul<br>
><br>
><br>
>map(xlim=c(-90,-30), ylim=c(-60,10))<br>
><br>
><br>
>map.axes() # plotando eixos<br>
><br>
><br>
>title( main="Campo médio de Ozônio " ) # título do gráfico<br>
><br>
><br>
><br>
><br>
># definindo intervalo de 5 Dobson Units (DU)<br>
><br>
><br>
>intervalos = seq( trunc(min(ColumnAmountO3)), trunc(max(ColumnAmountO3)), 5 )<br>
><br>
><br>
><br>
><br>
>#PARA PLOTAR GRAFICO CONTORNOS EM PRETO E BRANCO<br>
><br>
><br>
>contour( sort(lon), lat, media_ColumnAmountO3[ order(lon), ], add=T, levels=intervalos, lwd=2, labcex=1.3 )<br>
><br>
><br>
>teste=data.frame(media_ColumnAmountO3)<br>
><br>
><br>
>write.table(teste,file="teste.txt",row.names=TRUE,sep="",quote=FALSE)<br>
>____________________________________________________________________________<br>
><br>
>MATEUS DIAS NUNES<br>
>MESTRANDO DO PROGRAMA DE PÓS-GRADUAÇÃO EM METEOROLOGIA - PPGMET<br>
>UNIVERSIDADE FEDERAL DE PELOTAS - UFPEL<br>
><br>
>TELEFONE: +55 (53) 81125154<br>
>____________________________________________________________________________<br>
>_______________________________________________<br>
>R-br mailing list<br>
><a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
><a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
>Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br>
><br>
<br>
<br>
_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
</div></div>Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forne� c�igo m�imo reproduz�el.<br>
</blockquote></div><br></div></div>