Создание плиток XYZ с Python не работает

Nov 01 2020

В настоящее время я пытаюсь сгенерировать плитки XYZ с помощью Python из файла .tif. Я пробовал использовать графический интерфейс QGis, и через некоторое время плитки генерировались правильно. После этого я увидел по другой ссылке, что я мог видеть команду обработки в истории обработки в графическом интерфейсе. Вывод моей папки в графическом интерфейсе следующий:

Соответствующая команда истории в графическом интерфейсе:

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

После этого я попытался воспроизвести тот же вывод на Python. Сам код работает без ошибок, но структура папок совершенно другая и содержит много отрицательных папок Y, а сам код действительно не останавливается. Вывод папки, сгенерированный скриптом python, следующий:

Мой сценарий python для плиток:

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


Я надеюсь, что вы можете мне помочь сейчас, потому что я пока не нашел решения самостоятельно.

заранее спасибо

Ответы

1 DrorBogin Nov 01 2020 at 18:40

В графическом интерфейсе вы не определили схему листов (CRS), а в своем скрипте вы определили проекцию.

Я пробовал то же самое, и что происходит, так это то, что алгоритм предполагает, что без определенной схемы листов ваши координаты относятся к EPSG: 3857 (WGS 84 / Pseudo-Mercator (веб-меркатор)).

Если вы хотите опубликовать свои плитки где-нибудь в открытом доступе, вы можете настроить свой проект на EPSG: 3857 и сначала выбрать экстент с помощью графического интерфейса, чтобы убедиться, что у вас есть правильное местоположение.

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