Open-Meteo 完整介绍(重点:海洋洋流/海浪,开源、免费、无API Key)

Open-Meteo 是开源、免费、无需注册、无API Key的气象/海洋预报API项目,聚合全球多家官方气象机构的数值预报模型,统一封装成简单HTTP接口,返回JSON/CSV,前端GIS项目(OpenLayers、deck.gl)可以直接调用点位的海洋数据。

官网:https://open-meteo.com/

开源:后端代码开源,支持本地私有化部署;协议 CC BY 4.0,使用时需要注明来源。

✅ 核心特点

  1. 不用申请key,GET直接请求
    非商用:每日最多1万次请求免费;超过额度、商用需要订阅。
  2. 多模型自动融合 best_match
    自动根据经纬度,挑选当前位置分辨率最高的模型;也可以手动指定 ECMWF / GFS / ICON 等模型。
  3. 时间粒度:小时级 ,预报最长16天;历史再分析数据可追溯到1940年(ERA5)。
  4. 支持多输出格式:JSON(默认)、CSV、XLSX。
  5. 源码开源,你可以自建服务,不用依赖官方服务器。

📚 数据源(来自各国官方气象中心)

ECMWF欧洲中期预报中心、NOAA、DWD德国气象局、法国气象局Météo-France、日本气象厅JMA、中国气象局CMA、UK Met Office等30+套数值模式,每天拉取TB级原始数据做统一预处理、插值、时间对齐。

🌊 Marine Weather API(海洋接口,对你最关键!)

端点:[https://api.open-meteo.com/v1/marine](https://api.open-meteo.com/v1/marine)

包含洋流 ocean_current(你之前ECCO/HYCOM对比的场景)+海浪

海洋变量列表

参数 含义 说明
ocean_current_velocity 洋流流速 km/h、m/s、knots可选
ocean_current_direction 洋流流向 洋流往哪个方向流,0=向北,90=向东
wave_height 有效浪高 米
wave_direction 浪向 波浪从哪个方向来
wave_period 波浪周期 秒

⚠️ 重要限制(和ECCO/HYCOM对比)

  1. Open-Meteo 的洋流是点位时序数据,不是网格化栅格/GeoJSON !
    ✅ 适合:查询某个坐标点的洋流流速流向,做单点探针。
    ❌ 不适合:直接拿到全球海洋网格,做 OpenLayers / deck.gl 大面积洋流粒子场渲染 (这点和ECCO、HYCOM完全不一样) 如果你想要整片海域的连续洋流场,Open-Meteo不适合,仍然需要ECCO/HYCOM/CMEMS的网格化NetCDF。
  2. 空间分辨率:全球约 10km级别,近海高一点;没有ECCO那么精细。
  3. 只提供预报场,历史海洋再分析数据弱于ERA5/ECCO。

🌤️ 其他API模块

  1. Forecast 普通气象API:气温、降水、10m风(U/V风分量,适合风场可视化)、湿度、气压、土壤参数
  2. Ensemble集合预报:ECMWF/GFS集合成员,看预报不确定性
  3. Historical历史再分析:ERA5,1940至今,小时气象历史
  4. Flood API:全球河流径流洪水预报

🧪 最简调用示例(浏览器/JS直接请求,可嵌入OpenLayers)

查询 经度120°E,纬度30°N(东海),获取小时洋流:

复制代码
[https://api.open-meteo.com/v1/marine?latitude=30&longitude=120&hourly=ocean_current_velocity,ocean_current_direction&timezone=Asia%2FShanghai](https://api.open-meteo.com/v1/marine?latitude=30&longitude=120&hourly=ocean_current_velocity,ocean_current_direction&timezone=Asia%2FShanghai)

复制浏览器打开,直接返回JSON。

JS fetch 示例

js 复制代码
fetch(`[https://api.open-meteo.com/v1/marine?latitude=30&longitude=120&hourly=ocean_current_velocity,ocean_current_direction&timezone=Asia/Shanghai](https://api.open-meteo.com/v1/marine?latitude=30&longitude=120&hourly=ocean_current_velocity,ocean_current_direction&timezone=Asia/Shanghai)`)
.then(res=>res.json())
.then(data=>{
    console.log(data.hourly.time);
    console.log(data.hourly.ocean_current_velocity);
    console.log(data.hourly.ocean_current_direction);
})

在OpenLayers中:可以监听地图点击,拿到点击经纬度,调用这个接口,弹窗展示该点洋流。

⚖️ Open-Meteo VS ECCO / HYCOM / CMEMS

Open-Meteo ECCO HYCOM CMEMS
数据类型 点位时序API(JSON) NetCDF网格化海洋再分析 NetCDF全球海洋预报 网格化海洋多变量
洋流获取方式 单点查询 下载网格文件,本地解析 下载网格文件 OPeNDAP/文件下载
前端可视化 单点探针,不能大面积粒子场 ✅ 可提取u/v洋流,ol-wind/deck.gl粒子 ✅ ✅
使用门槛 极低,http直接调用 高,NetCDF预处理 高 中
用途 地图点击查单点海洋/气象 历史海洋研究、全域洋流可视化 实时海洋模拟 业务海洋产品

✅ 适合你的场景

  • OpenLayers地图:点击海洋区域,弹窗显示该点洋流流速流向
  • 快速原型,不用下载几十GB NetCDF
  • 同时叠加海面风场(普通forecast接口的u/v风)
  • 网页前端直接请求,后端不用搭数据服务

❌ 不适合你的场景

你之前目标:全局/大面积动态洋流粒子效果(ol-wind/deck.gl)

Open-Meteo无法一次性返回整片海域的u、v洋流网格,只能逐个点查询,不适合粒子流场渲染,这个场景继续用 HYCOM / ECCO / CMEMS。

⚠️ 注意事项

  1. 调用限流:免费版单日1万次,高频批量请求会被限流。
  2. 洋流是欧拉流+潮汐+波浪综合计算的合成洋流,和纯海流模型定义略有区别。
  3. 数据版权:CC BY 4.0,公开展示项目必须标注Open-Meteo以及原始数据源。
相关推荐
还是大剑师兰特1 个月前
解决nginx错误:http://localhost:7000正常,http://localhost:7000/map 报错404
nginx·大剑师
还是大剑师兰特1 个月前
地图的分类
大剑师·地图分类
还是大剑师兰特2 个月前
ruoyi‑vue3 添加【车辆管理】菜单组完整方案
大剑师·若依系统
还是大剑师兰特2 个月前
若依(ruoyi)前后台系统从零到一部署配置(坑点带解析)
大剑师
还是大剑师兰特2 个月前
ideaIC‑2024.1.7(社区版zip绿色解压版)完整使用教程
大剑师·idealc
还是大剑师兰特2 个月前
MySQL8.0 Windows完整安装教程
windows·mysql·大剑师
还是大剑师兰特3 个月前
VSCode 插件冲突导致崩溃、卡死、假死 全套根治方案
vscode·大剑师
还是大剑师兰特3 个月前
ThinkPad T490 Windows 自动修复失败完整解决步骤
windows·大剑师·t490
还是大剑师兰特3 个月前
二年级奥数(12) : 巧填符号+竖式数字谜
大剑师·二年级奥数