สร้าง XYZ Tiles โดยที่ Python ไม่ทำงาน
ฉันกำลังพยายามสร้าง XYZ Tiles ด้วย Python จากไฟล์. tif ฉันลองใช้ QGis GUI และหลังจากนั้นไม่นานกระเบื้องก็สร้างได้อย่างถูกต้อง หลังจากนั้นฉันเห็นในลิงค์อื่นฉันเห็นคำสั่งการประมวลผลในประวัติการประมวลผลใน GUI ผลลัพธ์โฟลเดอร์ของฉันใน GUI มีดังต่อไปนี้:
คำสั่งประวัติที่เกี่ยวข้องใน GUI คือ:
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'
})
ฉันหวังว่าคุณจะช่วยฉันได้ในตอนนี้เพราะฉันยังไม่พบวิธีแก้ปัญหาด้วยตัวเอง
ขอบคุณล่วงหน้า
คำตอบ
ใน GUI คุณไม่ได้กำหนดโครงร่างการจัดเรียง (CRS) และในสคริปต์ของคุณคุณได้กำหนดโครงร่าง
ฉันลองแบบเดียวกันและสิ่งที่เกิดขึ้นคืออัลกอริทึมสมมติว่าหากไม่มีโครงร่างการปูกระเบื้องที่กำหนดพิกัดของคุณอ้างถึง EPSG: 3857 (WGS 84 / Pseudo-Mercator (web mercator))
หากคุณต้องการเผยแพร่ไทล์ของคุณในที่สาธารณะคุณอาจต้องการตั้งค่าโปรเจ็กต์ของคุณเป็น EPSG: 3857 และเลือกขอบเขตด้วย GUI ก่อนเพื่อให้แน่ใจว่าคุณมีตำแหน่งที่ถูกต้อง
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'
})