十分钟拥有自己的天气预报APIOpen-Meteo 轻量自托管实操【免费下载链接】open-meteoFree Weather Forecast API for non-commercial use项目地址: https://gitcode.com/GitHub_Trending/op/open-meteo想要稳定的天气数据接口商业API按量收费、开源方案又要注册领KeyOpen-Meteo 是一个完全开源的天气预报API平台聚合各国气象机构的免费数值预报非商业用途免费使用无需任何API密钥。下面直接上手。跑起来之前先搞清楚它是什么Open-Meteo 用 Swift 编写编译后就是单个二进制文件由三部分构成一个提供标准 HTTP 接口的 API 服务、一个存在./data目录下的文件型天气数据库以及对接各气象数据源的下载程序。它把德国、美国、法国等机构公开发布的数值预报抓下来转成一种专为时间序列优化的自定义二进制格式OM File Format再入库。几个关键指标可以帮你建立预期预报最长16 天全球模型分辨率11 km区域模型最细到1.5 km历史天气数据覆盖80 年官方线上 API 响应时间低于10 ms。数据源包括 NOAA GFS、DWD ICON、MeteoFrance、ECMWF IFS 等主流模型每天要处理和入库 5TB 以上数据。数据协议 CC BY 4.0源码 AGPLv3全部公开。从零到可用Open-Meteo 部署实操硬件上内存最低8 GB推荐 16 GB、存储至少100 GB、CPU 支持 AVX2 这类现代指令集即可x86-64 和 Arm 都支持。把仓库拉到本地先把源码拉到机器上后面都在终端里完成git clone https://gitcode.com/GitHub_Trending/op/open-meteo启动容器并验证服务进项目目录一条命令把 API 服务和数据同步服务一起拉起来cd open-meteo docker compose up -d默认配置里已经内置了一个同步任务会自动拉取dwd_icon模型的气温数据。容器就绪后用 curl 请求某个坐标的预报验证一下首次调用要几秒属正常现象curl http://127.0.0.1:8080/v1/forecast?latitude47.1longitude8.4modelsdwd_iconhourlytemperature_2m返回 JSON 里能看到逐小时的temperature_2m序列服务就通了。注入你需要的数据默认只同步了一个模型的一个变量需要更多就往运行中的容器里追加命令docker exec -it open-meteo-sync sync ecmwf_ifs025 temperature_2m,relative_humidity_2m除了这种从公开数据源直接同步的方式二进制里还提供一整套download-*子命令可以从各国气象机构的原始服务器直接拉取参数说明在 docs/downloading-datasets.md 里。它到底能做什么 查未来两周的逐小时温度一次请求拿到最多 16 天的小时级预报温度、湿度、风速、降水概率都能带出来做出行提醒或户外计划足够。回溯历史某天的天气基于 ERA5 再分析数据可以查过去 80 年任意一天的实况农业复盘、气候研究、事故归因都能用。海上风浪预报Marine API 提供海况、浪高和近海风场船长、帆船和钓鱼爱好者用它判断出海窗口。空气质量与紫外线监控接入了 CAMS 空气质量预报PM2.5、臭氧、AQI 都有做健康类应用的现成数据源。查任意坐标的海拔Elevation API 基于 90 米数字高程模型返回某点的海拔和地形起伏定位系统、地图应用常用。评估洪水风险Flood API 提供流域洪水等级适合做灾害预警类功能。数据怎么管才不浪费资源天气数据全部落在./data目录格式是前面提到的自定义二进制文件针对取某地点多天序列这种访问模式做了压缩优化磁盘占用和查询效率都比直接存原始 GRIB/NetCDF 好。如果你只拉业务需要的少数变量32-48 GB空间足够起步如果全量同步所有模型和变量磁盘占用约150 GB需要历史数据的话ERA5 每年约60 GB按需下载即可。查询密集的场景建议上 NVMe SSD因为数据目录同时被当作缓存使用官方支持多 TB 的缓存配置。如果历史数据会持续增长加一个定时清理任务最省心官方文档里给了现成的 cron 写法把 90 天以上的地表数据分片删掉即可。0 * * * * find /app/data -type f -name chunk_* -mtime 90 -delete部署时容易踩的坑⚠️别把服务直接暴露在公网上仓库里的 compose 默认把 8080 端口映射到所有网卡生产环境请加 Nginx 等反向代理统一处理 TLS 和访问控制。⚠️首次请求慢不是故障冷缓存下生成一次预报要从成百上千个压缩小文件里读取碎片数据可能要数秒。重复请求、邻近坐标会明显变快自托管适合有明显重复调用量的负载偶尔查一次的场景直接用公开 API 更划算。⚠️别贪心下载全部变量从机构服务器直接下载时如果不加变量过滤会把该模型的所有变量都拉下来耗时数小时且存储暴涨。按需指定变量是唯一正确姿势。⚠️别忘了署名数据是 CC BY 4.0你在产品里展示 Open-Meteo 数据时需要保留来源标注。写在最后从一条 curl 到一套完全自主可控的天气数据服务Open-Meteo 中间只隔了两个命令数据存在你自己的机器里不用注册 Key非商业用途没有请求量焦虑。建议从两个真实用到的变量起步验证流程跑顺后再按业务逐步扩展。现在就可以把仓库拉下来试一把。【免费下载链接】open-meteoFree Weather Forecast API for non-commercial use项目地址: https://gitcode.com/GitHub_Trending/op/open-meteo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
