Sólo hay que hacer algunas cosas básicas:
- Iterar: Estoy usando os.walk que listará todos los archivos en la carpeta nominada y todas las subcarpetas , comprobando la extensión de los archivos localizados para asegurar que el script sólo intenta abrir imágenes. Podría usar os.listdir() si no quiere encontrar todos los archivos en el árbol de carpetas.
- Abra el conjunto de datos: usando gdal.Open o gdal.OpenShared y obtenga la primera banda (el índice es 1 ya que las bandas están basadas en 1).
- Obtener el valor de NoData como un objeto e imprimirlo.
Antes de intentar ejecutar esto, asegúrese de que GDAL está instalado con enlaces de python o recibirá un error en la línea 2.
import os, sys
from osgeo import gdal # import the GDAL object, please ensure this is installed in your python
AllowedImageExtensions = ['.TIF','.IMG'] # Add new image extensions here in UPPER CASE
BaseFolder = sys.argv[1] # the first argument, if you like replace with a defined path.
for (curPath,Folders,Files) in os.walk(BaseFolder):
for thisFile in Files:
bName, bExt = os.path.splitext(thisFile) # break the file name into 'name', '.ext'
if bExt.upper() in AllowedImageExtensions:
# file has the right extension to be a raster
ds = gdal.Open(os.path.join(curPath,thisFile)) # open the dataset with the full path
bnd = ds.GetRasterBand(1) # get the first band
NoDat = bnd.GetNoDataValue()
print( "{} :: {}".format( os.path.join(curPath,thisFile),NoDat))
Si su QGIS tiene una ventana de python debería poder ejecutarse desde allí, pero sustituya la línea BaseFolder = sys.argv[1]
con BaseFolder = '/your/path'
.