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

Éder Comunello comunello.eder em gmail.com
Terça Fevereiro 23 06:27:52 BRT 2016


Senhores, bom dia!

Concordo que o uso do pacote {raster} facilita bem algumas operações.
Abaixo tem a geração do arquivo xyz usando {raster}.

### <code r>
require(raster)
b <- brick('teste.nc')
nlayers(b); names(b)
xyz <- cbind(coordinates(b), z=getValues(b[[2]])); head(xyz)
#           x   y        z
# [1,] -119.5 9.5 246.8778
# [2,] -118.5 9.5 246.6111
# [3,] -117.5 9.5 246.6185
# [4,] -116.5 9.5 246.7667
# [5,] -115.5 9.5 246.8889
# [6,] -114.5 9.5 247.0407

# write.table(xyz, file="teste2.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 22 de fevereiro de 2016 18:03, Thiago V. dos Santos <
thi_veloso em yahoo.com.br> escreveu:

> 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160223/6f808ca2/attachment-0001.html>


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