2016-11-21 2 views
0

J'essaie de télécharger et d'ouvrir des fichiers netcdf à partir d'une base de données ouverte en ligne appelée OPenDAP. Lorsque je télécharge les fichiers de données directement à partir du formulaire d'accès au jeu de données de serveur OPenDAP, en nommant le fichier "MUR_JPL_L4_GLOB_opendap.nc.nc4", je peux télécharger et afficher les données avec succès dans R Studio.Téléchargement et ouverture de fichiers netcdf à partir de OPeNDAP dans Windows R 64bit

library("ncdf4") 
GHRSST<-nc_open("MUR_JPL_L4_GLOB_opendap.nc.nc4") 
print(GHRSST) 
nc_close(GHRSST) 

En outre, lors de l'insertion URL données du formulaire d'accès aux données directement dans mon navigateur (par exemple, « http://podaac-opendap.jpl.nasa.gov/opendap/allData/ghrsst/data/GDS2/L4/GLOB/JPL/MUR/v4.1/2009/009/20090109090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc.nc4?lat[0:1:17998],lon[0:1:35999],analysed_sst[0:1:0][0:1:17998][0:1:35999] »), en nommant le fichier, « MUR_JPL_L4_GLOB_browser.nc.nc4 », je peux télécharger et visualiser les données avec succès dans R Studio.

library("ncdf4") 
GHRSST<-nc_open("MUR_JPL_L4_GLOB_browser.nc.nc4") 
print(GHRSST) 
nc_close(GHRSST) 

Lorsque je tente d'utiliser la fonction download.file() pour télécharger les données directement à partir de l'URL ci-dessus dans R studio, je peux télécharger le fichier avec succès aussi bien.

download.file("http://podaac-opendap.jpl.nasa.gov/opendap/allData/ghrsst/data/GDS2/L4/GLOB/JPL/MUR/v4.1/2009/009/20090109090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc.nc4?lat[0:1:17998],lon[0:1:35999],analysed_sst[0:1:0][0:1:17998][0:1:35999]","MUR_JPL_L4_GLOB_rstudio.nc.nc4") 

Cependant, ce fichier de données qui a été téléchargé au sein rstudio (« MUR_JPL_L4_GLOB_rstudio.nc.nc4 ») ne peut pas être ouvert en R Studio en utilisant la fonction de l'emballage nc_open() « ncdf4. » Lorsque j'essaie d'ouvrir le fichier avec le code ci-dessous, R Studio signale une erreur "Assertion a échoué" et R Studio se bloque immédiatement après.

library("ncdf4") 
GHRSST<-nc_open("MUR_JPL_L4_GLOB_rstudio.nc.nc4") 
ASSERTION FAILED!... 

La version de My R Studio et le package ncdf4 sont à jour. J'ai essayé le même code dans Rgui avec un message d'erreur similaire et crash. J'ai aussi essayé ceci sur un autre ordinateur avec le même résultat et en utilisant une fonction de téléchargement différente comme "download" dans le paquet "downloader" mais elle a également échoué de la même manière. J'ai également téléchargé un petit sous-ensemble du fichier au cas où il y aurait un problème avec la taille du fichier, mais cela n'a pas aidé.

Mes questions sont les suivantes:

1) Pourquoi ouvrir le fichier téléchargé par rstudio en utilisant la force de la fonction download.file() un crash dans R studio tandis que les fichiers téléchargés directement par ma fonction de navigateur correctement? 2) Connaissez-vous des correctifs qui me permettraient de surmonter ce problème?

Mon but ultime est de télécharger et traiter beaucoup de ces fichiers, c'est pourquoi le téléchargement de toutes les données manuellement en utilisant mon navigateur n'est pas une bonne option.

mon sessionInfo() est la suivante:

version R 3.3.2 (31/10/2016) Plate-forme: x86_64-w64-mingw32/x64 (64 bits) Fonctionnant sous Windows> = 8 x 64 (build 9200)

locale

: [1] LC_COLLATE = English_United States.1252 LC_CTYPE = English_United States.1252 LC_MONETARY = English_United States.1252 [4] LC_NUMERIC = C = LC_TIME English_United States.1252

paquets de base attachés: [1] Statistiques graphiques grDevices utils jeux de données de base méthodes

autres des paquets attachés: [1] ncdf4_1.15

chargé par l'intermédiaire d'un espace de nommage (et non jointe): [1] tools_3.3.2

Merci d'avance pour votre aide.

Répondre

1

Je viens juste de voir cela et j'ai essayé de résoudre le même problème. Je télécharge également à partir du serveur ftp PODAAC via R et essayait une boucle en utilisant mapply(download.file()). Je pense que mon problème était avec mapply() et de toute façon il ne construisait pas les fichiers téléchargés correctement (je ne pouvais pas les ouvrir après avoir téléchargé via RStudio ou base R mais ils étaient bien si je l'ai fait manuellement à partir du ftp).

La solution qui semble fonctionner pour moi est d'ajouter dans une deuxième boucle que, une fois que vous avez les noms de fichiers pour le répertoire individuel (je télécharge depuis plusieurs années, chacun avec son propre dossier), exécute download.file() pour chaque instance.

# ftp://podaac-ftp.jpl.nasa.gov/allData/modis/L3/aqua/4um/v2014.0/4km/monthly 
#monthly SST data, one folder per year 
require(ncdf4) 
require(RNetCDF) 
require(RCurl) 

month <- c("01", "02", "03", "04", "05", "06", "07", 
     "08", "09", "10", "11", "12") #months to download 
url_year <- seq(2003, 2016, 1) #years to download 

for(i in 1:length(url_year)){ 
    url <- paste0("ftp://podaac-ftp.jpl.nasa.gov/allData/modis/L3/aqua/4um/v2014.0/4km/monthly/", url_year[i], "/") 
    filenames = getURL(url, ftp.use.epsv = FALSE, dirlistonly = TRUE, crlf = TRUE) 
    filenames = paste(url, strsplit(filenames, "\r*\n")[[1]], sep = "") 
    filenamesNC = filenames[c(seq(1, 23, 2))] #subset only the netcdf files 
    for(j in 1:length(filenames)){ 
    download.file(url = filenamesNC[j], destfile = paste0(url_year[i], "_", month[j],"_sst4_4km.nc"), mode="wb") 
    } 
} 
+0

Mise à jour: la partie URL de la boucle ne semble pas fonctionner correctement. Erreur dans download.file (url = noms de fichiersNC [j], destfile = paste0 (url_year [i],: schéma non pris en charge dans l'URL 'NA' Vous avez essayé de créer un vecteur séparé d'URL et d'appeler url_list [i] mais pas encore de chance. – Jbell