I have image as ndarray with 20 bands with the following shape: (20, 2227, 3676) . I'm trying to save it using rasterio with the following script:
savedir=pathlib.Path('myfolder/') savedir.mkdir(parents=True,exist_ok=True) with rasterio.open(savedir /'myImage.tif', 'w', driver='GTiff', height=img.shape[1], width=img.shape[2], count=20, dtype=img.dtype, crs=img_crs, nodata=None, # change if data has nodata value transform=img_transform) as dst: for n in np.arange(0,20,1): dst.write(img[n,:,:],n+1) This fails with he following error:
---> 17 dst.write(img_arr[n,:,:],n+1)
File rasterio/_io.pyx:1700, in rasterio._io.DatasetWriterBase.write()
TypeError: object of type 'numpy.int64' has no len()
I'm not sure what is the source of this error, but I know that if I use the same script but instead of iterating through the bands I put manualy each band, it works. for example:
dst.write(img_arr[0,:,:],1) dst.write(img_arr[1,:,:],2) ... dst.write(img_arr[19,:,:],20) That works.
Hence, I don't know why I get the type error, and I don't waant to put manually all the bands of the image. How can I solve this issue?
dst.write(img)?