| | |
| | | |
| | | import os |
| | | import sys |
| | | import time |
| | | sys.path.append(r"C:\Program Files\QGIS 3.16\apps\qgis-ltr\python\plugins") |
| | | import math |
| | | import argparse |
| | |
| | | |
| | | if len(prj.mapLayers()) == 0: |
| | | prj.setCrs(layer.crs()) |
| | | |
| | | for j in range(1, layer.bandCount() + 1): |
| | | layer.dataProvider().setNoDataValue(j, 0) |
| | | |
| | | prj.addMapLayer(layer) |
| | | |
| | | for layer in prj.mapLayers().values(): |
| | | print(layer.name() + ", " + layer.extent().toString() + ", " + layer.crs().authid()) |
| | | # 边界类 |
| | | class Rectangle: |
| | | def __init__(self, xmin, xmax, ymin, ymax): |
| | | self.xmin = xmin |
| | | self.xmax = xmax |
| | | self.ymin = ymin |
| | | self.ymax = ymax |
| | | |
| | | # 获取边界 |
| | | def getExtent(prj): |
| | | ex = None |
| | | for layer in prj.mapLayers().values(): |
| | | rect = layer.extent() |
| | | print(layer.name() + ", " + rect.toString()) |
| | | |
| | | if ex is None: |
| | | ex = Rectangle(rect.xMinimum(), rect.xMaximum(), rect.yMinimum(), rect.yMaximum()) |
| | | else: |
| | | if rect.xMinimum() < ex.xmin: |
| | | ex.xmin = rect.xMinimum() |
| | | if rect.yMinimum() < ex.ymin: |
| | | ex.ymin = rect.yMinimum() |
| | | if rect.xMaximum() > ex.xmax: |
| | | ex.xmax = rect.xMaximum() |
| | | if rect.yMaximum() > ex.ymax: |
| | | ex.ymax = rect.yMaximum() |
| | | |
| | | # '38399769,38403264,3558330,3561632' |
| | | return str(ex.xmin) + "," + str(ex.xmax) + "," + str(ex.ymin) + "," + str(ex.ymax) |
| | | |
| | | # 初始化 |
| | | def init(): |
| | |
| | | Processing.initialize() |
| | | |
| | | args = get_args() |
| | | project = QgsProject.instance() |
| | | project.read(os.path.join(args.src, args.qgz)) |
| | | print("FileName: " + project.fileName()) |
| | | prj = QgsProject.instance() |
| | | prj.read(os.path.join(args.src, args.qgz)) |
| | | print("FileName: " + prj.fileName()) |
| | | |
| | | loadLayers(project, args) |
| | | loadLayers(prj, args) |
| | | ext = getExtent(prj) |
| | | |
| | | import processing |
| | | ops = { |
| | | 'BACKGROUND_COLOR': QColor(0, 0, 0, 0), |
| | | 'DPI': 96, |
| | | 'EXTENT': '38399769.358700000,38403264.373400003,3558330.210400000,3561632.889400000', |
| | | 'EXTENT': ext, |
| | | 'METATILESIZE': 4, |
| | | 'OUTPUT_DIRECTORY': args.out, |
| | | 'OUTPUT_HTML': args.out + "\\view.html", |
| | |
| | | 'TILE_HEIGHT': 256, |
| | | 'TILE_WIDTH': 256, |
| | | 'TMS_CONVENTION': True, |
| | | 'ZOOM_MAX': 12, |
| | | 'ZOOM_MAX': 18, |
| | | 'ZOOM_MIN': 12 |
| | | } |
| | | processing.run("qgis:tilesxyzdirectory", ops) |
| | |
| | | |
| | | # main |
| | | if __name__ == '__main__': |
| | | timer = time.time() |
| | | init() |
| | | print(f'耗时:{time.time() - timer:.2f}s') |
| | | |