使用python xarray创建一个空的netCDF4 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

我想创建一个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_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来解决这个问题