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 Tue 07 October 2025 12:11

Yan
Juste Inscrit !
Date d'inscription: 7 Oct 2025
Messages: 1

QGIS: Fusion de plusieurs Raster

Bonjour
Lorsque je fusionne des rasters à l'aide d'un script python le raster de sortie est systématiquement en int alors que je le voudrais en float32 avez-vous déjà rencontré ce problème et comment le régler ?

Ma version de Gdal est la 3.11.3 et mes données de départ son elle en Float32

Voici le script :

from qgis.core import QgsProject, QgsRasterLayer
import processing
import os

project = QgsProject.instance()
raster_layers = [layer for layer in project.mapLayers().values() if isinstance(layer, QgsRasterLayer)]

raster_paths = [layer.source() for layer in raster_layers]
print("Couches raster détectées :", [layer.name() for layer in raster_layers])

output_dir = os.path.expanduser("~/Documents")  #

Hors ligne

 

#2 Wed 08 October 2025 15:35

LPlante
Participant occasionnel
Date d'inscription: 17 Nov 2021
Messages: 48

Re: QGIS: Fusion de plusieurs Raster

Bonjour, D'après la doc gdal, la format de sortie est parametrable avec -ot <type> Mais avec une codification qui n'est pas precisé, curieux ..

    Force the output image bands to have a specific data type supported by the driver, which may be one of the following: Byte, Int8, UInt16, Int16, UInt32, Int32, UInt64, Int64, Float32, Float64, CInt16, CInt32, CFloat32 or CFloat64.

Le chat corrigerait ton script comme ca , tu retrouves bien le data_type en parametre
from qgis.core import QgsProject, QgsRasterLayer
import processing
import os

project = QgsProject.instance()

# Récupération des couches raster
raster_layers = [layer for layer in project.mapLayers().values() if isinstance(layer, QgsRasterLayer)]
raster_paths = [layer.source() for layer in raster_layers]

print("Couches raster détectées :", [layer.name() for layer in raster_layers])

output_dir = os.path.expanduser("~/Documents")
output_path = os.path.join(output_dir, "raster_fusion.tif")

# Fusion des rasters avec type de données forcé
processing.run(
    "gdal:merge",
    {
        "INPUT": raster_paths,
        "PCT": False,
        "SEPARATE": False,
        "NODATA_INPUT": None,
        "NODATA_OUTPUT": None,
        "OPTIONS": "",
        "DATA_TYPE": 5,  # ⚠️ 5 = Float32
        "OUTPUT": output_path
    }
)

print("Raster fusionné créé :", output_path)

Pour info, la codif du type
| Code | Type GDAL | Description                |
| ---- | --------- | -------------------------- |
| 0    | Byte      | 8 bits entiers non signés  |
| 1    | Int16     | 16 bits entiers signés     |
| 2    | UInt16    | 16 bits entiers non signés |
| 3    | Int32     | 32 bits entiers signés     |
| 4    | UInt32    | 32 bits entiers non signés |
| 5    | Float32   | 32 bits flottants          |
| 6    | Float64   | 64 bits flottants          |

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo