首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Metpy HRRR横截面

Metpy HRRR横截面
EN

Stack Overflow用户
提问于 2019-02-05 05:51:41
回答 2查看 643关注 0票数 1

我正在创建HRRR模型输出的横截面,我已经使用xarray和pynio作为引擎读取了grib文件,然后将这些文件转换为netcdf,这样我就可以在我的windows机器上使用它们,因此我想知道这是否导致了这些问题。

下面是使用xarray:Imgur读取netcdf后我的数据集的样子

读入数据后,我尝试通过解析数据来遵循Metpy横截面/ Xarray教程:

代码语言:javascript
复制
data = ds.metpy.parse_cf()

这产生了这个新的数据集:Imgur,它创建了crs坐标,所以我假设它工作得有点正确。

在此之后,我创建了一个包含700mb RH、风和海拔(不同数据集)的等高线地图,其中我从数据数据集中解析了RH,并提取了x和y

代码语言:javascript
复制
RH = data.metpy.parse_cf('RH_P0_L100_GLC0')
x, y = RH.metpy.coordinates('x', 'y')

这一切都起作用了,我可以生成一个漂亮的图,没有问题。所以下一步我想做一个横截面。按照文档中的示例操作:

代码语言:javascript
复制
start = (40.3847, -120.5676)
end = (39.2692, -122.3784)
cross = cross_section(data, start, end)

它产生了这些错误:Imgur

因此,我尝试使用上面的RH变量,因为

代码语言:javascript
复制
RH.metpy.x 

给出了x维度。但是跑步

代码语言:javascript
复制
cross = cross_section(RH, start, end)

相反,给出了这个错误:Imgur

所以我想知道我是不是在解析原始数据集的过程中错过了一个步骤,或者是grib到netcdf的转换搞砸了什么,或者使用metpy是否有可能做到这一点?

一般来说,我只是想创建一个类似于示例中的横截面:https://unidata.github.io/MetPy/latest/examples/cross_section.html#sphx-glr-examples-cross-section-py

作为一个额外的问题,是否有可能填充地块下的地形?

EN

回答 2

Stack Overflow用户

发布于 2019-02-06 22:31:04

目前,MetPy's cross section interpolation依赖于Dataset/DataArray中存在的x和y维度作为维度坐标(请参阅xarray的文档here中的描述)。在您的数据集中,ygrid_0xgrid_0的x和y维度被列为没有坐标的维度,这就是问题所在。

然而,由于这种情况在气象数据文件中经常遇到,MetPy目前的实现可能过于严格。我建议在MetPy's issue tracker上开一个问题。

关于您的额外问题,只要您的地形级别数据与您的数据位于相同的垂直坐标中,您就可以使用matplotlib中的fill_between()方法来填充地块下的地形。

票数 1
EN

Stack Overflow用户

发布于 2020-04-21 19:48:04

我也有几乎同样的问题。

ValueError:数据缺少必需的坐标信息。验证您的数据是否已由MetPy使用正确的x和y维度坐标进行了解析,并为每个变量添加了正确投影的crs坐标。

如果我尝试这样做:

代码语言:javascript
复制
cross = cross_section(data, start, end)

xarray看起来像这样:

代码语言:javascript
复制
<xarray.Dataset>
Dimensions:           (bnds: 2, height: 61, height_2: 1, height_3: 60, height_4: 61, height_5: 1, lat: 101, lev: 1, lev_2: 1, lev_3: 1, lon: 121, time: 24)
Coordinates:
  * height            (height) float64 1.0 2.0 3.0 4.0 ... 58.0 59.0 60.0 61.0
  * height_3          (height_3) float64 1.0 2.0 3.0 4.0 ... 57.0 58.0 59.0 60.0
  * lev               (lev) float64 0.0
  * lev_2             (lev_2) float64 400.0
  * lev_3             (lev_3) float64 800.0
  * lon               (lon) float64 -30.0 -29.5 -29.0 -28.5 ... 29.0 29.5 30.0
  * lat               (lat) float64 -10.0 -9.5 -9.0 -8.5 ... 38.5 39.0 39.5 40.0
    crs               object Projection: latitude_longitude
  * height_2          (height_2) float64 10.0
  * time              (time) float64 2.017e+07 2.017e+07 ... 2.017e+07 2.017e+07
  * height_4          (height_4) float64 1.0 2.0 3.0 4.0 ... 58.0 59.0 60.0 61.0
  * height_5          (height_5) float64 2.0
Dimensions without coordinates: bnds
Data variables:
    height_bnds       (height, bnds) float64 ...
    height_3_bnds     (height_3, bnds) float64 ...
    lev_bnds          (lev, bnds) float64 ...
    lev_2_bnds        (lev_2, bnds) float64 ...
    lev_3_bnds        (lev_3, bnds) float64 ...
    z_ifc             (height, lat, lon) float32 ...
    topography_c      (lat, lon) float32 ...
    fis               (lat, lon) float32 ...
    con_gust          (time, height_2, lat, lon) float32 ...
    gust10            (time, height_2, lat, lon) float32 ...
    u                 (time, height_3, lat, lon) float32 ...

我的意思是有一个很晚的网格..。是否有变通办法将cross_section用于lat lon grid?或者我可以将lat lon重命名为x和y?

最好的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54524847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档