gpt4 book ai didi

python - 如何使用 python 下载 nasa 卫星 OPeNDAP 数据

转载 作者:行者123 更新时间:2023-11-28 22:33:17 26 4
gpt4 key购买 nike

我已经尝试过请求、pydap、urllib 和 netcdf4,但在尝试下载以下 NASA 数据时总是出现重定向错误或权限错误:

GLDAS_NOAH025SUBP_3H:GLDAS Noah 陆地表面模型 L4 3 每小时 0.25 x 0.25 度子集 V001 ( http://disc.sci.gsfc.nasa.gov/uui/datasets/GLDAS_NOAH025SUBP_3H_V001/summary?keywords=Hydrology )

我正在尝试下载大约 50k 个文件,这里是一个例子,粘贴到 google chrome 浏览器时可以正常工作(如果您有正确的用户名和密码):

http://hydro1.gesdisc.eosdis.nasa.gov/daac-bin/OTF/HTTP_services.cgi?FILENAME=%2Fdata%2FGLDAS_V1%2FGLDAS_NOAH025SUBP_3H%2F2016%2F244%2FGLDAS_NOAH025SUBP_3H.A2016244.2100.001.2016256190725.grb&FORMAT=TmV0Q0RGLw&BBOX=-11.95%2C28.86%2C-0.62%2C40.81&LABEL=GLDAS_NOAH025SUBP_3H.A2016244.2100.001.2016286201048.pss.nc&SHORTNAME=GLDAS_NOAH025SUBP_3H&SERVICE=SUBSET_GRIB&VERSION=1.02&LAYERS=AAAB&DATASET_VERSION=001

有人有过使用 python 从网络获取 OPeNDAP NASA 数据的经验吗?如果需要,我很乐意提供更多信息。

这是给出 401 错误的请求尝试:

import requests

def httpdownload():
'''loop through each line in the text file and open url'''
httpfile = open(pathlist[0]+"NASAdownloadSample.txt", "r")
for line in httpfile:
print line
outname = line[-134:-122]+".hdf"
print outname
username = ""
password = "*"
r = requests.get(line, auth=("username", "password"), stream=True)
print r.text
print r.status_code
with open(pathlist[0]+outname, 'wb') as out:
out.write(r.content)
print outname, "finished" # keep track of progress

这是给出重定向错误的 pydap 示例:

import install_cas_client
from pydap.client import open_url

def httpdownload():
'''loop through each line in the text file and open url'''
username = ""
password = ""
httpfile = open(pathlist[0]+"NASAdownloadSample.txt", "r")
fileone = httpfile.readline()
filetot = fileone[:7]+username+":"+password+"@"+fileone[7:]
print filetot
dataset = open_url(filetot)

最佳答案

我没有找到使用 python 的解决方案,但根据我现在掌握的信息,它应该是可能的。我将 wget 与 .netrc 文件和 cookie 文件一起使用,如下所示 (https://disc.gsfc.nasa.gov/information/howto?title=How%20to%20Download%20Data%20Files%20from%20HTTP%20Service%20with%20wget):

#!/bin/bash 

cd # path to output files
touch .netrc
echo "machine urs.earthdata.nasa.gov login <username> password <password>" >> .netrc
chmod 0600 .netrc
touch .urs_cookies
wget --content-disposition --trust-server-names --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --auth-no-challenge=on --keep-session-cookies
-i <path to text file of url list>

希望它能帮助任何其他使用来自该服务器的 NASA 数据的人。

关于python - 如何使用 python 下载 nasa 卫星 OPeNDAP 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40088745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com