ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

如何用Herbie提取任意坐标的气象数据?pick_points位置提取教程

如何用Herbie提取任意坐标的气象数据?pick_points位置提取教程 如何用Herbie提取任意坐标的气象数据pick_points位置提取教程【免费下载链接】HerbieDownload numerical weather prediction datasets (HRRR, RAP, GFS, IFS, etc.) from NOMADS, NODD partners (Amazon, Google, Microsoft), ECMWF open data, and the University of Utah Pando Archive System.项目地址: https://gitcode.com/gh_mirrors/her/HerbieHerbie 是一款面向气象研究者的开源工具能快速从 NOMADS、亚马逊/谷歌/微软的 NODD 伙伴、ECMWF 开放数据和犹他大学 Pando 归档等来源下载 HRRR、RAP、GFS、IFS 等数值预报网格数据。它的pick_points访问器xarray accessor可以按你给定的经纬度从任意网格中提取点位值——无论是最近邻取值还是反距离加权插值。本教程面向新手手把手教你用几行代码把任意坐标的气象变量取出来并理解它背后的空间索引原理。为什么需要 pick_points曲率网格下的痛点传统数值预报模型如 HRRR、NAM、WRF大多使用Lambert 等角投影、极射赤面投影等地图投影输出的是曲率网格curvilinear grid。这种网格的latitude和longitude是二维场不再是规则的x/y一维坐标轴。此时如果你想取某个城市或气象站的数值用 xarray 常见的sel()一维索引就会失效。而 Herbie 的pick_points正是为解决这个痛点而生✅ 支持任意投影的曲率网格无需手动做坐标正反向变换✅ 兼容不同经度约定0–360° 与 ±180° 混用✅ 返回到最近网格点的大圆距离km方便判断取值可信度✅ 支持k 个最近邻取值与反距离加权插值✅ 基于BallTree 空间索引即使上千个点位也能快速批量查询简单说你只要给出经纬度Herbie 就帮你找到最近的网格点并取值。前置安装一个依赖就够了pick_points的底层依赖scikit-learn用于构建 BallTree 空间索引。安装 Herbie 后再补上这个包即可pip install scikit-learn # 或一次性带上全部扩展依赖 pip install herbie-data[extras]只需import herbie访问器会自动注册到 xarray 上无需额外导入。第一步下载并打开气象网格数据先用Herbie或FastHerbie把感兴趣的变量下载为 xarray Dataset。Herbie 采用cURL 字节范围技术只下载你需要的 GRIB2 消息片段而不是整个 500MB 文件比如打开 HRRR 的 2 米温度场from herbie import Herbie H Herbie(2024-03-28 00:00, modelhrrr) ds H.xarray(TMP:2) # 搜索关键字 TMP:2 m above ground打开后你会得到一个曲率网格latitude和longitude都是(y, x)二维坐标——这正是pick_points的用武之地小贴士不确定变量搜索关键字时可以先看 GRIB2 索引文件idx里每条消息的 变量名 层次 组合例如TMP:2 m再用它作为searchString。如果要做时间序列如多个预报时刻用FastHerbie一次加载多文件更高效第二步准备点位 DataFramepick_points需要一个带latitude和longitude两列的 pandas DataFrame还可以携带任意自定义列如站点 ID、站名这些列会自动被保留到结果里import pandas as pd points pd.DataFrame({ longitude: [-100, -105, -98.4], latitude: [40, 29, 42.3], stid: [aa, bb, cc], # 自定义站点标识 })第三步一行代码提取点位值核心就一行dsp ds.herbie.pick_points(points, methodnearest)method支持两种nearest默认取距离最近的 1 个网格点的值快且直观。weighted取最近的 k 个网格点按反距离加权平均结果更平滑、更接近真实点位值。提取结果的 Dataset 会自动带上几个关键坐标point_latitude、point_longitude你请求的坐标、point_grid_distance到最近网格点的距离单位 km以及你传入的自定义列。参数速查表参数默认值说明points必填含latitude、longitude列的 DataFramemethodnearestnearest或weightedk1nearest/ 4weighted最近邻个数max_distance500有效最近邻的最大距离阈值km超出的点会被剔除并告警use_cached_treeTrue是否缓存 BallTreeTrue复用缓存、False不缓存、replant强制重建tree_name取ds.modelBallTree 缓存文件名便于区分不同模型网格verboseFalse输出详细信息例如取最近邻的前 4 个点或指定加权插值用 8 个邻居dsp4 ds.herbie.pick_points(points, methodnearest, k4) # 保留 k 维 dsw ds.herbie.pick_points(points, methodweighted, k8) # 反距离加权平均结果怎么用转 DataFrame 与按站点索引提取结果仍是 xarray Dataset转成 DataFrame 即可做后续分析或可视化df dsp.to_dataframe() # 便于导出/绘图 dsp dsp.swap_dims({point: point_stid}) # 用自定义列(如站点ID)作为索引这样就得到了「一个站点一行」的时间/变量值序列非常适合做模型与观测站的对比、站点时间序列、或机器学习特征。性能优化BallTree 缓存pick_points内部用scikit-learn 的 BallTreehaversine 度量对网格坐标建一次空间索引之后每次查询都极快。同一网格反复查询时例如遍历多个预报时刻开启默认的缓存机制use_cached_treeTrue可显著提速首次会「长出一棵树」并缓存后续直接复用。网格尺寸变化时会自动检测并重建无需手动干预。相关源码与延伸阅读空间索引与取值核心实现GridPointPicker类src/herbie/pick_points.pyxarray 访问器注册与pick_points入口src/herbie/accessors.py官方交互式教程 Notebook含垂直廓线、时间序列示例docs/user_guide/tutorial/accessor_notebooks/pick_points.ipynb批量加载多文件的FastHerbiesrc/herbie/fast.py单元测试覆盖 nearest / weighted / k / 距离阈值等场景tests/test_pick_points.py掌握pick_points后你就拥有了从任意数值预报网格中「按坐标取值」的通用能力——无论目标是城市、气象站、航迹点还是垂直探空站都能几行代码搞定。【免费下载链接】HerbieDownload numerical weather prediction datasets (HRRR, RAP, GFS, IFS, etc.) from NOMADS, NODD partners (Amazon, Google, Microsoft), ECMWF open data, and the University of Utah Pando Archive System.项目地址: https://gitcode.com/gh_mirrors/her/Herbie创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表