Générer des tuiles XYZ avec Python ne fonctionne pas
J'essaye actuellement de générer des tuiles XYZ avec Python à partir d'un fichier .tif. J'ai essayé d'utiliser l'interface graphique QGis et après un certain temps, les tuiles se sont générées correctement. Après cela, j'ai vu sur un autre lien, que je pouvais voir la commande de traitement dans l'historique de traitement de l'interface graphique. La sortie de mon dossier dans l'interface graphique est la suivante:
La commande d'historique correspondante dans l'interface graphique est:
processing.run("qgis:tilesxyzdirectory", {'EXTENT':'-443.962200000,456.037800000,-4759.144700000,-3659.144700000 []','ZOOM_MIN':11,'ZOOM_MAX':11,'DPI':96,'BACKGROUND_COLOR':QColor(0, 0, 0, 0),'TILE_FORMAT':0,'QUALITY':75,'METATILESIZE':4,'TILE_WIDTH':256,'TILE_HEIGHT':256,'TMS_CONVENTION':False,'OUTPUT_DIRECTORY':'C:\\Users\\xxx\\Documents\\FP\\QGIS EPSG','OUTPUT_HTML':'TEMPORARY_OUTPUT'})
Après cela, j'ai essayé de reproduire la même sortie en python. Le code lui-même s'exécute sans erreurs mais la structure des dossiers est complètement différente et contient de nombreux dossiers Y négatifs et le code lui-même ne s'arrête pas vraiment. La sortie de dossier générée à partir du script python est la suivante:
Mon script python pour les tuiles est:
import requests
import numpy as np
import wradlib as wrl
import sys
import matplotlib.pyplot as pl
import os
from qgis.core import *
QgsApplication.setPrefixPath('C:\\OSGeo4W\\apps\\qgis\\', True)
qgs = QgsApplication([], False)
qgs.initQgis()
import processing
from processing.core.Processing import Processing
Processing.initialize()
path_to_tif = "geotiff30101055.tiff"
rlayer = QgsRasterLayer(path_to_tif, "Standard raster layer")
QgsProject.instance().addMapLayer(rlayer, False)
processing.run("qgis:tilesxyzdirectory", {
'EXTENT': '-443.962200000,456.037800000,-4759.144700000,-3659.144700000 []',
'ZOOM_MIN': 11, 'ZOOM_MAX': 11, 'DPI': 100,
'TILE_FORMAT': 0,
'QUALITY': 75,
'METATILESIZE': 4,
'TILE_WIDTH': 256,
'TILE_HEIGHT': 256,
'TMS_CONVENTION': False,
'OUTPUT_DIRECTORY': 'C:\\Users\\xxx\\Documents\\FP\\First', 'OUTPUT_HTML': 'TEMPORARY_OUTPUT'
})
J'espère que vous pouvez m'aider maintenant car je n'ai pas trouvé de solution par moi-même jusqu'à présent.
Merci d'avance
Réponses
Dans l'interface graphique, vous n'avez pas défini de schéma de tuilage (CRS) et dans votre script vous avez défini une projection.
J'ai essayé la même chose et ce qui se passe, c'est que l'algorithme suppose que, sans schéma de tuilage défini, vos coordonnées font référence à EPSG: 3857 (WGS 84 / Pseudo-Mercator (web mercator)).
Si vous souhaitez publier vos tuiles dans un endroit public, vous pouvez définir votre projet sur EPSG: 3857 et sélectionner d'abord l'étendue avec l'interface graphique pour vous assurer que vous avez le bon emplacement.
processing.run("qgis:tilesxyzdirectory",
{'EXTENT':'-443.962200000,456.037800000,
-4759.144700000,-3659.144700000 []', # No Defined tiling scheme or CRS
'ZOOM_MIN':11,
'ZOOM_MAX':11,
'DPI':96,
'BACKGROUND_COLOR':QColor(0, 0, 0, 0),
'TILE_FORMAT':0,
'QUALITY':75,
'METATILESIZE':4,
'TILE_WIDTH':256,
'TILE_HEIGHT':256,
'TMS_CONVENTION':False,
'OUTPUT_DIRECTORY':'C:\\Users\\xxx\\Documents\\FP\\QGIS EPSG',
'OUTPUT_HTML':'TEMPORARY_OUTPUT'})
processing.run("qgis:tilesxyzdirectory", {
'EXTENT': '-443.962200000,456.037800000,
-4759.144700000,-3659.144700000 [Radolan Projection]', # Defined Radolan Projection
'ZOOM_MIN': 11, 'ZOOM_MAX': 11, 'DPI': 100,
'TILE_FORMAT': 0,
'QUALITY': 75,
'METATILESIZE': 4,
'TILE_WIDTH': 256,
'TILE_HEIGHT': 256,
'TMS_CONVENTION': False,
'OUTPUT_DIRECTORY': 'C:\\Users\\xxx\\Documents\\FP\\First', 'OUTPUT_HTML': 'TEMPORARY_OUTPUT'
})