[R-br] Gerar arquivo de saída ascii

Thiago V. dos Santos thi_veloso em yahoo.com.br
Segunda Fevereiro 22 19:03:45 BRT 2016


Você realmente precisa do arquivo texto nesse formato lat, lon e medição? 

Dependendo da aplicação, uma outra alternativa aqui seria usar:
library(raster)

r <- brick("teste.nc")

r1 <- calc(r, fun=mean)

writeRaster(r1, "~/Desktop/teste.asc", format="ascii")


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.

Mas novamente, isso vai depender da aplicação final. 
Greetings,
 -- Thiago V. dos Santos

PhD student
Land and Atmospheric Science
University of Minnesota


On Sunday, February 21, 2016 7:23 AM, Éder Comunello <comunello.eder em gmail.com> wrote:



Mateus, bom dia!

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.

Segue uma ideia pra produzir um arquivo ascii (x, y, z):

### <code r>
### acrescente no seu script!

map( xlim=c(-100,-10), ylim=c(-60,10))
map.axes()
contour(lon, lat, media_ColumnAmountO3, add=T, levels=intervalos, lwd=2, labcex=1.3, col=heat.colors(14) )

# Transpose + flip pra matriz corresponder ao que você vê plotado na tela com contour(), filled.countour()
tmp <- (t(media_ColumnAmountO3)[ncol(media_ColumnAmountO3):1,])

# Verificando...
tmp[1:3, 1:4]       # UL
tmp[1:3, 127:130]   # UR
tmp[68:70, 1:4]     # LL
tmp[68:70, 127:130] # LR
as.vector(tmp[1:3, 1:4]) ### by columns - upper left

grid <- expand.grid(x=lon, y=lat)
head(grid[order(grid$x, rev(grid$y)),]) # by columns

teste <- cbind(grid[order(grid$x, rev(grid$y)),], z=as.vector(tmp))
head(teste, 3)
#           x   y        z
# 8971 -119.5 9.5 245.2939
# 8841 -119.5 8.5 244.0713
# 8711 -119.5 7.5 242.9422

tail(teste, 3)
#       x     y        z
# 390 9.5 -57.5 296.8890
# 260 9.5 -58.5 297.0280
# 130 9.5 -59.5 296.6809

write.table(teste,file="teste.txt",row.names=TRUE, sep="", quote=FALSE)
### </code>



​================================================
Éder Comunello
Agronomist (UEM), MSc in Environ. Sciences (UEM)

DSc in Agricultural Systems Engineering (USP/Esalq)

Brazilian Agricultural Research Corporation (Embrapa)
Dourados, MS, Brazil |<O>|
================================================

GEO, -22.2752, -54.8182, 408m

UTC-04:00 / DST: UTC-03:00




Em 20 de fevereiro de 2016 23:44, Mateus Dias Nunes <nunes.mateusdias em gmail.com> escreveu:

Olá preciso gerar um arquivo de saída ascii que contenha as informações de lat e lon para este campo meteorológico.
>Já consegui gerar o arquivo ascii, porém ele fica sem as informações de lat (-60S,10N) e lon(-120W,10E)
>abaixo o script.
>
>
>library(maps)
>
>
>library(ncdf4) 
>
>
>  
> dados <- nc_open('teste.nc')  
>
>
>
>
>lat <- ncvar_get( dados, 'lat' )
>
>
>lon <- ncvar_get( dados, 'lon' )
>
>
>time <- ncvar_get( dados, 'time' )
>
>
>
>
># lendo dados coluna total de Ozônio
>
>
>ColumnAmountO3 <- ncvar_get( dados, 'ColumnAmountO3' )
>
>
>
>
>
>
># dimensoes da variavel ColumnAmountO3
>
>
>dims_ColumnAmountO3 <- dim(ColumnAmountO3)
>
>
>
>
>
>
># tornando o arranjo 3D (ColumnAmountO3) em um 2D, organizado em ptos de grade X tempo
>
>
>dim(ColumnAmountO3) <- c( dims_ColumnAmountO3[1]*dims_ColumnAmountO3[2], dims_ColumnAmountO3[3] )
>
>
># calculando a média e retornado-a em 2D
>
>
>media_ColumnAmountO3 <- rowMeans( ColumnAmountO3)
>
>
>dim(media_ColumnAmountO3) <- c( dims_ColumnAmountO3[1], dims_ColumnAmountO3[2] )
>
>
>
>
>
>
>#==========================================================================================================
>
>
># longitude varia de 0 a 360, convertendo para -180 a 180, essa conversão é feita para plotagem sobre o mapa
>
>
>for (i in 1:dim(lon)) { if (lon[i]>180) { lon[i] <- lon[i]-360 } }
>
>
>plotando mapa da America do Sul
>
>
>map(xlim=c(-90,-30), ylim=c(-60,10))
>
>
>map.axes()              # plotando eixos
>
>
>title( main="Campo médio de Ozônio " )   # título do gráfico
>
>
>
>
># definindo intervalo de 5 Dobson Units (DU)
>
>
>intervalos = seq( trunc(min(ColumnAmountO3)), trunc(max(ColumnAmountO3)), 5 )
>
>
>
>
>#PARA PLOTAR GRAFICO CONTORNOS EM PRETO E BRANCO
>
>
>contour( sort(lon), lat, media_ColumnAmountO3[ order(lon), ], add=T, levels=intervalos, lwd=2, labcex=1.3  )
>
>
>teste=data.frame(media_ColumnAmountO3)
>
>
>write.table(teste,file="teste.txt",row.names=TRUE,sep="",quote=FALSE)
>____________________________________________________________________________
>
>MATEUS DIAS NUNES
>MESTRANDO DO PROGRAMA DE PÓS-GRADUAÇÃO EM METEOROLOGIA - PPGMET
>UNIVERSIDADE FEDERAL DE PELOTAS - UFPEL
>
>TELEFONE: +55 (53) 81125154             
>____________________________________________________________________________
>_______________________________________________
>R-br mailing list
>R-br em listas.c3sl.ufpr.br
>https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
>


_______________________________________________
R-br mailing list
R-br em listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne� c�igo m�imo reproduz�el.


Mais detalhes sobre a lista de discussão R-br