Escribí estas dos funciones en un módulo cuando quiero leer la banda en archivos NetCDF o HDF y devolver la banda fuera de la función. Cada HDF y NetCDF tiene muchos subconjuntos de datos. Cada subconjunto de datos de un archivo NetCDF tiene 365 bandas, mientras que el subconjunto de datos HDF sólo tiene una banda. Cuando ejecuto readFile1, no hay ningún problema. Sin embargo, cuando ejecuto readFile2 y devuelvo la banda, escribo out.GetNoDataValue() (u otras funciones adjuntas) en el intérprete o en otra función, python se bloquea. En la función readFile1, out.GetNoDataValue() no devuelve ningún valor de datos de la banda con éxito. Cuando devuelve la banda como en readFile2, no se puede hacer nada con ella. Cuando lo haces, python se bloquea.
mi versión de gdal es '1100000' (gdal.VersionInfo()) Mi sistema operativo es ubuntu 12.04 LTS
Creo que esto podría ser un error en gdal, no estoy seguro de ello.
from osgeo import gdal
def readFile1(inputFile,variableNo,bandNo):
filereadtemp=gdal.Open(inputFile)
fileread=gdal.Open(filereadtemp.GetSubDatasets()[variableNo][0])
out=fileread.GetRasterBand(bandNo)
nodatavalue=out.GetNoDataValue()
return nodatavalue
def readFile2(inputFile,variableNo,bandNo):
filereadtemp=gdal.Open(inputFile)
fileread=gdal.Open(filereadtemp.GetSubDatasets()[variableNo][0])
out=fileread.GetRasterBand(bandNo)
return out