He importado un raster tif de 10 bandas usando rasterio como ds. Estoy tratando de acolchado de la imagen, pero seguir recibiendo errores con la transformación.
print(ds.transform)
pilpadimg = rasterio.pad(ds.read(), transform=ds.transform, pad_width=((0,0),(1,2),(3,4)), mode='reflect')
| 15.00, 0.00, 344117.00|
| 0.00,-15.00, 5082412.00|
| 0.00, 0.00, 1.00|
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-77-9526c3dd4939> in <module>
1 print(ds.transform)
----> 2 pilpadimg = rasterio.pad(ds.read(), transform=ds.transform.identity(), pad_width=((0,0),(1,2),(3,4)), mode='reflect')
~\AppData\Local\Continuum\anaconda3\envs\pytorch\lib\site-packages\rasterio\__init__.py in pad(array, transform, pad_width, mode, **kwargs)
279 padded_array = np.pad(array, pad_width, mode, **kwargs)
280 padded_trans = list(transform)
--> 281 padded_trans[2] -= pad_width * padded_trans[0]
282 padded_trans[5] -= pad_width * padded_trans[4]
283 return padded_array, Affine(*padded_trans[:6])
TypeError: can't multiply sequence by non-int of type 'float'
Funciona muy bien con numpy, pero no hay ninguna transformación..
>>> x = np.ones((8,3,3))
>>> np.pad(x, pad_width=((0,0),(1,2),(3,4)), mode='constant', constant_values=0)
pad_width tiene que ser un int y el transform es un float. He convertido la lista de transformaciones a int y sigo obteniendo el mismo error
EDITAR: Arreglado simplemente usando numpy para rellenar en lugar de rasterio
pilpadimg = np.pad(ds.read(),pad_width=[(0,0),(1,2),(3,4)], mode='reflect')