Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Wed 03 May 2023 10:01

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

QGIS/PyQgis: ouvrir HDF5

Bonjour,

J'essaie d'ouvrir un fichier HDF5 avec PyQGIS et GDAL.

Code:

hdf_path = f'HDF5:{self.file}://path/vers/le/layer'
hdflayer = gdal.Open(hdf_path, gdal.GA_ReadOnly)
print(hdflayer.RasterXSize)
print(hdflayer.RasterYSize)
print(hdflayer.RasterCount)

En résultat, j'ai bien la taille de la grille :

Code:

3317
1754
1

Mais quand je veux accéder aux données de la grille, j'ai comme résultat None :

Code:

band = hdflayer.GetRasterBand(1)
print(band.ReadAsArray())

Qu'est ce qui cloche?

Merci, Nico

Hors ligne

 

#2 Thu 04 May 2023 07:33

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: QGIS/PyQgis: ouvrir HDF5

Est-ce qu'il faut installer numpy en plus, ou est-ce que c'est installé avec GDAL?

Nico

Hors ligne

 

#3 Thu 04 May 2023 08:07

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: QGIS/PyQgis: ouvrir HDF5

Si j'exécute le code dans un 'vrai' logiciel de dev Python (et pas dans la console de QGIS), j'ai des messages d'erreur qui apparaissent:

Si j'exécute :

Code:

hdf_path = f'HDF5:/chemin/du/fichier/hdf5://path/vers/le/dataset'
hdflayer = gdal.Open(hdf_path, gdal.GA_ReadOnly)

print(hdflayer.RasterXSize)
print(hdflayer.RasterYSize)
print(hdflayer.RasterCount)
bnd = hdflayer.GetRasterBand(1)
print(bnd.XSize, bnd.YSize)
print(type(bnd))
print(bnd)
print(gdal.GetDataTypeName(bnd.DataType))
print('*** ', bnd.ReadAsArray())

J'ai à l'affichage :

Code:

3317
1754
1
3317 1754
<class 'osgeo.gdal.Band'>
<osgeo.gdal.Band; proxy of <Swig Object of type 'GDALRasterBandShadow *' at 0x00000224F19C9810> >
Unknown
***  None
ERROR 1: HDF5:/chemin/du/fichier/hdf5://path/vers/le/dataset, band 1: Invalid data type
ERROR 1: GetBlockRef failed at X block offset 0, Y block offset 0: HDF5:/chemin/du/fichier/hdf5://path/vers/le/dataset, band 1: Invalid data type

une idée?

Quand on ouvre le fichier hdf5, ou dans l'instruction ReadAsArray, est-ce qu'il y a un moyen de forcer le type de données qu'on lui demande de lire ?


Nico

Dernière modification par nico-29 (Thu 04 May 2023 08:18)

Hors ligne

 

#4 Mon 15 May 2023 15:40

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: QGIS/PyQgis: ouvrir HDF5

si j'exécute :

Code:

uri = HDF5:/chemin/du/fichier/hdf5://path/vers/le/dataset
rlayer = QgsRasterLayer(uri, 'monlayer', 'gdal')
QgsProject.instance().addMapLayer(rlayer, True)

J'ai une nouvelle couche qui se crée dans QGIS, et dans la légende, j'ai l'image en pièce jointe.
Pour les bornes de la légende, je pense que ça correspond aux valeurs du raster lus 'en brut' dans le fichier, donc il a bien réussi à lire quelquechose...


Nico


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

Pied de page des forums

Powered by FluxBB