2016-11-21 14 views
0

OPENDAPと呼ばれるオープンなオンラインデータベースからnetcdfファイルをダウンロードして開こうとしています。 OPENDAPのサーバーデータセットのアクセスフォームから直接データファイルをダウンロードし、ファイル名を「MUR_JPL_L4_GLOB_opendap.nc.nc4」とすると、R Studioでデータをダウンロードして正常に表示できます。私は私のブラウザに直接データアクセス、フォームのデータURLを挿入するとさらにWindows R 64bitのOPeNDAPからnetcdfファイルをダウンロードして開く

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

、(例えば、「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_browser.nc.nc4』、私がダウンロードしたデータを表示することができますR Studioで正常に終了しました。

私は上記R Studio内のURLから直接データをダウンロードするdownload.fileの()関数を使用しようとすると、私は成功したとしても、ファイルをダウンロードすることができます
library("ncdf4") 
GHRSST<-nc_open("MUR_JPL_L4_GLOB_browser.nc.nc4") 
print(GHRSST) 
nc_close(GHRSST) 

。しかし

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") 

、パッケージからのnc_open()関数を使用してR Studioで開くことができませんRStudio(「MUR_JPL_L4_GLOB_rstudio.nc.nc4」)の中にダウンロードされたこのデータファイル「ncdf4。」以下のコードでファイルを開こうとすると、R Studioは「アサーション失敗」エラーを報告し、すぐ後でR Studioがクラッシュします。

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

マイスタジオバージョンとncdf4パッケージが最新です。私は同様のエラーメッセージとクラッシュでRguiで同じコードを試しました。私も同じ結果を別のコンピュータ上でこれを試してみました、そのような「ダウンローダ」パッケージ内の「ダウンロード」として別のダウンロード機能を使用しますが、それはまた同じように失敗しています。私はまた、大きなファイルサイズに問題がある場合には、ファイルの小さなサブセットをダウンロードしているが、これは助けにはなりませんでした。

私の質問は以下のとおりです。

1)ファイルが正しく私のブラウザ機能によって直接ダウンロードしながら、なぜdownload.fileの()関数を使用してRStudioことで、ダウンロードしたファイルを開くと、R Studioでクラッシュを強制しますか? 2)あなたはこの問題を過ぎて私を得るであろう任意の修正を知っていますか?

私の究極の目標は、ダウンロードして手動で私のブラウザを使用して、すべてのデータをダウンロードする理由は、これらのファイルの多くのプロセスは、良い選択肢ではないことです。

Rバージョン3.3.2(2016年10月31日) プラットフォーム:x86_64の-W64-MINGW32/x64(64ビット) の下で実行次のよう

私のSessionInfoは()であるWindowsの> = 8 x64の(ビルド9200)

ロケール: [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

添付の基本パッケージ:[1] 210は、統計グラフィックgrDevices utilsのデータセットメソッドベース

他の取り付けパッケージ: [1] ncdf4_1.15

名前空間を介してロード(および取り付けられていない): [1] tools_3.3.2

ご協力いただきありがとうございます。

答えて

1

私はこれを見ただけで、同じ問題を解決しようとしています。私はPODAACのftpサーバーからR経由でダウンロードしていて、mapply(download.file())を使ってループを試していました。私の問題はmapply()で、何とかダウンロードしたファイルを正しくビルドしていないと思います。RStudioまたはベースRからダウンロードしたファイルを開くことができませんでしたが、手動でftpを実行しても問題ありませんでした。

私のために働いているように見える解決策は、個々のディレクトリのファイル名を取得すると(私は数年に渡ってそれぞれ独自のフォルダを使用してダウンロードしています)、各インスタンスに対してdownload.file()を実行します。

# 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

更新:ループのURL部分が正しく動作していないようです。 URLの別のベクトルを作成しようとしましたが、url_list [i]を呼び出すと、download.file(url = filenamesNC [j]、destfile = paste0(url_year [i]まだ運がありません。 – Jbell

関連する問題