管道基础大数据平台系统开发-【CS】-ExportMap
1
13693261870
2023-03-10 600bdb9f8da4dc1b90487be63963d5f1bf54bc02
1
已修改1个文件
47 ■■■■ 文件已修改
ExportMap/Sources/xyz.py 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ExportMap/Sources/xyz.py
@@ -4,6 +4,7 @@
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
@@ -62,15 +63,40 @@
        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():
@@ -80,17 +106,18 @@
    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",
@@ -99,7 +126,7 @@
        'TILE_HEIGHT': 256,
        'TILE_WIDTH': 256,
        'TMS_CONVENTION': True,
        'ZOOM_MAX': 12,
        'ZOOM_MAX': 18,
        'ZOOM_MIN': 12
    }
    processing.run("qgis:tilesxyzdirectory", ops)
@@ -109,5 +136,7 @@
# main
if __name__ == '__main__':
    timer = time.time()
    init()
    print(f'耗时:{time.time() - timer:.2f}s')