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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 24 February 2022 13:48

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

[GDAL] Merge de 2 rasters

Bonjour,

J'essaye de merger 2 rasters avec GDAL. J'ai un premier raster (carte marine) sur lequel je superpose un chenal (cf. point 1 de l'image en pièce jointe). Sur le raster du chenal, toutes les valeurs en dehors du tracé du chenal sont définies avec une valeur nodata égale à -9999

1er cas :

Code:

gdal_merge.py -n -9999 -ot Float32 -of GTiff -co COMPRESS=DEFLATE -co PREDICTOR=2 -co ZLEVEL=9 raster_carte.tif raster_chenal.tif -o merge1.tif

ça fait une image noir et blanc ... (cf. point 2  de l'image en pièce jointe)

2ème cas : je met l'option -separate

Code:

gdal_merge.py -n -9999 -separate -ot Float32 -of GTiff -co COMPRESS=DEFLATE -co PREDICTOR=2 -co ZLEVEL=9 raster_carte.tif raster_chenal.tif -o merge1.tif

ça crée un raster à 2 bandes, mais ça modifie les couleurs du chenal, et au niveau des intersections entre les 2 rasters (cf. point 3  de l'image en pièce jointe).

Comment faire pour merger les 2 rasters et avoir un rendu comme au point 1 de l'image jointe ?


Merci,
Nico


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

Hors ligne

 

#2 Thu 24 February 2022 17:02

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1159

Re: [GDAL] Merge de 2 rasters

Salut,

est ce que gdal_merge est le bon outil pour ce que vous cherchez à faire  ?
La documentation dit qu'il sert à créér des mosaïque d'images.

Est ce que gdal_calc ne serait pas plus adapté ? Ca donnerait un truc comme çà (pas testé) :


Code:

gdal_calc.py  -A raster_carte.tif -B raster_chenal.tif \
   --outfile=superposition.tif --calc="B*(B>9999)+A*(B=9999)"

https://gdal.org/programs/gdal_calc.html

Dernière modification par tumasgiu (Thu 24 February 2022 17:24)

Hors ligne

 

#3 Fri 25 February 2022 07:46

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

Re: [GDAL] Merge de 2 rasters

Le problème avec gdal_calc, c'est que les 2 rasters doivent avoir la même taille.
Donc il faut d'abord retailler le raster chenal pour qu'il ait la même taille que le raster carte.
(cf. PJ)
Comment faire ça ?

EDIT : Apparement, la version 3.3 implémente une option --extent qui permet de remédier à cela :
https://gdal.org/programs/gdal_calc.htm … ion-extent
Je vais creuser un peu

Merci,
Nico

Dernière modification par nico-29 (Fri 25 February 2022 10:29)


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

Hors ligne

 

#4 Fri 25 February 2022 10:29

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1159

Re: [GDAL] Merge de 2 rasters

Je pense que c'est typiquement pour ce genre de choses qu'on peut utiliser gdal_merge.

A ce propos, j'avais lu en travers la documentation de gdal_merge, et votre premiere commande devrait fonctionner.

Pourquoi utilisez vous -ot Float32 ? Quel sont les types de vos deux rasters d'entrée ? Que donne la commande sans les option de création de raster
(-ot Float32 -of GTiff -co COMPRESS=DEFLATE -co PREDICTOR=2 -co ZLEVEL=9) ?

Hors ligne

 

#5 Fri 25 February 2022 11:11

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

Re: [GDAL] Merge de 2 rasters

Les 2 raster de départ sont des GeoTiff.

Code:

> gdalinfo raster_carte.tif
Driver: GTiff/GeoTIFF
Files: raster_carte.tif
Size is 13819, 9922
Coordinate System is:
PROJCS["unnamed",
    GEOGCS["WGS 84",
        DATUM["WGS_1984",
            SPHEROID["WGS 84",6378137,298.257223563,
                AUTHORITY["EPSG","7030"]],
            AUTHORITY["EPSG","6326"]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433],
        AUTHORITY["EPSG","4326"]],
    PROJECTION["Mercator_1SP"],
    PARAMETER["central_meridian",0],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",0],
    PARAMETER["false_northing",0],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AUTHORITY["EPSG","3395"]]
Origin = (-588366.981447381083854,6139031.895817051641643)
Pixel Size = (6.253350730160000,-6.253350730160000)
Metadata:
  AREA_OR_POINT=Area
  TIFFTAG_COPYRIGHT=XXXXX
  TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
  TIFFTAG_XRESOLUTION=300
  TIFFTAG_YRESOLUTION=300
Image Structure Metadata:
  COMPRESSION=PACKBITS
  INTERLEAVE=BAND
Corner Coordinates:
Upper Left  ( -588366.981, 6139031.896) (  5d17' 7.41"W, 48d23' 2.72"N)
Lower Left  ( -588366.981, 6076986.150) (  5d17' 7.41"W, 48d 0'41.26"N)
Upper Right ( -501951.928, 6139031.896) (  4d30'32.80"W, 48d23' 2.72"N)
Lower Right ( -501951.928, 6076986.150) (  4d30'32.80"W, 48d 0'41.26"N)
Center      ( -545159.455, 6108009.023) (  4d53'50.10"W, 48d11'53.22"N)
Band 1 Block=13819x128 Type=Byte, ColorInterp=Palette
  Color Table (RGB with 256 entries)
    0: 255,255,255,255
    1: 242,248,253,255
    ...
    255: 255,0,0,255

Code:

> gdalinfo raster_chenal.tif
Driver: GTiff/GeoTIFF
Files: raster_chenal.tif
Size is 28365, 20382
Coordinate System is:
LOCAL_CS["WGS 84 / World Mercator",
    GEOGCS["WGS 84",
        DATUM["unknown",
            SPHEROID["unretrievable - using WGS84",6378137,298.257223563]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433]],
    AUTHORITY["EPSG","3395"],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]]]
Origin = (-590731.593769815750420,6138305.447809762321413)
Pixel Size = (3.126674354844256,-3.126674354844256)
Metadata:
  AREA_OR_POINT=Area
  TIFFTAG_DATETIME=2022:02:23 11:25:58
  TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
  TIFFTAG_SOFTWARE=CARIS++, v4.2.0
  TIFFTAG_XRESOLUTION=600
  TIFFTAG_YRESOLUTION=600
Image Structure Metadata:
  COMPRESSION=DEFLATE
  INTERLEAVE=BAND
Corner Coordinates:
Upper Left  ( -590731.594, 6138305.448)
Lower Left  ( -590731.594, 6074577.571)
Upper Right ( -502043.476, 6138305.448)
Lower Right ( -502043.476, 6074577.571)
Center      ( -546387.535, 6106441.509)
Band 1 Block=28365x1 Type=Float32, ColorInterp=Red
  NoData Value=-9999

Les options -co COMPRESS=DEFLATE -co PREDICTOR=2 -co ZLEVEL=9 permettent de compresser le fichier de sortie (11 Mo avec les options, 143 Mo sans les options), mais le fichier est pareil dans les 2 cas (image noir et blanc, cf. point 2 de l'image jointe au message de départ)

Nico

Dernière modification par nico-29 (Fri 25 February 2022 11:18)

Hors ligne

 

#6 Fri 25 February 2022 14:59

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1159

Re: [GDAL] Merge de 2 rasters

Vos 2 raster ont des types de bande différents (color table pour la carte et flottant pour le chenal),
je pense que le souçi vient de là.

Il faudrait harmoniser les bandes de vos 2 rasters. Utiliser des couleurs indéxées (color table) implique d'utiliser la même color table dans vos 2 rasters.

Un autre ecueil est la présence de pixel nodata dans votre raster chenal. Il faudrait peut-être passer par un nodata mask plutot que d'utiliser une valeur de bande comme nodata.

Hors ligne

 

Pied de page des forums

Powered by FluxBB