首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python从OpenDAP批量下载数据

使用Python从OpenDAP批量下载数据
EN

Stack Overflow用户
提问于 2018-11-15 07:12:35
回答 1查看 1.7K关注 0票数 1

我正在尝试从.nc下载多个OpenDAP文件。当我手动下载文件时(没有脚本),这些文件就会像预期的那样工作。为了加快处理速度,我有一个脚本,可以批量下载数据。但是,当我使用xarray下载数据时,文件要大10倍,文件似乎已经损坏。

我的剧本是这样的:

代码语言:javascript
复制
import pandas as pd
import xarray as xr
import os
import numpy as np

dates = pd.date_range(start='2016-01-01',end='2016-01-05',freq='D')
my_url = "http://www.ifremer.fr/opendap/cerdap1/ghrsst/l4/saf/odyssea-nrt/data/"

print("  ")
print("Downloading data from OPeNDAP - sit back, relax, this will take a while...")
print("...")
print("...")

# Create a list of url's 
data_url = []
cnt = 0
for i in np.arange(1,5):
    ii = i+1

    data_url.append(my_url + str(dates[cnt].year)+"/"+ str('%03d'%+ii)+"/"\
        +str(dates[cnt+1].year)+str('%02d'%dates[cnt+1].month)+str('%02d'%dates[cnt+1].day)\
        +"-IFR-L4_GHRSST-SSTfnd-ODYSSEA-SAF_002-v2.0-fv1.0.nc?time[0:1:0],lat[0:1:1749],lon[0:1:2249],analysed_sst[0:1:0][0:1:1749][0:1:2249],analysis_error[0:1:0][0:1:1749][0:1:2249],mask[0:1:0][0:1:1749][0:1:2249],sea_ice_fraction[0:1:0][0:1:1749][0:1:2249]")

    cnt = cnt+1

url_list = data_url

# Download data from the url's
count = 0
for data in url_list:
    print('Downloading file:', str(count))
    ds = xr.open_dataset(data,autoclose=True)
    fname = 'SAFodyssea_sst'+str(dates[count+1].year)+str('%02d'%dates[count+1].month)+str('%02d'%dates[count+1].day)+'.nc'
    ds.to_netcdf(fname)
    count = count +1
    del ds, fname

print('DONE !!!')

我有0.10.8版的xarray。我尝试使用python2.7和python 3.5.6以及在windows 10和Ubuntu 16.04上运行这个程序,并得到了相同的结果。

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-16 23:45:19

这些文件中的每一个都作为netCDF文件的关联URL,例如,002-v2.0-fv1.0.nc

解决这个问题的一个简单方法是使用一个库(如请求)来下载每个文件,例如,如下所述:How to download large file in python with requests.py?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53314156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档