以下资源来自网络,本文仅转载,希望可以帮到有需要的同学们!3 U; O8 u5 C& ?& R4 ]9 @" i
2 ?* q# h0 B9 [
【前提】 最近有同学问如何批量下载海冰密集度的数据,很久前在家园里了解到了wget,今天以这个为例整理一哈…当然,实现的方式还有很多,这里用的是shell来完成。
; d9 E# w- A1 N1 ^! H2 {
& B- S* A+ w8 K4 h" @A【数据】 A.1 数据名Sea Ice Concentrations from Nimbus-7 SMMR and DMSP SSM/I-SSMISPassive Microwave Data, Version 1 A.2 数据主页 https://nsidc.org/data/nsidc-0051/; 数据说明 www.52ocean.cn
, ?; |+ _3 _. k l6 b w4 v
8 d3 v6 z8 O( n9 {$ r, W
B 【需求】 B.1 需要下载该数据集海冰的数据,由于数据存放方式是根据时间建立的路径,需要遍历下载。如/n5eil01u.ecs.nsidc.org/PM/NSIDC-0051.001/2000.04.22 7 X' z' b* b3 q. T1 \' j/ V
C【实现方式】 创建文件$ vim down_sea_ice.sh 根据需求修改代码 0 v/ }- X9 v. N8 c3 r! `4 F: k1 W$ n
在终端中$bashdown_sea_ice.sh . b: O5 ^7 g: K) @& P; C) o
9 k# U: E& X; F" a6 g
" I5 ^6 A$ t4 C! e1 P+ e6 ]# n
% v9 \5 B% j- U; P
C.1 使用语言:shell。MATLAB、python等也可,后面介绍。 C.2 思路:通过wget进行下载 利用shell,设置起始时间和结束时间,循环生成每个路径后,再利用wget进行下载。 3 y! R: n& J. q' \! o" `" }
C.3 代码 - #
- # www.52ocean.cn
- startdate=2000-01-01
- enddate=2010-12-31
- sDateTs=`date -j -f "%Y-%m-%d" $startdate "+%s"`
- eDateTs=`date -j -f "%Y-%m-%d" $enddate "+%s"`
- dateTs=$sDateTs
- offset=86400
- while [ "$dateTs" -le "$eDateTs" ]
- do
- date=`date -j -f "%s" $dateTs "+%Y-%m-%d"`
- year=`date -j -f "%s" $dateTs "+%Y"`
- month=`date -j -f "%s" $dateTs "+%m"`
- day=`date -j -f "%s" $dateTs "+%d"`
- printf "wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --keep-session-cookies --no-check-certificate --auth-no-challenge=on -r --reject \047index.html*\047 -np -e robots=off www.52ocean.cn\n" $year $month $day $year $month $day
- wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --keep-session-cookies --no-check-certificate --auth-no-challenge=on -r --reject 'index.htm;*' -c -np -e robots=off -A "*_n.*" "https://n5eil01u.ecs.nsidc.org/PM/NSIDC-0051.001/${year}.${month}.${day}/"
- dateTs=$(($dateTs+$offset))
- done
0 K! W4 ?! H3 H* q
4 I5 p% A" d3 _( b7 h" z, H5 o* A[color=rgb(255, 0, 0) !important]复制代码: u/ j& u. U5 }3 D
! R. @) N* @+ O6 O" }
代码中配置时间,循环时间,生成路径,wget下载【linux】 wget--load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies--keep-session-cookies --no-check-certificate --auth-no-challenge=on -r --reject 'index.htm;*' -c -np -erobots=off -A "*_n.*" "https://n5eil01u.ecs.nsidc.org/PM/NSIDC-0051.001/${year}.${month}.${day}/" 【windows】 wget--http-user=[USERNAME] --http-password=[PASSWORD] --load-cookies mycookies.txt--save-cookies mycookies.txt --keep-session-cookies--no-check-certificate--auth-no-challenge -r --reject "index.html*" –c-np -e robots=off -A "*_n.*""https://n5eil01u.ecs.nsidc.org/PM/NSIDC-0051.001/${year}.${month}.${day}/" 基本参考冰雪中心给的下载方式(下面有网址),额外加了 1. -c:断点 2. -A "*_n.*" :通配符,可下载北极的数据,见图1中的蓝色方框。若只下载bin文件,则改为-A "*_n.bin" ( x7 K8 }' {( n0 b3 f
参考网址:https://nsidc.org/support/faq/what-options-are-available-bulk-downloading-data-https-earthdata-login-enabled
2 E. I. i2 P# t% x' `, B) d$ e! G
- {4 Q7 c* a+ A# K& J, b8 r( X" H5 \& N
% H( ]* R+ s/ ?, m7 R0 U+ ?C.4 遇到的问题: 最初使用了绝对路径,发现出现了404错误,排查发现是 文件名是nt_20100105_f17_v1.1_n.bin。之前以为‘f17‘是不变的。 下面是错误记录
; s0 H. T, o( D
9 U4 R6 N0 W3 b1 G. B: r【报错】 下载2000年的数据发现404报错 wget --load-cookies ~/.urs_cookies --save-cookies~/.urs_cookies --keep-session-cookies --no-check-certificate--auth-no-challenge=on -r --reject 'index.html*' -np -e robots=offwww.52ocean.cn Resolving n5eil01u.ecs.nsidc.org... 128.138.97.102 Connecting to n5eil01u.ecs.nsidc.org|128.138.97.102|:443...connected. HTTP request sent, awaiting response... 404 Not Found 2019-06-11 16:12:17 ERROR 404: Not Found. 【原因】 文件名发生变化 变成了f07 不是 n07 nt_20100105_f17_v1.1_n.bin 【解决思路】 1 找到f编号的规则 或者 变通配符 7 l# ~0 U8 Y1 q: ?* J7 z
参考
& v f( q, Y6 {( A- f; r2 ]1 `同时我也记录在了气象家园的网上 www.52ocean.cn |