尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Open-Meteo 免费天气 API 实战指南:从一条查询到自建部署

Open-Meteo 免费天气 API 实战指南:从一条查询到自建部署 Open-Meteo 免费天气 API 实战指南从一条查询到自建部署【免费下载链接】open-meteoFree Weather Forecast API for non-commercial use项目地址: https://gitcode.com/GitHub_Trending/op/open-meteo你想在应用里显示天气又不想注册申请付费的 API key。Open-Meteo 是一个开源的免费气象数据接口无需 API 密钥即可调用提供最长 16 天的逐小时预报、80 年历史天气、空气质量与海洋预报也可以把整套服务部署到自己的服务器。三步拿到第一条天气预报最快的路径是直接用公共接口请求格式是/v1/forecast?latitude纬度longitude经度hourly变量名公共服务端在 api.open-meteo.com不要求鉴权浏览器和移动端都可以直连支持 CORS。想拥有自己的实例用 Docker 最省事。容器会从 Open-Meteo 的公共 S3 数据分发拉取预报数据并缓存到本地卷不要求你预先下载完整气象模型docker run -d --name open-meteo \ -v open-meteo-data:/app/data \ -e REMOTE_DATA_DIRECTORYhttps://openmeteo.s3.amazonaws.com/data/ \ -p 127.0.0.1:8080:8080 \ ghcr.io/open-meteo/open-meteo然后验证结果curl http://127.0.0.1:8080/v1/forecast?latitude47.1longitude8.4hourlytemperature_2m。首次请求会花几秒冷缓存之后相同或邻近坐标的重复请求会明显变快。它是什么一个开源的气象数据接口Open-Meteo 的定位是接口层各国气象机构公开发布的数值预报本身免费但文件是 GRIB、NetCDF 这类二进制格式还涉及网格、投影等专业知识。Open-Meteo 把这些文件统一转换、存储再包装成普通的 HTTP 查询。主要数据源包括 NOAA GFS含 HRRR 快速更新模式、德国 DWD ICON、法国 Arpège/Arome、ECMWF IFS、日本 JMA、加拿大 GEM 以及挪威 MET Norway。全球模型分辨率 11 公里区域模型最细到 1.5 公里预报覆盖最长 16 天逐小时数据历史数据可回溯 80 年ERA5 再分析。除核心预报外还有空气质量、海洋波浪、地理编码、高程、洪水等接口接口定义都放在 openapi 目录里。性能方面官方接口的响应时间低于 10 毫秒服务器分布在欧洲和北美通过 GeoDNS 把请求路由到较近的节点。服务不含广告、跟踪和 Cookie每天处理超过 5 TB 的预报数据。数据流从气象机构文件到 API 响应整个系统由三部分组成。API 服务器用 Swift 编写编译为单个二进制文件负责处理 HTTP 请求文件数据库存放在data/目录使用自研的开源二进制格式om 文件针对查某地点多天温度这类时间序列压缩访问做了优化下载程序负责从数据源取数。数据流是单向的气象机构发布预报文件 → 下载器解析并转换成 om 文件 → 写入data/目录 → API 服务器按需读取小片段并压缩传输。一次预报查询通常只需从大量文件里读几 MB 的小数据块这也是 om 格式的设计目标。自建实例比官方接口慢的原因在这里官方有热缓存和多节点部署而自建实例冷缓存时一次查询要读几百个文件的小片段耗时可达数秒。因此自建更适合有大量重复请求的工作负载。服务端每 2 分钟检查一次 S3 上的更新并预加载变化本地缓存按 LRU 淘汰大小由CACHE_SIZE环境变量控制支持到 TB 级。代码目录导览从 API 服务器到模型下载器主代码在 Sources/App/ 下按模型和功能分目录。Controllers/API 路由与响应生成ForecastapiController.swift 是天气查询主入口Gfs/、Ecmwf/、Icon/ 等每个气象模型一个目录内含下载器和变量定义Commands/CLI 命令包括 sync同步数据库、benchmark性能测试、export导出 NetCDF、migration数据库迁移Helper/通用工具插值算法、气象学计算、GRIB/NetCDF 读取与写入都在 Helper/Download/OmFileIO/文件读写层同时支持本地磁盘和 S3 两种后端Tests/AppTests/ 是测试套件docs/development.md 记录了从源码构建镜像和 Swift 本地开发的方法Swift 6 Vapor 框架。获取源码git clone https://gitcode.com/GitHub_Trending/op/open-meteo。进阶配置自维护数据库、多节点与性能调优自维护数据库可以不经过 S3 分发直接用download-*系列命令从各国气象机构拉取原始文件并转换例如download-icon、download-gfs、download-era5参数说明见 downloading-datasets。两个数字值得先知道ERA5 历史数据每年约占 60 GB 磁盘全量下载所有模型所有变量每天产生 4–8 TB 流量官方建议只选需要的变量定时任务示例在 cronjobs。多节点部署让一台机器专职下载和建库API 机器通过 S3 协议定期拉取增量数据sync命令实现跨机房分布配置见 sync-command。硬件与调优CPU 需要 SIMD 指令如 AVX2x86-64 和 Arm 都支持内存最低 8 GB、推荐 16 GB磁盘 100 GB 起步优先高 IOPS 的 NVMe SSD因为存储本身兼任缓存。云部署时把 API 实例放在与公共数据源同区域us-west-2读取速度会明显更好。使用前须知许可、请求上限与数据准确性许可源码为 AGPLv3数据为 CC BY 4.0。展示数据时需注明来源官方建议在显示位置附Weather data by Open-Meteo.com链接修改代码后以网络服务形式提供须开放修改后的源码。请求上限免费接口面向非商业和开源开发场景官方请求合理使用fair use单日超过 10,000 次请求应提前联系商业用途需与官方洽谈官方保留封禁滥用 IP 的权利。数据准确性所有数据按as-is提供、无担保预报模型本身存在误差关键应用建议同时查询多个模型对比。自建注意Ubuntu 预编译包目前仅支持 22.04服务默认绑定 127.0.0.1生产环境需经 nginx 等反向代理提供 TLS。参考资料文档、测试与接口定义getting-started.mdDocker、Ubuntu 包两种部署方式与硬件要求downloading-datasets.md各气象模型下载命令与数据源说明sync-command.md多节点数据库同步配置cronjobs.md官方服务器上全部下载任务的定时配置openapi/forecast、marine、air-quality 等接口的 OpenAPI 定义Tests/AppTests/API、插值、气象计算等测试用例Open-Meteo 把各国气象机构的原始预报文件封装成可直接查询的接口下载、转换、存储、响应的每个环节都以源码形式公开。你可以直接调用公共接口也可以按上面的路径部署自己的实例再依据实际负载调整缓存与数据源。【免费下载链接】open-meteoFree Weather Forecast API for non-commercial use项目地址: https://gitcode.com/GitHub_Trending/op/open-meteo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表