使用Xarray创建的NetCDF温度文件在QGIS中无法正确识别坐标的问题求助
Xarray创建的NetCDF温度文件在QGIS中无法正确识别坐标的问题求助
我用Python的Xarray生成了一个温度数据的NetCDF文件,完整代码如下:
latitude_save = sorted(list(set(copy2_sorted['lat']))) longitud_save = sorted(list(set(copy2_sorted['lon']))) time_save = sorted(list(set(copy2_sorted['time']))) tmp = np.array(copy2_sorted['temp']).reshape(len(time_model), 3, 4) xrds = xr.Dataset( coords=dict(time=time_save, lat=latitude_save, lon=longitud_save), data_vars=dict(tas=(['time', 'lat', 'lon'], tmp))) xrds = xrds.rio.write_crs("EPSG:4326", inplace=True) file_save = 'C:/Users/72541988B/Desktop/Copernicus/SSP1-1.9/Tas/{}_tas3.nc'.format(model) my_enocding = {'time': {'dtype': 'int32', '_FillValue': None}, 'lat': {'dtype': 'float32', '_FillValue': None}, 'lon': {'dtype': 'float32', '_FillValue': None}, 'tas': {'dtype': 'float32', '_FillValue': float('nan'), 'zlib': False} } xrds.to_netcdf(file_save, encoding=my_enocding) print('Se ha guardado: {}'.format(model)) xrds = xr.open_dataset("C:/Users/72541988B/Desktop/Copernicus/SSP1-1.9/Tas/CAMS_CSM_tas7.nc")
生成文件后,我在Python里重新打开并检查了经纬度值,结果完全正确:
检查纬度:
print(xrds["lat"].values)
输出:
41.1265, 41.9565, 42.8
检查经度:
print(xrds["lon"].values)
输出:
-3.8875, -2.162 , -0.437 , 1.2875
但把这个温度NetCDF文件导入QGIS时,坐标识别完全错误——软件自动生成的范围是0.0到4.0、0.0到-3.0,就像根本没读取到正确的经纬度信息一样。
之前我用完全相同的代码流程生成降水数据的NetCDF文件时,在QGIS里是可以正常识别坐标的,只有温度文件出现了这个问题。我已经尝试过这些解决方法,但都没有效果:
- 直接在QGIS里手动修改文件坐标系,结果报错提示"坐标未定义"
- 保存NetCDF时明确指定EPSG:4326坐标系(既用了Xarray原生方法,也尝试了rioxarray的
rio.write_crs) - 反复确认Python中读取文件的坐标、数据都完全正常
有没有大佬能帮我排查一下问题出在哪?
备注:内容来源于stack exchange,提问作者Kontraa Kontraa
相关产品推荐
相关产品推荐

