4. 海水温度
HYCOM模式数据。起止时间:2014年1月1日至2024年9月4日。时间分辨率:3小时。空间分辨率:0.04度。覆盖范围:全球。
数据来源:美国海军实验室(Naval Research Laboratory: Ocean Dynamics and Prediction Branch)。https://www.hycom.org/dataserver/gofs-3pt1/analysis。
import requests
import warnings
import urllib3
from datetime import datetime, timedelta
import os
urllib3.disable_warnings()
warnings.filterwarnings('ignore')
base_url = 'https://data.hycom.org/datasets/GLBv0.08/expt_56.3/data/{year}/'
start_date = datetime(2014,7 , 1)
end_date = datetime(2016, 12, 31, 12)
def generate_dates():
current_date = datetime(start_date.year, start_date.month, start_date.day, 12)
while current_date <= end_date:
yield current_date
current_date += timedelta(days=1)
def format_date(date):
return date.strftime('%Y%m%d%H')
def download_file(url, filename):
try:
session = requests.Session()
session.verify = False
session.mount('https://', requests.adapters.HTTPAdapter(max_retries=3))
response = session.get(url, stream=True, verify=False, proxies={'http': None, 'https': None})
response.raise_for_status()
with open(filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f'成功下载: {filename}')
except Exception as e:
print(f'下载失败 {filename}: {e}')
for date in generate_dates():
year = date.year
date_str = format_date(date)
filename = f'hycom_GLBv0.08_563_{date_str}_t000.nc'
url = f'{base_url.format(year=year)}{filename}'
os.makedirs(str(year), exist_ok=True)
download_file(url, os.path.join(str(year), filename))