3.
\ begingroup美元

我是一个在欧洲国家维护大型气象站网络(约3000个气象站)的组织的一部分。除了将测得的数据存入数据库外,我们还在2.5公里的规则网格上生成插值值的地图。目前,我们正在使用来自pyngl (natgridhttps://www.pyngl.ucar.edu/Functions/Ngl.natgrid.shtml).

虽然大多数变量都是直接内插在网格上的,但温度总是随高度缩放,以便更好地表示山区的梯度(参见示例图像)。

在这里输入图像描述

我一直在试图找到一个更好的方法来插值数据,但没有成功。我的理想算法应该能够

  • 以分散的数据(如温度、雨水、湿度……)作为输入:数据根据一天中的时间在1000到5000点之间变化
  • 添加海拔或纬度等外部参数,以改进在站点数据缺失的区域(如山区)的数据插值,类似于克里格漂移。理想情况下,我们甚至可以使用雷达数据来修正降水估计。这应该由算法本身自动调整,而不需要干预
  • 快速(插入所有数据不超过10秒)
  • 理想情况下,使用在整个数据存档上训练的机器学习模型来改进插值?(这是可选的)

我一直在尝试RBF插值,所有的方法metpyhttps://unidata.github.io/MetPy/latest/examples/gridding/Point_Interpolation.html),甚至pykrige与普通克里格或回归克里格随机森林回归。不知何故,我无法找到一个方法,满足所有上述条件:natgrid这似乎仍然是最快最准确的算法。

有人能告诉我正确的方向吗?

\ endgroup美元
6
  • \ begingroup美元 嗨,你试过Universal Kriging 3D吗?也包含在pykrige包中 \ endgroup美元
    - - - - - -维斯
    2022年6月28日8:22
  • \ begingroup美元 是的,我去了。但不知何故,因为站点数量或网格分辨率,它非常慢(大约5分钟) \ endgroup美元
    - - - - - -机器人
    2022年6月29日8:18
  • \ begingroup美元 这样写:def generate_grid(data, basemap, delta=1): grid = {'lon': np。Arange (- 30,60, delta), 'lat': np。Arange (30,70, delta) #不向极点外推}grid["x"], grid["y"] = np。Meshgrid (grid["lon"], grid["lat"]) grid["x"], grid["y"] = basemap(grid["x"], grid["y"]) with grid = generate_grid(base_data, basemap,0.1) \ endgroup美元
    - - - - - -维斯
    2022年6月29日8:33
  • \ begingroup美元 对不起,我不是要定义一个新的网格,而是要找到一个有效的方法 \ endgroup美元
    - - - - - -机器人
    2022年6月29日9:35
  • \ begingroup美元 如果我是你,我会利用你所拥有的一切!为了计算海拔高度,我建议你们找一个公式来描述温度变化作为海拔高度的函数。然后把所有的站数据计算到海平面以下,进行插值,最后把海拔数据放在插值后的数据下,用同样的海拔公式重新计算。 \ endgroup美元
    - - - - - -维斯
    2022年6月29日9:50

0

你的答案

点击“张贴您的答案”,即表示您同意我们的服务条款隐私政策饼干的政策

浏览带标签的其他问题问自己的问题