
Prezados, Venho mais uma vez pedir ajuda a voces para resolver um problema! baixei uma série de images de satelite, por ano e mes (2004 a 2010) totalizando 163 arquivos ate ai tudo bem! Por termos de comodidade gostaria de criar um loop para nao ter que digitar essas 163 linhas ou mais para extrair latitude, longitude e SST. conforme o codigo abaixo: hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004 hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004 Alguem poderia me ajudar! Nao coloquei o arquivo pois é muito grande quase 36gigas porém caso precisem posso colocar o parte do codigo para baixarem um ou mais arquivos e testarem Humberto

Sim, alguem pode te ajudar... mas depende muito de vc ajudar o alguem primeiro.... Qual o truque para sair de S20040322004060 para "mes 2"? (minha bola de cristal diz que o ano corresponde aos 4 primeiros digitos apos S, mas isso eh soh uma hipotese, jah que vc nao disse explicitamente) b 2012/3/29 Humberto Hazin <hghazin@hotmail.com>
Prezados,
Venho mais uma vez pedir ajuda a voces para resolver um problema!
baixei uma série de images de satelite, por ano e mes (2004 a 2010) totalizando 163 arquivos ate ai tudo bem! Por termos de comodidade gostaria de criar um loop para nao ter que digitar essas 163 linhas ou mais para extrair latitude, longitude e SST. conforme o codigo abaixo:
hdf4to5("S20040012004031.hdf")**;m0401 <- satinGet("S20040012004031.**hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(** m0401);m0401<-data.frame(**m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf")**;m0402 <- satinGet("S20040322004060.**hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(** m0402);m0402<-data.frame(**m0402);m0402$mes<-2; m0402$year<-2004
Alguem poderia me ajudar!
Nao coloquei o arquivo pois é muito grande quase 36gigas porém caso precisem posso colocar o parte do codigo para baixarem um ou mais arquivos e testarem
Humberto
______________________________**_________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/**cgi-bin/mailman/listinfo/r-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<http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.

Bom dia Benilton, Obrigado por responder! É o seguinte quando baixo a imagem ela já vem com esse número todo (S20040322004060) onde S=seawifs, em seguida vem o ano 2004032 2004060 significa o periodo da coleta do satélite ou seja 032-60 dias de 2004, ou seja mes 2. Assim para o outro arquivo S20040012004031 001-31 dias de 2004 ou seja mes 1 Esse arquivos estão em hdf4 porém preciso converter para hdf5 para poder trabalhar! Então criei uma função no R (hdf4to5) para para ler um executavel de um programa (H4H5TOOLS-2.2.1-win764-vs10static) em segundo plano para esse fim! Uso o pacote Satin para ler o arquivo convertido em hdf5 e fazer as extrações da área que quero ter esses dados "satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor")" como preciso de quadrantes de 1x1 grau uso a função "simplifySat(m0401, extent=1)" em seguida criei uma função no R "extract(m0401)" para extrair tudo em coluna Lat, Long, Parametro... hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004 hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004 Eu não sei se ficou mais claro agora! Humberto Em 3/29/2012 9:25 PM, Benilton Carvalho escreveu:
Sim, alguem pode te ajudar... mas depende muito de vc ajudar o alguem primeiro.... Qual o truque para sair de S20040322004060 para "mes 2"? (minha bola de cristal diz que o ano corresponde aos 4 primeiros digitos apos S, mas isso eh soh uma hipotese, jah que vc nao disse explicitamente)
b
2012/3/29 Humberto Hazin <hghazin@hotmail.com <mailto:hghazin@hotmail.com>>
Prezados,
Venho mais uma vez pedir ajuda a voces para resolver um problema!
baixei uma série de images de satelite, por ano e mes (2004 a 2010) totalizando 163 arquivos ate ai tudo bem! Por termos de comodidade gostaria de criar um loop para nao ter que digitar essas 163 linhas ou mais para extrair latitude, longitude e SST. conforme o codigo abaixo:
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Alguem poderia me ajudar!
Nao coloquei o arquivo pois é muito grande quase 36gigas porém caso precisem posso colocar o parte do codigo para baixarem um ou mais arquivos e testarem
Humberto
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@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@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.

como demorei demais, imagino que já deve ter solucionado, mas em caso contrario fica alguns comandos para inspirar a solução do problema ######################################################## # tente pegar a lista de arquivos com o comando dir #arqs <- dir(pattern='*.hdf') arqs <- c("S20040012004031.hdf", "S20040322004060.hdf") # d1 <- as.numeric(gsub( 'S2004(...)2004(...)\\.hdf','\\1', arqs[2] )) d2 <- as.numeric(gsub( 'S2004(...)2004(...)\\.hdf','\\2', arqs[2] )) # descobre qual é o mês correspondente (em numero de 1 a 12) mes_number <- table((d2 - 30*(1:12)+5>0))[2], sep='') nome <- paste('mes', '04', sprintf("%02.0f", mes_number), sep='') assign( nome, 'alguma coisa a ser salva' ) ######################################################## qualquer duvido, escreva com mais detalhes t+ cleber Em 30/03/2012 10:51, Humberto Hazin escreveu:
Bom dia Benilton,
Obrigado por responder!
É o seguinte quando baixo a imagem ela já vem com esse número todo (S20040322004060) onde S=seawifs, em seguida vem o ano 2004032 2004060 significa o periodo da coleta do satélite ou seja 032-60 dias de 2004, ou seja mes 2. Assim para o outro arquivo S20040012004031 001-31 dias de 2004 ou seja mes 1
Esse arquivos estão em hdf4 porém preciso converter para hdf5 para poder trabalhar! Então criei uma função no R (hdf4to5) para para ler um executavel de um programa (H4H5TOOLS-2.2.1-win764-vs10static) em segundo plano para esse fim! Uso o pacote Satin para ler o arquivo convertido em hdf5 e fazer as extrações da área que quero ter esses dados "satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor")" como preciso de quadrantes de 1x1 grau uso a função "simplifySat(m0401, extent=1)" em seguida criei uma função no R "extract(m0401)" para extrair tudo em coluna Lat, Long, Parametro...
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Eu não sei se ficou mais claro agora!
Humberto
Em 3/29/2012 9:25 PM, Benilton Carvalho escreveu:
Sim, alguem pode te ajudar... mas depende muito de vc ajudar o alguem primeiro.... Qual o truque para sair de S20040322004060 para "mes 2"? (minha bola de cristal diz que o ano corresponde aos 4 primeiros digitos apos S, mas isso eh soh uma hipotese, jah que vc nao disse explicitamente)
b
2012/3/29 Humberto Hazin <hghazin@hotmail.com <mailto:hghazin@hotmail.com>>
Prezados,
Venho mais uma vez pedir ajuda a voces para resolver um problema!
baixei uma série de images de satelite, por ano e mes (2004 a 2010) totalizando 163 arquivos ate ai tudo bem! Por termos de comodidade gostaria de criar um loop para nao ter que digitar essas 163 linhas ou mais para extrair latitude, longitude e SST. conforme o codigo abaixo:
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Alguem poderia me ajudar!
Nao coloquei o arquivo pois é muito grande quase 36gigas porém caso precisem posso colocar o parte do codigo para baixarem um ou mais arquivos e testarem
Humberto

f = function(fname){ year = substr(fname, 2, 5) day1 = as.integer(substr(fname, 6, 8)) month = format(as.Date(strptime(paste(year, "01", "01", sep='-'), '%Y-%m-%d'))+day1-1, '%m') objOut = paste('m', substr(year, 3, 4), month, sep='') hdf4to5(fname) assign(objOut, satinGet(paste(fname, 5, sep=''), lats=c(10, -30), lons=c(-20, -50), itype='oceancolor')) assign(objOut, data.frame(extract(simplifySat(get(objOut), extent=1)))) assign(objOut, cbind(get(objOut), mes=as.integer(month), year=as.integer(year))) return(get(objOut) } ## vetor com o nome de todos os arquivos hdf4 fns = list.files(pattern='\\.hdf$') resultados = lapply(fns, f) Claramente, eu nao experimentei o codigo acima... e fica pra vc a tarefa de testar e corrigir algum parenteses que esteja faltando ou algum outro problema. benilton 2012/3/30 Humberto Hazin <hghazin@hotmail.com>
Bom dia Benilton,
Obrigado por responder!
É o seguinte quando baixo a imagem ela já vem com esse número todo (S20040322004060) onde S=seawifs, em seguida vem o ano 2004032 2004060 significa o periodo da coleta do satélite ou seja 032-60 dias de 2004, ou seja mes 2. Assim para o outro arquivo S20040012004031 001-31 dias de 2004 ou seja mes 1
Esse arquivos estão em hdf4 porém preciso converter para hdf5 para poder trabalhar! Então criei uma função no R (hdf4to5) para para ler um executavel de um programa (H4H5TOOLS-2.2.1-win764-vs10static) em segundo plano para esse fim! Uso o pacote Satin para ler o arquivo convertido em hdf5 e fazer as extrações da área que quero ter esses dados "satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor")" como preciso de quadrantes de 1x1 grau uso a função "simplifySat(m0401, extent=1)" em seguida criei uma função no R "extract(m0401)" para extrair tudo em coluna Lat, Long, Parametro...
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Eu não sei se ficou mais claro agora!
Humberto
Em 3/29/2012 9:25 PM, Benilton Carvalho escreveu:
Sim, alguem pode te ajudar... mas depende muito de vc ajudar o alguem primeiro.... Qual o truque para sair de S20040322004060 para "mes 2"? (minha bola de cristal diz que o ano corresponde aos 4 primeiros digitos apos S, mas isso eh soh uma hipotese, jah que vc nao disse explicitamente)
b
2012/3/29 Humberto Hazin <hghazin@hotmail.com>
Prezados,
Venho mais uma vez pedir ajuda a voces para resolver um problema!
baixei uma série de images de satelite, por ano e mes (2004 a 2010) totalizando 163 arquivos ate ai tudo bem! Por termos de comodidade gostaria de criar um loop para nao ter que digitar essas 163 linhas ou mais para extrair latitude, longitude e SST. conforme o codigo abaixo:
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Alguem poderia me ajudar!
Nao coloquei o arquivo pois é muito grande quase 36gigas porém caso precisem posso colocar o parte do codigo para baixarem um ou mais arquivos e testarem
Humberto
_______________________________________________ R-br mailing list R-br@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 listR-br@listas.c3sl.ufpr.brhttps://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.

Benilton, Muito obrigado! Resolveu meu problema! So mais uma pergunta. Caso eu queira que os valores fique em apenas 5 colunas como o exemplo abaixo Lat Long Year Mes SST 23 49 2009 1 22 49 2007 1 21 49 2009 2 21 49 2010 1 . . . . . . . . . . . . Obrigado também ao Cleber! Um abraço Humberto Em 3/30/2012 12:10 PM, Benilton Carvalho escreveu:
f = function(fname){ year = substr(fname, 2, 5) day1 = as.integer(substr(fname, 6, 8)) month = format(as.Date(strptime(paste(year, "01", "01", sep='-'), '%Y-%m-%d'))+day1-1, '%m') objOut = paste('m', substr(year, 3, 4), month, sep='')
hdf4to5(fname) assign(objOut, satinGet(paste(fname, 5, sep=''), lats=c(10, -30), lons=c(-20, -50), itype='oceancolor')) assign(objOut, data.frame(extract(simplifySat(get(objOut), extent=1)))) assign(objOut, cbind(get(objOut), mes=as.integer(month), year=as.integer(year))) return(get(objOut) }
## vetor com o nome de todos os arquivos hdf4 fns = list.files(pattern='\\.hdf$') resultados = lapply(fns, f)
Claramente, eu nao experimentei o codigo acima... e fica pra vc a tarefa de testar e corrigir algum parenteses que esteja faltando ou algum outro problema.
benilton
2012/3/30 Humberto Hazin <hghazin@hotmail.com <mailto:hghazin@hotmail.com>>
Bom dia Benilton,
Obrigado por responder!
É o seguinte quando baixo a imagem ela já vem com esse número todo (S20040322004060) onde S=seawifs, em seguida vem o ano 2004032 2004060 significa o periodo da coleta do satélite ou seja 032-60 dias de 2004, ou seja mes 2. Assim para o outro arquivo S20040012004031 001-31 dias de 2004 ou seja mes 1
Esse arquivos estão em hdf4 porém preciso converter para hdf5 para poder trabalhar! Então criei uma função no R (hdf4to5) para para ler um executavel de um programa (H4H5TOOLS-2.2.1-win764-vs10static) em segundo plano para esse fim! Uso o pacote Satin para ler o arquivo convertido em hdf5 e fazer as extrações da área que quero ter esses dados "satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor")" como preciso de quadrantes de 1x1 grau uso a função "simplifySat(m0401, extent=1)" em seguida criei uma função no R "extract(m0401)" para extrair tudo em coluna Lat, Long, Parametro...
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Eu não sei se ficou mais claro agora!
Humberto
Em 3/29/2012 9:25 PM, Benilton Carvalho escreveu:
Sim, alguem pode te ajudar... mas depende muito de vc ajudar o alguem primeiro.... Qual o truque para sair de S20040322004060 para "mes 2"? (minha bola de cristal diz que o ano corresponde aos 4 primeiros digitos apos S, mas isso eh soh uma hipotese, jah que vc nao disse explicitamente)
b
2012/3/29 Humberto Hazin <hghazin@hotmail.com <mailto:hghazin@hotmail.com>>
Prezados,
Venho mais uma vez pedir ajuda a voces para resolver um problema!
baixei uma série de images de satelite, por ano e mes (2004 a 2010) totalizando 163 arquivos ate ai tudo bem! Por termos de comodidade gostaria de criar um loop para nao ter que digitar essas 163 linhas ou mais para extrair latitude, longitude e SST. conforme o codigo abaixo:
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Alguem poderia me ajudar!
Nao coloquei o arquivo pois é muito grande quase 36gigas porém caso precisem posso colocar o parte do codigo para baixarem um ou mais arquivos e testarem
Humberto
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@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@listas.c3sl.ufpr.br <mailto:R-br@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.

nao tenho como ter ideia sobre as "5 colunas", afinal escrevi o codigo sem saber o que sao os dados. se vc se refere a concatenar todos os data.frames resultantes num data.frame maior, use: resultados = do.call(rbind, resultados) b 2012/3/30 Humberto Hazin <hghazin@hotmail.com>
Benilton,
Muito obrigado! Resolveu meu problema! So mais uma pergunta. Caso eu queira que os valores fique em apenas 5 colunas como o exemplo abaixo Lat Long Year Mes SST 23 49 2009 1 22 49 2007 1 21 49 2009 2 21 49 2010 1 . . . . . . . . . . . .
Obrigado também ao Cleber!
Um abraço
Humberto
Em 3/30/2012 12:10 PM, Benilton Carvalho escreveu:
f = function(fname){ year = substr(fname, 2, 5) day1 = as.integer(substr(fname, 6, 8)) month = format(as.Date(strptime(paste(year, "01", "01", sep='-'), '%Y-%m-%d'))+day1-1, '%m') objOut = paste('m', substr(year, 3, 4), month, sep='')
hdf4to5(fname) assign(objOut, satinGet(paste(fname, 5, sep=''), lats=c(10, -30), lons=c(-20, -50), itype='oceancolor')) assign(objOut, data.frame(extract(simplifySat(get(objOut), extent=1)))) assign(objOut, cbind(get(objOut), mes=as.integer(month), year=as.integer(year))) return(get(objOut) }
## vetor com o nome de todos os arquivos hdf4 fns = list.files(pattern='\\.hdf$') resultados = lapply(fns, f)
Claramente, eu nao experimentei o codigo acima... e fica pra vc a tarefa de testar e corrigir algum parenteses que esteja faltando ou algum outro problema.
benilton
2012/3/30 Humberto Hazin <hghazin@hotmail.com>
Bom dia Benilton,
Obrigado por responder!
É o seguinte quando baixo a imagem ela já vem com esse número todo (S20040322004060) onde S=seawifs, em seguida vem o ano 2004032 2004060 significa o periodo da coleta do satélite ou seja 032-60 dias de 2004, ou seja mes 2. Assim para o outro arquivo S20040012004031 001-31 dias de 2004 ou seja mes 1
Esse arquivos estão em hdf4 porém preciso converter para hdf5 para poder trabalhar! Então criei uma função no R (hdf4to5) para para ler um executavel de um programa (H4H5TOOLS-2.2.1-win764-vs10static) em segundo plano para esse fim! Uso o pacote Satin para ler o arquivo convertido em hdf5 e fazer as extrações da área que quero ter esses dados "satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor")" como preciso de quadrantes de 1x1 grau uso a função "simplifySat(m0401, extent=1)" em seguida criei uma função no R "extract(m0401)" para extrair tudo em coluna Lat, Long, Parametro...
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Eu não sei se ficou mais claro agora!
Humberto
Em 3/29/2012 9:25 PM, Benilton Carvalho escreveu:
Sim, alguem pode te ajudar... mas depende muito de vc ajudar o alguem primeiro.... Qual o truque para sair de S20040322004060 para "mes 2"? (minha bola de cristal diz que o ano corresponde aos 4 primeiros digitos apos S, mas isso eh soh uma hipotese, jah que vc nao disse explicitamente)
b
2012/3/29 Humberto Hazin <hghazin@hotmail.com>
Prezados,
Venho mais uma vez pedir ajuda a voces para resolver um problema!
baixei uma série de images de satelite, por ano e mes (2004 a 2010) totalizando 163 arquivos ate ai tudo bem! Por termos de comodidade gostaria de criar um loop para nao ter que digitar essas 163 linhas ou mais para extrair latitude, longitude e SST. conforme o codigo abaixo:
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Alguem poderia me ajudar!
Nao coloquei o arquivo pois é muito grande quase 36gigas porém caso precisem posso colocar o parte do codigo para baixarem um ou mais arquivos e testarem
Humberto
_______________________________________________ R-br mailing list R-br@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 listR-br@listas.c3sl.ufpr.brhttps://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.

Olá Benilto, Segue em anexo os resultados gerados pelo teu codigo (result.csv) para que vc possa ter uma ideia do que foi gerado. o que estava perguntando era se seria possivel deixar da seguinte forma anexo (result1.csv) Obrigado mais uma vez Humberto Em 3/30/2012 12:46 PM, Benilton Carvalho escreveu:
nao tenho como ter ideia sobre as "5 colunas", afinal escrevi o codigo sem saber o que sao os dados.
se vc se refere a concatenar todos os data.frames resultantes num data.frame maior, use:
resultados = do.call(rbind, resultados)
b
2012/3/30 Humberto Hazin <hghazin@hotmail.com <mailto:hghazin@hotmail.com>>
Benilton,
Muito obrigado! Resolveu meu problema! So mais uma pergunta. Caso eu queira que os valores fique em apenas 5 colunas como o exemplo abaixo Lat Long Year Mes SST 23 49 2009 1 22 49 2007 1 21 49 2009 2 21 49 2010 1 . . . . . . . . . . . .
Obrigado também ao Cleber!
Um abraço
Humberto
Em 3/30/2012 12:10 PM, Benilton Carvalho escreveu:
f = function(fname){ year = substr(fname, 2, 5) day1 = as.integer(substr(fname, 6, 8)) month = format(as.Date(strptime(paste(year, "01", "01", sep='-'), '%Y-%m-%d'))+day1-1, '%m') objOut = paste('m', substr(year, 3, 4), month, sep='')
hdf4to5(fname) assign(objOut, satinGet(paste(fname, 5, sep=''), lats=c(10, -30), lons=c(-20, -50), itype='oceancolor')) assign(objOut, data.frame(extract(simplifySat(get(objOut), extent=1)))) assign(objOut, cbind(get(objOut), mes=as.integer(month), year=as.integer(year))) return(get(objOut) }
## vetor com o nome de todos os arquivos hdf4 fns = list.files(pattern='\\.hdf$') resultados = lapply(fns, f)
Claramente, eu nao experimentei o codigo acima... e fica pra vc a tarefa de testar e corrigir algum parenteses que esteja faltando ou algum outro problema.
benilton
2012/3/30 Humberto Hazin <hghazin@hotmail.com <mailto:hghazin@hotmail.com>>
Bom dia Benilton,
Obrigado por responder!
É o seguinte quando baixo a imagem ela já vem com esse número todo (S20040322004060) onde S=seawifs, em seguida vem o ano 2004032 2004060 significa o periodo da coleta do satélite ou seja 032-60 dias de 2004, ou seja mes 2. Assim para o outro arquivo S20040012004031 001-31 dias de 2004 ou seja mes 1
Esse arquivos estão em hdf4 porém preciso converter para hdf5 para poder trabalhar! Então criei uma função no R (hdf4to5) para para ler um executavel de um programa (H4H5TOOLS-2.2.1-win764-vs10static) em segundo plano para esse fim! Uso o pacote Satin para ler o arquivo convertido em hdf5 e fazer as extrações da área que quero ter esses dados "satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor")" como preciso de quadrantes de 1x1 grau uso a função "simplifySat(m0401, extent=1)" em seguida criei uma função no R "extract(m0401)" para extrair tudo em coluna Lat, Long, Parametro...
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Eu não sei se ficou mais claro agora!
Humberto
Em 3/29/2012 9:25 PM, Benilton Carvalho escreveu:
Sim, alguem pode te ajudar... mas depende muito de vc ajudar o alguem primeiro.... Qual o truque para sair de S20040322004060 para "mes 2"? (minha bola de cristal diz que o ano corresponde aos 4 primeiros digitos apos S, mas isso eh soh uma hipotese, jah que vc nao disse explicitamente)
b
2012/3/29 Humberto Hazin <hghazin@hotmail.com <mailto:hghazin@hotmail.com>>
Prezados,
Venho mais uma vez pedir ajuda a voces para resolver um problema!
baixei uma série de images de satelite, por ano e mes (2004 a 2010) totalizando 163 arquivos ate ai tudo bem! Por termos de comodidade gostaria de criar um loop para nao ter que digitar essas 163 linhas ou mais para extrair latitude, longitude e SST. conforme o codigo abaixo:
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Alguem poderia me ajudar!
Nao coloquei o arquivo pois é muito grande quase 36gigas porém caso precisem posso colocar o parte do codigo para baixarem um ou mais arquivos e testarem
Humberto
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@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@listas.c3sl.ufpr.br <mailto:R-br@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.

Usando o 'resultados' da minha primeira resposta, na qual postei o codigo: resultadosFinais = do.call(rbind, lapply(resultados, '[', c('lat', 'lng', 'sst', 'mes', 'year'))) Adicionalmente, considere a gentileza de nao enviar arquivos anexados para a lista. benilton 2012/3/30 Humberto Hazin <hghazin@hotmail.com>
Olá Benilto, Segue em anexo os resultados gerados pelo teu codigo (result.csv) para que vc possa ter uma ideia do que foi gerado. o que estava perguntando era se seria possivel deixar da seguinte forma anexo (result1.csv)
Obrigado mais uma vez
Humberto
Em 3/30/2012 12:46 PM, Benilton Carvalho escreveu:
nao tenho como ter ideia sobre as "5 colunas", afinal escrevi o codigo sem saber o que sao os dados.
se vc se refere a concatenar todos os data.frames resultantes num data.frame maior, use:
resultados = do.call(rbind, resultados)
b
2012/3/30 Humberto Hazin <hghazin@hotmail.com>
Benilton,
Muito obrigado! Resolveu meu problema! So mais uma pergunta. Caso eu queira que os valores fique em apenas 5 colunas como o exemplo abaixo Lat Long Year Mes SST 23 49 2009 1 22 49 2007 1 21 49 2009 2 21 49 2010 1 . . . . . . . . . . . .
Obrigado também ao Cleber!
Um abraço
Humberto
Em 3/30/2012 12:10 PM, Benilton Carvalho escreveu:
f = function(fname){ year = substr(fname, 2, 5) day1 = as.integer(substr(fname, 6, 8)) month = format(as.Date(strptime(paste(year, "01", "01", sep='-'), '%Y-%m-%d'))+day1-1, '%m') objOut = paste('m', substr(year, 3, 4), month, sep='')
hdf4to5(fname) assign(objOut, satinGet(paste(fname, 5, sep=''), lats=c(10, -30), lons=c(-20, -50), itype='oceancolor')) assign(objOut, data.frame(extract(simplifySat(get(objOut), extent=1)))) assign(objOut, cbind(get(objOut), mes=as.integer(month), year=as.integer(year))) return(get(objOut) }
## vetor com o nome de todos os arquivos hdf4 fns = list.files(pattern='\\.hdf$') resultados = lapply(fns, f)
Claramente, eu nao experimentei o codigo acima... e fica pra vc a tarefa de testar e corrigir algum parenteses que esteja faltando ou algum outro problema.
benilton
2012/3/30 Humberto Hazin <hghazin@hotmail.com>
Bom dia Benilton,
Obrigado por responder!
É o seguinte quando baixo a imagem ela já vem com esse número todo (S20040322004060) onde S=seawifs, em seguida vem o ano 2004032 2004060 significa o periodo da coleta do satélite ou seja 032-60 dias de 2004, ou seja mes 2. Assim para o outro arquivo S20040012004031 001-31 dias de 2004 ou seja mes 1
Esse arquivos estão em hdf4 porém preciso converter para hdf5 para poder trabalhar! Então criei uma função no R (hdf4to5) para para ler um executavel de um programa (H4H5TOOLS-2.2.1-win764-vs10static) em segundo plano para esse fim! Uso o pacote Satin para ler o arquivo convertido em hdf5 e fazer as extrações da área que quero ter esses dados "satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor")" como preciso de quadrantes de 1x1 grau uso a função "simplifySat(m0401, extent=1)" em seguida criei uma função no R "extract(m0401)" para extrair tudo em coluna Lat, Long, Parametro...
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Eu não sei se ficou mais claro agora!
Humberto
Em 3/29/2012 9:25 PM, Benilton Carvalho escreveu:
Sim, alguem pode te ajudar... mas depende muito de vc ajudar o alguem primeiro.... Qual o truque para sair de S20040322004060 para "mes 2"? (minha bola de cristal diz que o ano corresponde aos 4 primeiros digitos apos S, mas isso eh soh uma hipotese, jah que vc nao disse explicitamente)
b
2012/3/29 Humberto Hazin <hghazin@hotmail.com>
Prezados,
Venho mais uma vez pedir ajuda a voces para resolver um problema!
baixei uma série de images de satelite, por ano e mes (2004 a 2010) totalizando 163 arquivos ate ai tudo bem! Por termos de comodidade gostaria de criar um loop para nao ter que digitar essas 163 linhas ou mais para extrair latitude, longitude e SST. conforme o codigo abaixo:
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Alguem poderia me ajudar!
Nao coloquei o arquivo pois é muito grande quase 36gigas porém caso precisem posso colocar o parte do codigo para baixarem um ou mais arquivos e testarem
Humberto
_______________________________________________ R-br mailing list R-br@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 listR-br@listas.c3sl.ufpr.brhttps://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.

Benilton, Mais uma vez obrigado! Problema resolvido! Não se preocupes não colocarei mais anexos a lista (eu não sabia). Humberto Em 3/30/2012 1:14 PM, Benilton Carvalho escreveu:
Usando o 'resultados' da minha primeira resposta, na qual postei o codigo:
resultadosFinais = do.call(rbind, lapply(resultados, '[', c('lat', 'lng', 'sst', 'mes', 'year')))
Adicionalmente, considere a gentileza de nao enviar arquivos anexados para a lista.
benilton
2012/3/30 Humberto Hazin <hghazin@hotmail.com <mailto:hghazin@hotmail.com>>
Olá Benilto, Segue em anexo os resultados gerados pelo teu codigo (result.csv) para que vc possa ter uma ideia do que foi gerado. o que estava perguntando era se seria possivel deixar da seguinte forma anexo (result1.csv)
Obrigado mais uma vez
Humberto
Em 3/30/2012 12:46 PM, Benilton Carvalho escreveu:
nao tenho como ter ideia sobre as "5 colunas", afinal escrevi o codigo sem saber o que sao os dados.
se vc se refere a concatenar todos os data.frames resultantes num data.frame maior, use:
resultados = do.call(rbind, resultados)
b
2012/3/30 Humberto Hazin <hghazin@hotmail.com <mailto:hghazin@hotmail.com>>
Benilton,
Muito obrigado! Resolveu meu problema! So mais uma pergunta. Caso eu queira que os valores fique em apenas 5 colunas como o exemplo abaixo Lat Long Year Mes SST 23 49 2009 1 22 49 2007 1 21 49 2009 2 21 49 2010 1 . . . . . . . . . . . .
Obrigado também ao Cleber!
Um abraço
Humberto
Em 3/30/2012 12:10 PM, Benilton Carvalho escreveu:
f = function(fname){ year = substr(fname, 2, 5) day1 = as.integer(substr(fname, 6, 8)) month = format(as.Date(strptime(paste(year, "01", "01", sep='-'), '%Y-%m-%d'))+day1-1, '%m') objOut = paste('m', substr(year, 3, 4), month, sep='')
hdf4to5(fname) assign(objOut, satinGet(paste(fname, 5, sep=''), lats=c(10, -30), lons=c(-20, -50), itype='oceancolor')) assign(objOut, data.frame(extract(simplifySat(get(objOut), extent=1)))) assign(objOut, cbind(get(objOut), mes=as.integer(month), year=as.integer(year))) return(get(objOut) }
## vetor com o nome de todos os arquivos hdf4 fns = list.files(pattern='\\.hdf$') resultados = lapply(fns, f)
Claramente, eu nao experimentei o codigo acima... e fica pra vc a tarefa de testar e corrigir algum parenteses que esteja faltando ou algum outro problema.
benilton
2012/3/30 Humberto Hazin <hghazin@hotmail.com <mailto:hghazin@hotmail.com>>
Bom dia Benilton,
Obrigado por responder!
É o seguinte quando baixo a imagem ela já vem com esse número todo (S20040322004060) onde S=seawifs, em seguida vem o ano 2004032 2004060 significa o periodo da coleta do satélite ou seja 032-60 dias de 2004, ou seja mes 2. Assim para o outro arquivo S20040012004031 001-31 dias de 2004 ou seja mes 1
Esse arquivos estão em hdf4 porém preciso converter para hdf5 para poder trabalhar! Então criei uma função no R (hdf4to5) para para ler um executavel de um programa (H4H5TOOLS-2.2.1-win764-vs10static) em segundo plano para esse fim! Uso o pacote Satin para ler o arquivo convertido em hdf5 e fazer as extrações da área que quero ter esses dados "satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor")" como preciso de quadrantes de 1x1 grau uso a função "simplifySat(m0401, extent=1)" em seguida criei uma função no R "extract(m0401)" para extrair tudo em coluna Lat, Long, Parametro...
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Eu não sei se ficou mais claro agora!
Humberto
Em 3/29/2012 9:25 PM, Benilton Carvalho escreveu:
Sim, alguem pode te ajudar... mas depende muito de vc ajudar o alguem primeiro.... Qual o truque para sair de S20040322004060 para "mes 2"? (minha bola de cristal diz que o ano corresponde aos 4 primeiros digitos apos S, mas isso eh soh uma hipotese, jah que vc nao disse explicitamente)
b
2012/3/29 Humberto Hazin <hghazin@hotmail.com <mailto:hghazin@hotmail.com>>
Prezados,
Venho mais uma vez pedir ajuda a voces para resolver um problema!
baixei uma série de images de satelite, por ano e mes (2004 a 2010) totalizando 163 arquivos ate ai tudo bem! Por termos de comodidade gostaria de criar um loop para nao ter que digitar essas 163 linhas ou mais para extrair latitude, longitude e SST. conforme o codigo abaixo:
hdf4to5("S20040012004031.hdf");m0401 <- satinGet("S20040012004031.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0401<-(simplifySat(m0401, extent=1));m0401<-extract(m0401);m0401<-data.frame(m0401);m0401$mes<-1; m0401$year<-2004
hdf4to5("S20040322004060.hdf");m0402 <- satinGet("S20040322004060.hdf5",lats=c(10, -30), lons=c(-20, -50), itype="oceancolor") m0402<-(simplifySat(m0402, extent=1));m0402<-extract(m0402);m0402<-data.frame(m0402);m0402$mes<-2; m0402$year<-2004
Alguem poderia me ajudar!
Nao coloquei o arquivo pois é muito grande quase 36gigas porém caso precisem posso colocar o parte do codigo para baixarem um ou mais arquivos e testarem
Humberto
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@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@listas.c3sl.ufpr.br <mailto:R-br@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.
participantes (3)
-
Benilton Carvalho
-
Cleber N.Borges
-
Humberto Hazin