使用Siphon调用THREDDS数据时remote_access(use_xarray=True)报TypeError
解决Siphon访问THREDDS数据时的Vectorized Indexing错误
问题重现
尝试用以下Siphon代码访问THREDDS中的GOES数据:
from siphon.catalog import TDSCatalog satcat = TDSCatalog( "https://thredds.ucar.edu/thredds/catalog/satellite/goes/east/products/CloudAndMoistureImagery/CONUS/Channel02/current/catalog.xml" ) sate_data = satcat.datasets[0].remote_access(use_xarray=True)
运行后触发错误:
TypeError: Vectorized indexing with vectorized or outer indexers is not supported. Please use .vindex and .oindex properties to index the array.
解决方案
这个错误通常由xarray与netCDF4的版本兼容性问题,或者数据集变量的特殊索引方式导致,可尝试以下几种解决方法:
指定netCDF4后端
修改remote_access调用,显式指定使用netCDF4引擎,避免默认引擎的索引冲突:sate_data = satcat.datasets[0].remote_access(use_xarray=True, kwargs={'engine': 'netcdf4'})手动处理变量索引
如果指定后端无效,可在获取数据集后,对触发错误的变量使用.vindex(向量化索引)或.oindex(外层索引)来访问数据:ds = satcat.datasets[0].remote_access(use_xarray=True) # 替换为数据集中实际的核心变量名,示例为GOES的CMI变量 fixed_data = ds['CMI'].vindex[:]更新依赖包
确保Siphon、xarray和netCDF4的版本兼容,执行升级命令:pip install --upgrade siphon xarray netCDF4
内容的提问来源于stack exchange,提问作者haneulkim
相关产品推荐
相关产品推荐

