Tạo ô XYZ với Python không hoạt động

Nov 01 2020

Tôi hiện đang cố gắng tạo XYZ Tiles bằng Python từ tệp .tif. Tôi đã thử sử dụng QGis GUI và sau một thời gian, các ô được tạo chính xác. Sau đó, tôi thấy trên một liên kết khác, rằng tôi có thể thấy lệnh xử lý trong Lịch sử xử lý trong GUI. Đầu ra thư mục của tôi trong GUI như sau:

Lệnh lịch sử tương ứng trong GUI là:

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

Sau đó, tôi đã cố gắng tạo lại cùng một đầu ra trong python. Bản thân mã chạy không có lỗi nhưng cấu trúc thư mục hoàn toàn khác và nó chứa nhiều thư mục Y âm và bản thân mã không thực sự dừng lại. Đầu ra thư mục được tạo từ tập lệnh python như sau:

Tập lệnh python của tôi cho các ô là:

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


Tôi hy vọng bạn có thể giúp tôi ngay bây giờ vì tôi đã không tìm thấy một giải pháp của riêng tôi cho đến nay.

Cảm ơn trước

Trả lời

1 DrorBogin Nov 01 2020 at 18:40

Trong GUI, bạn không xác định một sơ đồ xếp lớp (CRS) và trong tập lệnh của bạn, bạn đã xác định một phép chiếu.

Tôi đã thử tương tự và điều xảy ra là thuật toán giả định rằng không có sơ đồ xếp gạch xác định rằng tọa độ của bạn đang tham chiếu đến EPSG: 3857 (WGS 84 / Pseudo-Mercator (công cụ thương mại web)).

Nếu bạn muốn xuất bản các ô của mình ở nơi nào đó công khai, bạn có thể muốn đặt dự án của mình thành EPSG: 3857 và chọn phạm vi với GUI trước để đảm bảo bạn có vị trí chính xác.

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