MetPy升级至1.1后从THREDDS服务器生成卫星影像报错
解决方案
问题根因
该报错由MetPy 1.1版本的两个已知兼容问题导致:
- GOES系列卫星的原生x/y坐标单位为微弧度,属于静止轨道投影的扫描角度量纲,MetPy 1.1解析CF投影时错误尝试直接将角度单位转换为长度单位米,触发量纲不匹配错误
- 异常捕获逻辑与低版本xarray的API不兼容,导致二次触发变量类型错误
可行修复方案
方案1:升级依赖(优先选择)
直接将MetPy升级到1.3.1及以上版本,该版本已官方修复GOES卫星坐标解析的问题,同时适配xarray 0.19+版本,原有代码无需修改即可正常运行
pip install --upgrade metpy xarray
方案2:代码适配(需保留MetPy 1.1版本时使用)
手动修正坐标的单位标注后再调用parse_cf,修改后的代码如下:
#!/usr/bin/python3 import metpy from siphon.catalog import TDSCatalog cat_e = TDSCatalog('https://thredds.ucar.edu/thredds/catalog/satellite/goes/east/products/CloudAndMoistureImagery/FullDisk/Channel09/current/catalog.xml') nc_e = cat_e.datasets[0].remote_access(use_xarray=True) # 手动修正x/y坐标的单位标注 for coord_name in ['x', 'y']: nc_e[coord_name].attrs.pop('units', None) nc_e[coord_name].attrs['units'] = 'microradian' data_e = nc_e.metpy.parse_cf('Sectorized_CMI')
验证标准
运行修复后的代码,输出print(data_e.metpy.x.units),返回值为meter即表示功能恢复正常。
内容的提问来源于stack exchange,提问作者djb
相关产品推荐
相关产品推荐

