爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2846|回复: 6

[求助] wrfout的风场要怎么画成流线图呀??

[复制链接]

新浪微博达人勋

发表于 2023-5-14 15:31:14 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2023-5-15 10:33:43 | 显示全部楼层
https://www.ncl.ucar.edu/Applications/Scripts/wrf_gsn_8.ncl
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-5-15 10:48:27 | 显示全部楼层
matplotlib框架下streamplot必须是均匀分布的严格递增阵列构成网格。Evenly spaced strictly increasing arrays to make a grid. If 2D, all rows of x must be equal and all columns of y must be equal; i.e., they must be as if generated by np.meshgrid(x_1d, y_1d).

使用wrf-python,把数值插值到等经纬度网格上即可。(思路肯定是这个)
参考:wrf.xy_to_ll(我猜的)
另,参考:https://wrf-python.readthedocs.i ... to-a-pressure-level
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-5-15 15:29:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-5-20 15:40:49 | 显示全部楼层
本帖最后由 坎坷 于 2023-5-20 15:43 编辑

我使用的插值函数,使用的是scipy.interpolate.griddata这个函数,经实测,边缘处有锯齿,其他处基本一致


from scipy.interpolate import griddata

class read_wrf_vars:

    def regrib_data(self, data, lon, lat):
        """
        插值获取网格化数据
        """
        # 截取边界
        min_lon, max_lon, min_lat, max_lat = lon[:, 0].max(), lon[:, -1].min(), lat[0, :].max(), lat[-1, :].min()

        dx = (max_lon - min_lon) / lat.shape[1]
        dy = (max_lat - min_lat) / lat.shape[0]

        resolution = 50

        # dx = np.fabs(lon[0,1] - lon[0,0])
        # dy = np.fabs(lat[0,1] - lat[0,0])

        order = 1
        while True:
            if dx*order >= 50:
                dx = dx*order // resolution * 50
                break
            else:
                order = order * 10
        dx = dx / order

        order = 1
        while True:
            if dy*order >= 50:
                dy = dy*order // resolution * 50
                break
            else:
                order = order * 10
        dy = dy / order

        min_lon = min_lon // dx * dx
        max_lon = max_lon // dx * dx
        min_lat = min_lat // dy * dy
        max_lat = max_lat // dy * dy

        grid_x, grid_y = np.arange(min_lon + dx, max_lon, dx), np.arange(min_lat + dy, max_lat, dy)

        grid_x2d, grid_y2d = np.meshgrid(grid_x, grid_y)

        grid_z0 = griddata(np.array([np.array(lat).flatten(), np.array(lon).flatten()]).T, np.array(data).flatten(), (grid_y2d.flatten(), grid_x2d.flatten()), method='linear')

        grid_z0 = grid_z0.reshape(grid_x2d.shape)

        return grid_z0, grid_x, grid_y




密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-5-22 13:47:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-11-15 21:41:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表