You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xarray读取GeoTIFF时出现module 'xarray' has no attribute 'open_rasterio'错误

问题解决:module 'xarray' has no attribute 'open_rasterio'

错误原因

xarray从0.20.0版本开始,已将open_rasterio从核心模块移除,该功能现在由rioxarray库单独提供,直接通过xr.open_rasterio()调用必然报错。

修复步骤

  1. 安装rioxarray库(未安装的话执行以下命令):
pip install rioxarray
  1. 修改代码中读取GeoTIFF的逻辑:
    • 新增导入rioxarray模块
    • 替换原有的xr.open_rasterio调用为rioxarray的读取方法

修改后的完整代码:

import xarray as xr
import geemap
import numpy as np
from mayavi import mlab
import rioxarray  # 新增导入rioxarray

# Step 1: 下载NetCDF文件
url = 'https://github.com/giswqs/leafmap/raw/master/examples/data/wind_global.nc'
filename = 'wind_global.nc'
data = geemap.read_netcdf(filename)

# Step 2: 将NetCDF转换为GeoTIFF
tif = 'wind_global.tif'
geemap.netcdf_to_tif(filename, tif, variables=['u_wind', 'v_wind'], shift_lon=True)
print(data)

# Step 3: 使用rioxarray读取GeoTIFF
data = rioxarray.open_rasterio(tif)  # 替换原xr.open_rasterio调用

# 提取经纬度值
latitude = data.y.values
longitude = data.x.values

# 将U/V风分量转换为风速和风向
u_wind = data.values[0]
v_wind = data.values[1]
wind_magnitude = np.sqrt(u_wind**2 + v_wind**2)  # 修正:此处应为平方运算,而非乘2
wind_direction = np.degrees(np.arctan2(u_wind, v_wind))

# 创建经纬度网格
lon_grid, lat_grid = np.meshgrid(longitude, latitude)

额外提示

原代码计算风速时存在逻辑错误:u_wind*2和v_wind*2是数值乘2,正确的平方运算应该用u_wind**2和v_wind**2,已在修复后的代码中纠正。

内容的提问来源于stack exchange,提问作者rajiv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 01:37:48