
Caros Membros, Estou precisando de ajuda para criar um laço para extrair as coordenadas e o tempo (no nome do arquivo) em múltiplas figuras. No meu exemplo abaixo e usando apenas a figura 1, tenho uma regiões de pixels de interesse em branco e o nome da figura Fig1-0_00_00.png, preciso das coordenadas x e y das regiões em branco (Valor digital = 0), representado pelo objeto fig.data.pix e juntei ao tempo que é 0:00:00, pois o nome da Figura é 0_00_00. Conforme CRM abaixo, fazendo figura por figura esta OK, mas gostaria de fazer um laço para extrair essas informações das três figuras abaixo e armazená-las em um único objeto, alguém teria alguma sugestão? #------------------------------------------------------------------------------- # Rotina para extração de coordenadas e tempo em imagens #------------------------------------------------------------------------------- # Abertura das imagens require(RCurl) #Figura 1 ---------------------------------------------------------------------- get.dropbox <- function(file, token) { require(RCurl, quietly=TRUE) bin <- getBinaryURL(paste0("https://www.dropbox.com/s/8b99gn9ve1yo7is/Fig1-0_00_00.png", token, "/", file), ssl.verifypeer = FALSE) con <- file(file, open = "wb") writeBin(bin, con) close(con) message(noquote(paste(file, "read into", getwd()))) } # get.dropbox("Fig1-0_00_00.png", "Fig1-0_00_00.png") #Figura 2 ---------------------------------------------------------------------- get.dropbox <- function(file, token) { require(RCurl, quietly=TRUE) bin <- getBinaryURL(paste0("https://www.dropbox.com/s/8b99gn9ve1yo7is/Fig2-0_20_00.png", token, "/", file), ssl.verifypeer = FALSE) con <- file(file, open = "wb") writeBin(bin, con) close(con) message(noquote(paste(file, "read into", getwd()))) } # get.dropbox("Fig2-0_20_00.png", "Fig2-0_20_00.png") #Figura 3 --------------------------------------------------------------------- get.dropbox <- function(file, token) { require(RCurl, quietly=TRUE) bin <- getBinaryURL(paste0("https://www.dropbox.com/s/bo6gbt3ca6xwxm0/Fig3-0_40_00.png", token, "/", file), ssl.verifypeer = FALSE) con <- file(file, open = "wb") writeBin(bin, con) close(con) message(noquote(paste(file, "read into", getwd()))) } # get.dropbox("Fig3-0_40_00.png", "Fig3-0_40_00.png") # Extraido as coordenadas dos pixels para figura 1 ----------------------------- require(raster) r <- raster("Fig1-0_00_00.png") image(r) r2<-as.data.frame(r) # Cria as coordenadas ---------------------------------------------------------- grid0 <- expand.grid(x=seq(0,length.out=r@nrows), y=seq(0,length.out=r@ncols)) # Coordenadas + valor dos pixels fig.data<-cbind(grid0,r2) # Região de interesse - Número digital = 0 fig.data.pix<-fig.data[fig.data[,3]==0,] # Extrai o tempo do nome do arquivo tempo2<-r@data@names tempo1<-gsub("Fig1.", "", tempo2) tempo<-gsub("_", ":", tempo1) # Cria o arquivo final dados<-cbind(fig.data.pix[,1:2],rep(tempo)) head(dados) #------------------------------------------------------------------------------- Obrigado, -- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ======================================================================

Alexandre, Fiz isso para imagens de satélite O procedimento que usei para criar o laço foi com um array de 3 dimensões, onde as duas primeiras eram o x e o y e coloquei um matriz "a traz" da outra como se fosse construindo um cubo então tinha um objeto com x,y e t . O registro do nome de cada figura, eu armazenei em um vetor Pra ser sincero, não entendi muito bem sua rotina pois não domino algumas das funções que vc usou mesmo assim mando um exemplo do que fiz, que espero que te ajude. # carregar os arquivos de interesse no diretorio my.dir = dir("/home/tito/tcc/tau",pattern=".nc",full.names=T) # criar a variável nula do array para não dar problema TAU =NULL # loop para ler cada um dos arquivos for(arquivo in my.dir){ # carregar o arquivo pelo nome nc = open.ncdf(arquivo) # extrair variavel de tau em x taux = get.var.ncdf(arquivo,"x") # armazenar a variavel em um array segundo as dimenções e o numero da figura e de acordo com o nome do arquivo TAU = array(c(TAU,taux),dim=c(nrow(taux),ncol(tauy),which(my.dir==arquivo)))) } Espero ter ajudado Tito Conte 2013/12/4 ASANTOS <alexandresantosbr@yahoo.com.br>
Caros Membros,
Estou precisando de ajuda para criar um laço para extrair as coordenadas e o tempo (no nome do arquivo) em múltiplas figuras. No meu exemplo abaixo e usando apenas a figura 1, tenho uma regiões de pixels de interesse em branco e o nome da figura Fig1-0_00_00.png, preciso das coordenadas x e y das regiões em branco (Valor digital = 0), representado pelo objeto fig.data.pix e juntei ao tempo que é 0:00:00, pois o nome da Figura é 0_00_00. Conforme CRM abaixo, fazendo figura por figura esta OK, mas gostaria de fazer um laço para extrair essas informações das três figuras abaixo e armazená-las em um único objeto, alguém teria alguma sugestão?
#----------------------------------------------------------- -------------------- # Rotina para extração de coordenadas e tempo em imagens #----------------------------------------------------------- --------------------
# Abertura das imagens
require(RCurl)
#Figura 1 ------------------------------------------------------------ ---------- get.dropbox <- function(file, token) { require(RCurl, quietly=TRUE) bin <- getBinaryURL(paste0("https://www.dropbox.com/s/ 8b99gn9ve1yo7is/Fig1-0_00_00.png", token, "/", file), ssl.verifypeer = FALSE) con <- file(file, open = "wb") writeBin(bin, con) close(con) message(noquote(paste(file, "read into", getwd()))) } # get.dropbox("Fig1-0_00_00.png", "Fig1-0_00_00.png")
#Figura 2 ------------------------------------------------------------ ---------- get.dropbox <- function(file, token) { require(RCurl, quietly=TRUE) bin <- getBinaryURL(paste0("https://www.dropbox.com/s/ 8b99gn9ve1yo7is/Fig2-0_20_00.png", token, "/", file), ssl.verifypeer = FALSE) con <- file(file, open = "wb") writeBin(bin, con) close(con) message(noquote(paste(file, "read into", getwd()))) } # get.dropbox("Fig2-0_20_00.png", "Fig2-0_20_00.png")
#Figura 3 ------------------------------------------------------------ --------- get.dropbox <- function(file, token) { require(RCurl, quietly=TRUE) bin <- getBinaryURL(paste0("https://www.dropbox.com/s/ bo6gbt3ca6xwxm0/Fig3-0_40_00.png", token, "/", file), ssl.verifypeer = FALSE) con <- file(file, open = "wb") writeBin(bin, con) close(con) message(noquote(paste(file, "read into", getwd()))) } # get.dropbox("Fig3-0_40_00.png", "Fig3-0_40_00.png")
# Extraido as coordenadas dos pixels para figura 1 -----------------------------
require(raster) r <- raster("Fig1-0_00_00.png") image(r) r2<-as.data.frame(r)
# Cria as coordenadas ------------------------------ ---------------------------- grid0 <- expand.grid(x=seq(0,length.out=r@nrows), y=seq(0,length.out=r@ncols))
# Coordenadas + valor dos pixels
fig.data<-cbind(grid0,r2)
# Região de interesse - Número digital = 0
fig.data.pix<-fig.data[fig.data[,3]==0,]
# Extrai o tempo do nome do arquivo tempo2<-r@data@names tempo1<-gsub("Fig1.", "", tempo2) tempo<-gsub("_", ":", tempo1)
# Cria o arquivo final
dados<-cbind(fig.data.pix[,1:2],rep(tempo))
head(dados)
#----------------------------------------------------------- --------------------
Obrigado,
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ======================================================================
_______________________________________________ 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.

Alexandre, boa tarde! Fiz algumas alterações em cima do seu CMR. Veja se há algo que possa lhe servir. #<code r> setwd('C:/LAB/RBASICS/tmp'); getwd() require(raster); require(rgdal) ### Download a partir de uma lista de links ############################################################################## ### A opção "get link" gera algo como " https://www.dropbox.com/s/XXXXXX/file.png" ### para download.file() Use "XXXXXX/file.png" após " http://dl.dropbox.com/s/" ### XXXXXX = token ### links obtidos no seu script links <- c( "https://www.dropbox.com/s/8b99gn9ve1yo7is/Fig1-0_00_00.png", "https://www.dropbox.com/s/8b99gn9ve1yo7is/Fig2-0_20_00.png", ### erro! mesmo token do anterior! "https://www.dropbox.com/s/bo6gbt3ca6xwxm0/Fig3-0_40_00.png") tokens <- gsub("^.*/s/","",dirname(links)) fileNames <- basename(links) newLinks <- file.path("http://dl.dropbox.com/s", tokens, fileNames); newLinks for (a in newLinks) { tryCatch(download.file(a, dest=basename(a), mode='wb'), error=function(...) print("Falha no download!"))} ### Verificando arquivos baixados corretamente ############################################################################## fileInfo <- file.info(fileNames); fileInfo ### observe o segundo arquivo files.OK <- fileNames[fileInfo$size>0 & !is.na(fileInfo$size)]; files.OK ### Operando arquivos baixados corretamente ############################################################################## for (b in files.OK) { t <- strsplit(b,"-|\\.")[[1]][2] tempo <- gsub("_", ":", t) r <- raster(b); #image(r) ### comentado para otimizar XYZ <- data.frame(coordinates(r), values(r), rep(tempo)) XYZ.0 <- XYZ[XYZ[,3]==0,] outName <- paste0('XYZ.0-', t, '.txt') write.table(XYZ, outName, row.names=F) message(noquote(paste(outName, "salvo em", getwd()))) } #</code> Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]

Éder, Perfeito!!!!! Apenas inclui: write.table(XYZ, file ="coordstime.mod", row.names=F,append=T), para que as informações das duas imagens ficassem armazenadas em um único arquivo, Muito Obrigado, Alexandre CRM FINAL: #<code r> setwd('C:/LAB/RBASICS/tmp'); getwd() require(raster); require(rgdal) ### Download a partir de uma lista de links ############################################################################## ### A opção "get link" gera algo como "https://www.dropbox.com/s/XXXXXX/file.png" ### para download.file() Use "XXXXXX/file.png" após "http://dl.dropbox.com/s/" ### XXXXXX = token ### links obtidos no seu script links <- c( "https://www.dropbox.com/s/8b99gn9ve1yo7is/Fig1-0_00_00.png", "https://www.dropbox.com/s/8b99gn9ve1yo7is/Fig2-0_20_00.png", ### erro! mesmo token do anterior! "https://www.dropbox.com/s/bo6gbt3ca6xwxm0/Fig3-0_40_00.png") tokens <- gsub("^.*/s/","",dirname(links)) fileNames <- basename(links) newLinks <- file.path("http://dl.dropbox.com/s", tokens, fileNames); newLinks for (a in newLinks) { tryCatch(download.file(a, dest=basename(a), mode='wb'), error=function(...) print("Falha no download!"))} ### Verificando arquivos baixados corretamente ############################################################################## fileInfo <- file.info(fileNames); fileInfo ### observe o segundo arquivo files.OK <- fileNames[fileInfo$size>0 & !is.na(fileInfo$size)]; files.OK ### Operando arquivos baixados corretamente ############################################################################## for (b in files.OK) { t <- strsplit(b,"-|\\.")[[1]][2] tempo <- gsub("_", ":", t) r <- raster(b); #image(r) ### comentado para otimizar XYZ <- data.frame(coordinates(r), values(r), rep(tempo)) XYZ.0 <- XYZ[XYZ[,3]==0,] outName <- paste0('XYZ.0-', t, '.txt') write.table(XYZ, file ="coordstime.mod", row.names=F,append=T) message(noquote(paste(outName, "salvo em", getwd()))) } #</code> Em 05/12/2013 16:27, Éder Comunello escreveu:
Alexandre, boa tarde!
Fiz algumas alterações em cima do seu CMR. Veja se há algo que possa lhe servir.
#<code r> setwd('C:/LAB/RBASICS/tmp'); getwd() require(raster); require(rgdal)
### Download a partir de uma lista de links ############################################################################## ### A opção "get link" gera algo como "https://www.dropbox.com/s/XXXXXX/file.png" ### para download.file() Use "XXXXXX/file.png" após "http://dl.dropbox.com/s/" ### XXXXXX = token
### links obtidos no seu script links <- c( "https://www.dropbox.com/s/8b99gn9ve1yo7is/Fig1-0_00_00.png", "https://www.dropbox.com/s/8b99gn9ve1yo7is/Fig2-0_20_00.png", ### erro! mesmo token do anterior! "https://www.dropbox.com/s/bo6gbt3ca6xwxm0/Fig3-0_40_00.png")
tokens <- gsub("^.*/s/","",dirname(links)) fileNames <- basename(links) newLinks <- file.path("http://dl.dropbox.com/s", tokens, fileNames); newLinks
for (a in newLinks) { tryCatch(download.file(a, dest=basename(a), mode='wb'), error=function(...) print("Falha no download!"))}
### Verificando arquivos baixados corretamente ############################################################################## fileInfo <- file.info <http://file.info>(fileNames); fileInfo ### observe o segundo arquivo files.OK <- fileNames[fileInfo$size>0 & !is.na <http://is.na>(fileInfo$size)]; files.OK
### Operando arquivos baixados corretamente ############################################################################## for (b in files.OK) { t <- strsplit(b,"-|\\.")[[1]][2] tempo <- gsub("_", ":", t) r <- raster(b); #image(r) ### comentado para otimizar XYZ <- data.frame(coordinates(r), values(r), rep(tempo)) XYZ.0 <- XYZ[XYZ[,3]==0,] outName <- paste0('XYZ.0-', t, '.txt') write.table(XYZ, outName, row.names=F) message(noquote(paste(outName, "salvo em", getwd()))) } #</code>
Éder Comunello <c <mailto:comunello.eder@gmail.com>omunello.eder@gmail.com <mailto:omunello.eder@gmail.com>> Dourados, MS - [22 16.5'S, 54 49'W]
_______________________________________________ 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.
-- ====================================================================== Alexandre dos Santos Proteção Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br Lattes: http://lattes.cnpq.br/1360403201088680 ======================================================================
participantes (3)
-
ASANTOS
-
Tito Conte
-
Éder Comunello