Ich versuche, eine GUI mit gWidgets R-Bibliothek zum Herunterladen von Satellitenbildern zu erstellen. Die Absicht ist, die URLs aus einer kommagetrennten Wertedatei zu lesen. Die GUI sieht gut aus, aber sie tut nicht, was ich von ihr erwarte. Ich mache etwas falsch, jede Hilfe wird sehr geschätzt. HierLesen Sie CSV mit gfilebrowse von gWidgets
sind die Beispieldaten:
Online.Access.URLs <- c("http://e4ftl01.cr.usgs.gov//MODIS_Composites/MOLT/MOD09A1.005/2000.02.18/MOD09A1.A2000049.h09v06.005.2006268183648.hdf",
"http://e4ftl01.cr.usgs.gov//MODIS_Composites/MOLT/MOD09A1.005/2000.02.26/MOD09A1.A2000057.h09v06.005.2006270065224.hdf",
"http://e4ftl01.cr.usgs.gov//MODIS_Composites/MOLT/MOD09A1.005/2000.03.05/MOD09A1.A2000065.h09v06.005.2006269234536.hdf")
Producer.Granule.ID <- c("MOD09A1.A2000049.h09v06.005.2006268183648.hdf",
"MOD09A1.A2000057.h09v06.005.2006270065224.hdf",
"MOD09A1.A2000065.h09v06.005.2006269234536.hdf")
df <- data.frame(Producer.Granule.ID,Online.Access.URLs)
write.csv(df,"C:\\GUI_test\\h09v06v3.csv",row.names=FALSE)
Und das ist mein Versuch:
my.DownloadHDF <- function(){
library(gWidgets)
library(gWidgetstcltk)
library(RCurl)
options(guiToolkit = "tcltk")
win <- gwindow("Download HDF with R!", visible = FALSE)
csv.frame <- gframe("csv file ", container = win)
csv.label <- glabel("csv with HDF's names ", container = csv.frame)
csv.file.name <- gfilebrowse("Select csv file", type="open",cont=csv.frame,action="read.csv")
dir.frame <- gframe("Output Directory ", container = win)
dir.label <- glabel("Where to save HDF's? ", container = dir.frame)
dir.out <- gfilebrowse("Select folder ",type = "selectdir", cont=dir.frame)
dlw.frame <- gframe("Download ", container = win)
dlw.label <- glabel(" ", container = dlw.frame)
btnDwn <- gbutton("Start Download", container = dlw.frame,
handler = function(csv.file.name,dir.out){
df <- read.csv(csv.file.name, header=TRUE,sep=",")
hdf.urls <- df$Online.Access.URLs
hdf.urls <- as.character(hdf.urls)
hdf.names <- df$Producer.Granule.ID
hdf.names <- as.character(hdf.names)
for (i in 1:length(hdf.names)){
URL <- hdf.urls [i]
file <- hdf.names[i]
download.file(URL,paste(dir.out,file,sep=""),mode="wb")
cat(paste("Composite number ",i,"successfully downloaded!"),sep="\n")
cat("\n\n\n\n\n\n\n\n")
}})
visible(win) <- TRUE
}
my.DownloadHDF()
Ich bin mit R-3.2.2 mit RStudio 0,98. 1103.
Haben Sie über glänzende Verwendung gedacht? Es sieht einfacher aus als gWidgets. – YCR
Hallo YCR, danke für deine Antwort. Ich habe keine Erfahrung damit, GUI mit R zu erstellen. Ich habe mich kurz mit shiny und gWdigets befasst, und ich fand letzteres intuitiver. Die GUI, die ich erstellt habe, macht die Arbeit bis zu einem bestimmten Punkt, das Problem ist, dass ich nicht weiß, wie man die Funktion liest die CSV-Datei. Irgendeine Idee? – Shepherd
Es gab Probleme mit gWidgets2tcltk und Shiny. Vielleicht gibt es jetzt behoben. Wenn es funktioniert, dann ist 'read.csv' dein Freund. Es kann in einem Handler aufgerufen werden: 'a = gfilebrowse (cont = w, handler = Funktion (h, ...) x << - read.csv (svalue (h $ obj)))' Dies wird x zugeordnet Werte eingelesen. Es sollte dort eine Validierung sein, aber Sie können das hinzufügen. Sie können aber auch "gcombobox" verwenden, wenn Sie eine vorbelegte URL-Liste auswählen. – jverzani