#1 Mon 03 March 2025 10:51
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 365
PYQGIS --> GDAL--> geotIff
Bonjour,
Etant en limite de python, QGIS et GDAL je poste ma problématique dans ce forum:
Dans QGIS, en python, j'ai généré un ensemble de fichiers GeoTiff qui couvre l'ensemble du territoire de la métropole de Lyon.
J'ai ensuite fait appel à gdal.BuildVRT et gdal.tranlate pour merger mes 64 images en un seul fichier GeoTiff
Cela fonctionne, mais je ne sais pas commente faire pour que dans ce fichier final, il y ai plusieurs pages qui pourraient être appelées en suite en fonction de l'échelle de visualisation (tuilage)
Si vous avez une idée et un exemple concret, je suis preneur
Pour la phase de gdal.tranlate, j'ai bien positionné le code de création avec TILED = YES, mais je ne vois aucune différence. Un seul fichier GeoTIFF est créé et ne semble contenir qu'une seule dalle si je le consulte avec FME.
Ca c'est le premier point
L'autre point, en consultant d'autres post à ce sujet, je vois qu'il faut ensuite faire un gdaladdo avec les fichiers issus de gdal.translate
Est-ce bien cela ?
Merci de votre aide, et bonne journée
PYJ
Dernière modification par pyjoubert (Mon 03 March 2025 15:46)
Hors ligne
#2 Tue 04 March 2025 07:32
- fabriceg
- Juste Inscrit !
- Date d'inscription: 3 Mar 2025
- Messages: 1
Re: PYQGIS --> GDAL--> geotIff
Bonjour,
Pour savoir si c'est un fichie COG ou non, on peut déjà regarder le résultat de gdal.Info. Si le retour contient des lignes similaire à celles-ci, alors c'est tout bon.
Image Structure Metadata:
LAYOUT=COG
COMPRESSION=LZW
INTERLEAVE=PIXEL
...
Band 1 Block=512x512 Type=Byte, ColorInterp=Red
Min=123.000 Max=254.000
Overviews: 21000x14000, 10500x7000, 5250x3500, 2625x1750, 1313x875
J'utilise ces quelques lignes de python pour copier un geotiff en COG geotiff. Les variables à définir préalablement sont input_file et output_file.
cog_options = [
"TILED=YES",
"COMPRESS=LZW",
"BIGTIFF=IF_SAFER",
"COPY_SRC_OVERVIEWS=YES",
"BLOCKXSIZE=512",
"BLOCKYSIZE=512"
]
input_dataset = gdal.Open(input_file)
driver = gdal.GetDriverByName("GTiff")
output_dataset = driver.CreateCopy(output_file, input_dataset, 0, cog_options)
output_dataset.BuildOverviews("AVERAGE", [2, 4, 8, 16, 32])
Effectivement il ne faut pas oublier le gdal.BuildOverviews (ou gdaladdo).
FG
Hors ligne
#3 Tue 04 March 2025 08:02
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 365
Re: PYQGIS --> GDAL--> geotIff
Bonjour,
Voici ce que donne gdal.Info
Code:
Image Structure Metadata: COMPRESSION=LZW INTERLEAVE=PIXEL Corner Coordinates: Upper Left ( 1835120.086, 5178851.522) ( 4d44\'17.61"E, 45d47\'47.21"N) Lower Left ( 1835120.086, 5173541.900) ( 4d44\'12.25"E, 45d44\'55.26"N) Upper Right ( 1838713.113, 5178851.522) ( 4d47\' 3.95"E, 45d47\'44.63"N) Lower Right ( 1838713.113, 5173541.900) ( 4d46\'58.45"E, 45d44\'52.69"N) Center ( 1836916.599, 5176196.711) ( 4d45\'38.06"E, 45d46\'19.96"N) Band 1 Block=2715x386 Type=Byte, ColorInterp=Red Mask Flags: PER_DATASET ALPHA Band 2 Block=2715x386 Type=Byte, ColorInterp=Green Mask Flags: PER_DATASET ALPHA Band 3 Block=2715x386 Type=Byte, ColorInterp=Blue Mask Flags: PER_DATASET ALPHA Band 4 Block=2715x386 Type=Byte, ColorInterp=Alpha
Ensuite, pourquoi tester si c'est un COG dans mon cas ?
Hors ligne
#4 Tue 04 March 2025 08:34
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 365
Re: PYQGIS --> GDAL--> geotIff
Et voilà ce que je voudrais avoir
Code:
S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif") 'Driver: GTiff/GeoTIFF Files: S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tfw Size is 160008, 220000 Origin = (1828599.894166500074789,5196866.775827999226749) Pixel Size = (0.211656000000000,-0.211667000000000) Metadata: TIFFTAG_ARTIST=STAR-APIC-1SPATIAL TIFFTAG_RESOLUTIONUNIT=1 (unitless) Image Structure Metadata: COMPRESSION=DEFLATE INTERLEAVE=PIXEL Subdatasets: SUBDATASET_1_NAME=GTIFF_DIR:1:S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif SUBDATASET_1_DESC=Page 1 (160008P x 220000L x 3B) SUBDATASET_2_NAME=GTIFF_DIR:2:S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif SUBDATASET_2_DESC=Page 2 (80004P x 110000L x 3B) SUBDATASET_3_NAME=GTIFF_DIR:3:S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif SUBDATASET_3_DESC=Page 3 (40002P x 55000L x 3B) SUBDATASET_4_NAME=GTIFF_DIR:4:S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif SUBDATASET_4_DESC=Page 4 (20001P x 27500L x 3B) SUBDATASET_5_NAME=GTIFF_DIR:5:S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif SUBDATASET_5_DESC=Page 5 (10000P x 13750L x 3B) SUBDATASET_6_NAME=GTIFF_DIR:6:S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif SUBDATASET_6_DESC=Page 6 (5000P x 6875L x 3B) SUBDATASET_7_NAME=GTIFF_DIR:7:S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif SUBDATASET_7_DESC=Page 7 (2500P x 3437L x 3B) SUBDATASET_8_NAME=GTIFF_DIR:8:S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif SUBDATASET_8_DESC=Page 8 (1250P x 1718L x 3B) SUBDATASET_9_NAME=GTIFF_DIR:9:S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif SUBDATASET_9_DESC=Page 9 (625P x 859L x 3B) SUBDATASET_10_NAME=GTIFF_DIR:10:S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif SUBDATASET_10_DESC=Page 10 (312P x 429L x 3B) SUBDATASET_11_NAME=GTIFF_DIR:11:S:/LSM/PLUH/PLUH_IMAGES/RISQUES/MDL_M3_IMG_RISQUES_OFFICIEL.tif SUBDATASET_11_DESC=Page 11 (156P x 214L x 3B) Corner Coordinates: Upper Left ( 1828599.894, 5196866.776) Lower Left ( 1828599.894, 5150300.036) Upper Right ( 1862466.547, 5196866.776) Lower Right ( 1862466.547, 5150300.036) Center ( 1845533.221, 5173583.406) Band 1 Block=256x256 Type=Byte, ColorInterp=Red Band 2 Block=256x256 Type=Byte, ColorInterp=Green Band 3 Block=256x256 Type=Byte, ColorInterp=Blue
Hors ligne