Python 3.x 将rioxarray的标注栏描述添加到_raster()

Python 3.x 将rioxarray的标注栏描述添加到_raster(),python-3.x,python-xarray,rasterio,Python 3.x,Python Xarray,Rasterio,我已经看到可以使用rasterio[]将波段描述添加到geotiff图像中。使用rioxarray将阵列保存到光栅时,如何执行相同的操作 我尝试将名称添加为coords,但当我保存并重新打开光栅时,标注栏的名称为[1,2,3,4],而不是['R','G','B','NIR'] import numpy as np import xarray as xa import rioxarray as rioxa bands = ['R', 'G', 'B', 'NIR'] im_arr = np.ra

我已经看到可以使用rasterio[]将波段描述添加到geotiff图像中。使用rioxarray将阵列保存到光栅时,如何执行相同的操作

我尝试将名称添加为coords,但当我保存并重新打开光栅时,标注栏的名称为[1,2,3,4],而不是['R','G','B','NIR']

import numpy as np
import xarray as xa
import rioxarray as rioxa

bands = ['R', 'G', 'B', 'NIR']
im_arr = np.random.randint(0, 255, size=(4, 400, 400))
im_save = xa.DataArray(im_arr, dims=('band', 'y', 'x'), 
        coords={'x': np.arange(0, 400), 'y': np.arange(0, 400), 
                'band': bands})
path = 'test.tiff'
im_save.rio.to_raster(path)
im_load = rioxa.open_rasterio(path)
print(im_load)
[640000个数据类型为int32的值] 坐标:

  • 波段(波段)int32 1 2 3 4
  • y(y)浮动64 0.01.02.03.04.0。。。396.0397.0398.0399.0
  • x(x)浮动64 0.01.02.03.04.0。。。396.0 397.0 398.0 399.0 空间参考int32 0属性: 比例系数:1.0 添加偏移量:0.0 网格映射:空间映射

您应该考虑从3D代码>数据阵列>代码>转换为<代码>数据集< /代码> 4个变量,每个变量代表一个单独的带。 如果正确命名变量,则应将其写入tiff:

将numpy导入为np
将xarray作为xa导入
将rioxarray导入为rioxa
波段=['R','G','B','NIR']
xa_dataset=xa.dataset()
对于带内带:
xa_数据集[band]=xa.DataArray(np.random.randint(0255,(400400),dtype=“uint8”),dims=('y','x'),
坐标={'x':np.arange(0400),'y':np.arange(0400)})
#看到结构了吗
打印(xa_数据集)
# 
#尺寸:(x:400,y:400)
#坐标:
#*x(x)int64 01 2 3 4 5 6 7 8。。。391 392 393 394 395 396 397 398 399
#*y(y)int64 01 2 3 4 5 6 7 8。。。391 392 393 394 395 396 397 398 399
#数据变量:
#R(y,x)uint8 18 41 126 79 64 215 105。。。29 137 243 23 150 23 224
#G(y,x)uint8 1 18 90 195 45 8 150 68。。。96 194 22 58 118 210 198
#B(y,x)uint8 125 90 165 226 153 253 212。。。162 217 221 162 18 17
#NIR(y,x)uint8 161 195 149 168 40 182 146。。。18 114 38 119 23 110 26
#写入磁盘
xa_dataset.rio.to_光栅(“test.tiff”)
#装载
im\u load=rioxa.open\u rasterio('test.tiff'))
打印(im_加载)
# 
#[640000个数据类型为uint8的值]
#坐标:
#*波段(波段)int64 1 2 3 4
#*y(y)浮动64 0.01.02.03.04.0。。。396.0 397.0 398.0 399.0
#*x(x)浮动64 0.01.02.03.04.0。。。396.0 397.0 398.0 399.0
#空间参考int64 0
#属性:
#比例系数:1.0
#添加偏移量:0.0
#长名称:('R','G','B','NIR')
#网格映射:空间映射
您可以看到,波段名称现在作为
long\u name
包含在属性中

运行
gdalinfo
,您可以看到波段描述已设置:

驱动程序:GTiff/GeoTIFF
文件:test.tiff
尺寸是400400
原点=(-0.500000000000000,-0.500000000000000)
像素大小=(1.000000000000000,1.000000000000000)
图像结构元数据:
交错=像素
角坐标:
左上角(-0.5000000,-0.5000000)
左下(-0.500399.500)
右上角(399.500,-0.500)
右下角(399.500、399.500)
中心(199.500,199.500)
波段1块=400x5类型=字节,彩色内插=红色
描述=R
掩码标志:每_数据集ALPHA
波段2块=400x5类型=字节,彩色内插=绿色
Description=G
掩码标志:每_数据集ALPHA
带3块=400x5类型=字节,ColorInterp=蓝色
描述=B
掩码标志:每_数据集ALPHA
带4块=400x5类型=字节,ColorInterp=Alpha
描述=近红外