DATA ACCESS:https://oceandata.sci.gsfc.nasa.gov/directdataaccess/
📌 问题分析
下载文件 每个只有 9.6KB,这可能是因为:
- 请求的文件并不存在,NASA 服务器返回的是 HTML 错误页面(例如 404 Not Found)。
- NASA 要求登录认证,而你没有提供 Earthdata 账户认证,导致下载的是 一个错误页面。
- 文件下载 URL 有问题,可能需要使用 requests.get(file_url, allow_redirects=True) 处理重定向。
解决过程
(在命令行下载 NASA MODIS 叶绿素数据)
第一步:生成 NASA Earthdata 认证 Cookie
- 在终端运行以下命令,替换
your_username
和your_password
wget --save-cookies ~/.urs_cookies --keep-session-cookies --auth-no-challenge=on \
--user=your_username --password=your_password \
"https://oceandata.sci.gsfc.nasa.gov/cgi/getfile/AQUA_MODIS.20020701_20020731.L3m.MO.CHL.chlor_a.9km.nc"
这将:
- 使用 your_username 和 your_password 登录 NASA Earthdata 服务器
- 生成 ~/.urs_cookies 认证文件
- 下载 AQUA_MODIS 叶绿素数据
第二步:使用 wget 获取文件列表
运行以下命令:
wget --post-data="results_as_file=1&sensor_id=7&dtid=1043&sdate=1967-01-01 00:00:00&edate=2025-01-01 00:00:00&subType=1&prod_id=chlor_a&resolution_id=9km&period=MO" -O file_list.txt https://oceandata.sci.gsfc.nasa.gov/api/file_search
✅ file_list.txt 现在包含 NASA 服务器返回的 .nc 文件名。
第三步:将文件名转换为完整的 NASA 下载链接
运行以下命令:
awk '{print "https://oceandata.sci.gsfc.nasa.gov/cgi/getfile/" $1}' file_list.txt > download_list.txt
✅ download_list.txt 现在包含完整的 NASA 下载链接。
第四步:批量下载多个文件
如果你有多个文件(例如 file_list.txt),你可以使用:
wget --load-cookies ~/.urs_cookies -i file_list.txt -P ./MODIS_Chlorophyll/
📌 说明
--load-cookies ~/.urs_cookies
👉 使用 NASA Earthdata 认证-i download_list.txt
👉 从download_list.txt
读取下载链接-P ./MODIS_Chlorophyll/
👉 将文件存放到MODIS_Chlorophyll/
目录
例2:下载 CZCS 叶绿素浓度(1978-1986)的 wget 指令
0. 要下载 CZCS 卫星 的 叶绿素浓度(Chlorophyll-a) 数据,时间范围为 1978-10-30 到 1986-06-22,分辨率 9km,时间分辨率 Monthly(MO)
原始 wget 指令(网页提供的):
wget -q --post-data="results_as_file=1&sensor_id=11&dtid=1154&sdate=1978-10-30 00:00:00&edate=1986-06-22 00:00:00&subType=1&prod_id=chlor_a&resolution_id=9km&period=MO" -O - https://oceandata.sci.gsfc.nasa.gov/api/file_search
1. 修改后 wget 下载指令
该指令用于 获取 CZCS 叶绿素浓度 .nc
文件列表
获取 CZCS 叶绿素数据列表
wget --post-data="results_as_file=1&sensor_id=11&dtid=1154&sdate=1978-10-30 00:00:00&edate=1986-06-22 00:00:00&subType=1&prod_id=chlor_a&resolution_id=9km&period=MO" \
-O czcs_file_list.txt https://oceandata.sci.gsfc.nasa.gov/api/file_search
这将生成 czcs_file_list.txt,包含所有 .nc 文件的 URL
2. 转换文件列表为可下载的 URL
awk '{print "https://oceandata.sci.gsfc.nasa.gov/cgi/getfile/" $1}' czcs_file_list.txt > czcs_download_list.txt
3. 批量下载所有 CZCS 数据
wget --load-cookies ~/.urs_cookies -i czcs_download_list.txt -P ./CZCS_Chlorophyll/
例2:SeaWiFS 叶绿素浓度数据(1997-2010)下载命令
1️⃣ 获取 SeaWiFS 叶绿素浓度 .nc 文件列表
wget --post-data="..." -O seawifs_file_list.txt https://oceandata.sci.gsfc.nasa.gov/api/file_search
2️⃣ 检查是否有数据
cat seawifs_file_list.txt
3️⃣ 转换为可下载 URL
awk '{print "https://oceandata.sci.gsfc.nasa.gov/cgi/getfile/" $1}' seawifs_file_list.txt > seawifs_download_list.txt
4️⃣ 批量下载
wget --load-cookies ~/.urs_cookies -i seawifs_download_list.txt -P ./SeaWiFS_Chlorophyll/