Yo no era capaz de encontrar una respuesta a esta después de buscar en los archivos de ayuda y los foros.
Tengo una (virtual) ráster con 60 bandas, donde cada banda representa una realización en el tiempo (creo que de fotogramas de video). Quiero ser capaz de cargar en recortada, banda específica de los conjuntos de este virtual trama sin la carga de todos ellos, algo como
myVRT = gdal.Open(vrtfile)
bands = myVRT.GetRasterBand([2,4,6,14,35])
cropped_bandstack = bands.ReadAsArray(
xoff = xoffset,
yoff = yoffset,
xsize = xsz,
ysize = ysz)
que iba a crear una matriz con sólo bandas 2,4,6,14, y 35.
No he sido capaz de encontrar una manera de hacer esto sin la carga de cada banda por separado y el llenado de una matriz 3D.
Otra alternativa que también quiero evitar es volver a crear cada uno de los recortada bandas (que son también virtuales), a continuación, crear un nuevo virtual trama de la pila utilizando sólo las bandas que yo quiero, y finalmente leer en una matriz.
Vi este fue catalogado como una función para añadir a rasterio, pero no pude encontrar ninguna evidencia de que en realidad se añadió.
Edit: Después de recibir una respuesta, creo que debo aclarar que yo estoy preguntando si esto se puede realizar en una sola llamada, en lugar de implementar un bucle para leer cada banda de forma individual.