一、环境配置
pip install oafuncs# 版本要求: >= 0.0.99# Python版本:3.10 ~ 3.13
二、核心功能
2.1 数据时间范围
如果你不确定数据的时间覆盖范围,可以使用这个函数生成一张时间范围图,方便查看。
import oafuncsoafuncs.oa_down.hycom_3hourly.draw_time_range()
运行后,会在当前文件夹下生成一张图片,展示所有可用的3小时分辨率数据的时间段。

小提示:
最新数据会有几天延迟(约8天),属于正常情况,暂时设置为2030年。
时间分辨率固定为3小时(00, 03, 06, ... , 21)。
2.2 下载功能
from oafuncs.oa_down.hycom_3hourly import downloadif __name__ == "__main__":download_dict = {"water_u": {"simple_name": "u", "download": 1},"water_v": {"simple_name": "v", "download": 1},"surf_el": {"simple_name": "ssh", "download": 1},"water_temp": {"simple_name": "temp", "download": 0},"salinity": {"simple_name": "salt", "download": 0},"water_u_bottom": {"simple_name": "u_b", "download": 0},"water_v_bottom": {"simple_name": "v_b", "download": 0},"water_temp_bottom": {"simple_name": "temp_b", "download": 0},"salinity_bottom": {"simple_name": "salt_b", "download": 0},}var_list = [var_name for var_name in download_dict.keys() if download_dict[var_name]["download"]]single_var = Falseoptions = {"variables": var_list,"start_time": "2018010100",# "end_time": "2019010100","end_time": "2020080921","output_dir": r"I:\Data\HYCOM\test","lon_min": 72,"lon_max": 160,"lat_min": -7.5,"lat_max": 55,"workers": 2,"overwrite": False,"depth": None,"level": None,"validate_time": None,# "validate_time": True,# "idm_path": r"D:\Programs\Internet Download Manager\IDMan.exe","interval_hours": 3,}if single_var:for var_name in var_list:options["variables"] = var_namedownload(**options)else:download(**options)
参数说明(以最新函数说明为主):

深度可选:
level_depth = [0.0, 2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 125.0, 150.0, 200.0, 250.0, 300.0, 350.0, 400.0, 500.0, 600.0, 700.0, 800.0, 900.0, 1000.0, 1250.0, 1500.0, 2000.0, 2500.0, 3000.0, 4000.0, 5000]2.3 合并文件
如果你需要将多个时间点的文件合并成一个,可以使用merge函数。
# 简单示例file_list = []for time_str in time_list:file_list.append(root_path + rf'/HYCOM_{var_name}_{time_str}.nc')# orimport oafuncsfile_list = oafuncs.oa_file.find_file(root_pat,f'HYCOM_{var_name}*nc')# --------------------------------------------------------------------------------------oafuncs.oa_nc.merge(file_list, var_name, 'time', root_path + rf'/HYCOM_{var_name}_{merge_name}.nc')
三、下载效果

运行时会显示下载进度,偶尔出现超时等提示是正常的,最终能成功下载即可。
四、常见问题
1. 下载失败或超时?
可以多运行几次代码,工具会自动补缺。
检查网络,或降低并行数。
2. 某些时刻数据不存在?
可能是官网确实没有该时次数据,建议去官网核实。
3. IP被封怎么办?
如果并行下载过于频繁或并行数开太大,可能会被封IP,通常一天后会解封。建议串行下载,降低频率。
最后提醒:请以最新版库为准,文中示例代码可能会有微调。
夜雨聆风