使用python xarray创建一个空的netCDF4 char变量
我想创建一个netCDF文件,其中存储几个变量及其相关坐标,以及一个空char变量,该变量可用于存储各种投影元数据 我试过这个:使用python xarray创建一个空的netCDF4 char变量,python,char,netcdf,python-xarray,Python,Char,Netcdf,Python Xarray,我想创建一个netCDF文件,其中存储几个变量及其相关坐标,以及一个空char变量,该变量可用于存储各种投影元数据 我试过这个: import xarray as xr import numpy as np #example variable A=np.array([[1,2],[3,4]]) #example coords x=np.array([10,20]) y=np.array([30,40]) #example netcdf creation with xarray data_v
import xarray as xr
import numpy as np
#example variable
A=np.array([[1,2],[3,4]])
#example coords
x=np.array([10,20])
y=np.array([30,40])
#example netcdf creation with xarray
data_vars={'A':(['y','x'],A),
'projection':np.str()}
coords={'x':x,
'y':y}
dataset = xr.Dataset(data_vars=data_vars, coords=coords)
dataset['projection'].attrs['EPSG']='3413'
dataset.to_netcdf('path/to/file.nc')
此方法将“projection”变量保存为char类型,但也为其分配一个空字符串:
<xarray.Dataset>
Dimensions: (x: 2, y: 2)
Coordinates:
* y (y) int64 30 40
* x (x) int64 10 20
Data variables:
A (y, x) int64 1 2 3 4
projection |S1 ''
尺寸:(x:2,y:2)
协调:
*y(y)int64 30 40
*x(x)int64 10 20
数据变量:
A(y,x)int641234
投影| S1“
使用xarray,我如何创建“projection”变量,使其只是一个空的存储变量,类型为char(此处表示为| S1),并且没有维度
任何帮助都将不胜感激。TL;DR:我还没有发表评论的名声,只能部分解决这个问题,因为to_netcdf
强制为变量分配维度
我对这个问题有了进一步的了解(同样的问题,为CRS设置了一个变量):
数据变量={
‘A’:(['y','x',A),
“crs”:np.array(b'',dtype='| S1')
}
其中,| S1
是单字节字符串的numpy数据类型。它在Python3中使用,但似乎使用GDAL设置CRS的netCDF是由xarray读取的。当使用向_netcdf
写回时,一切似乎都很好-但是ncdump-h
显示我的crs变量被分配了一个以前不存在的维度string1
:
$ ncdump -h impact.nc
[truncated]
char crs(string1) ;
crs:inverse_flattening = 298.257223563 ;
crs:spatial_ref = "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS…"
[truncated]
我想我可以通过从Python调用gdal\u translate
来添加一个CRS来解决这个问题