Generar mosaicos XYZ con Python no funciona

Nov 01 2020

Actualmente estoy tratando de generar XYZ Tiles con Python desde un archivo .tif. Intenté usar la GUI de QGis y después de un tiempo los mosaicos se estaban generando correctamente. Después de eso, vi en otro enlace que podía ver el comando de procesamiento en el Historial de procesamiento en la GUI. La salida de mi carpeta en la GUI es la siguiente:

El comando de historial correspondiente en la GUI es:

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'})

Después de eso, intenté reproducir el mismo resultado en python. El código en sí se ejecuta sin errores, pero la estructura de carpetas es completamente diferente y contiene muchas carpetas Y negativas y el código en sí no se detiene realmente. La salida de la carpeta generada a partir del script de Python es la siguiente:

Mi script de Python para los mosaicos es:

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'
})


Espero que pueda ayudarme ahora porque hasta ahora no he encontrado una solución por mi cuenta.

Gracias por adelantado

Respuestas

1 DrorBogin Nov 01 2020 at 18:40

En la GUI no definió un esquema de ordenamiento en teselas (CRS) y en su script definió una proyección.

Intenté lo mismo y lo que sucede es que el algoritmo asume que, sin un esquema de ordenamiento en mosaico definido, sus coordenadas se refieren a EPSG: 3857 (WGS 84 / Pseudo-Mercator (web mercator)).

Si desea publicar sus mosaicos en algún lugar público, es posible que desee configurar su proyecto en EPSG: 3857 y seleccionar la extensión con la GUI primero para asegurarse de tener la ubicación correcta.

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'
})