From a2a1b640b35ff095807069e63571faa3fdd4f659 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 09 十一月 2022 15:29:53 +0800 Subject: [PATCH] 1 --- ExportMap/Sources/render.py | 45 +++++++++++++++++++++++++++++---------------- 1 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ExportMap/Sources/render.py b/ExportMap/Sources/render.py index 66a5acc..21b2bc7 100644 --- a/ExportMap/Sources/render.py +++ b/ExportMap/Sources/render.py @@ -1,5 +1,6 @@ #!/usr/bin/env # -*- coding: utf-8 -*- +import os import sys import math import argparse @@ -11,11 +12,16 @@ from qgis.PyQt.QtXml import * +# 鑾峰彇瀹屾暣璺緞 +def get_full_path(): + return os.path.split(sys.argv[0])[0] + + # 鑾峰彇鍙傛暟 -def getArgs(): - argv = sys.argv[1:] - print("argv = ", argv) +def get_args(): + print("argv = ", sys.argv[1:]) parser = argparse.ArgumentParser(description='ArgUtils') + parser.add_argument("-src", type=str, default=get_full_path(), required=False) parser.add_argument("-qgz", type=str, default="Test.qgz", required=False) parser.add_argument("-qpt", type=str, default="Test.qpt", required=False) @@ -23,9 +29,9 @@ # 璁剧疆鍥惧眰鍙敤鎬� -def setLayersValid(project, showLayers): - for layer in project.mapLayers().values(): - flag = layer.name() in showLayers +def set_layers_valid(prj, show_layers): + for layer in prj.mapLayers().values(): + flag = layer.name() in show_layers print(layer.name() + ": " + str(flag)) # if not flag: # project.removeMapLayer(layer) @@ -33,39 +39,42 @@ # 璁剧疆鍥惧眰鍙鎬� -def setItemVisibility(root, showLayers): - print(root.name() + ': Group') - for node in root.children(): +def set_item_visibility(root_node, show_layers): + print(root_node.name() + ': Group') + for node in root_node.children(): # QgsLayerTreeLayer if isinstance(node, QgsLayerTreeGroup): - setItemVisibility(node, showLayers) + set_item_visibility(node, show_layers) # QgsRasterLayer, QgsVectorLayer else: name = node.layer().name() flag = name in showLayers print(name + ": " + str(flag)) # if not flag: - # root.removeLayer(node.layer()) + # root_node.removeLayer(node.layer()) # node.layer().setValid(False) node.setItemVisibilityChecked(flag) +# 鍒濆鍖� # QgsApplication.setPrefixPath(r"E:/terrait/TianJin/LFServer/QGIS/", True) qgs = QgsApplication([], True) qgs.initQgis() -args = getArgs() +# 鍔犺浇宸ョ▼ +args = get_args() project = QgsProject.instance() # project.read(r'Test.qgz') -project.read(args.qgz) +project.read(os.path.join(args.src, args.qgz)) print("FileName: " + project.fileName()) # layout = QgsPrintLayout(project) layout = QgsLayout(project) # layout.initializeDefaults() +# 鍔犺浇妯℃澘 # with open(r'Test.qpt', 'r', encoding='utf-8') as f: -with open(args.qpt, 'r', encoding='utf-8') as f: +with open(os.path.join(args.src, args.qpt), 'r', encoding='utf-8') as f: template_content = f.read() doc = QDomDocument() doc.setContent(template_content) @@ -75,19 +84,23 @@ map = layout.referenceMap() print('1:' + str(math.ceil(map.scale()))) +# 璁剧疆鍥惧眰 # "闃�瀹�", "绔欏満", "绠¢亾涓績绾�", "鐭㈤噺娉ㄨ", "鐭㈤噺鍥�", "楂樺痉褰卞儚娉ㄨ", "楂樺痉褰卞儚", "褰卞儚娉ㄨ", "褰卞儚鍥�" # showLayers = ["闃�瀹�", "绠¢亾涓績绾�", "鐭㈤噺娉ㄨ", "鐭㈤噺鍥�"] showLayers = layout.customProperty("layers").split(',') root = project.layerTreeRoot() -# setLayersValid(project, showLayers) -setItemVisibility(root, showLayers) +# set_layers_valid(project, showLayers) +set_item_visibility(root, showLayers) +# 鍒锋柊 layout.refresh() map.refresh() +# 瀵煎嚭 exporter = QgsLayoutExporter(layout) # img_path = os.path.join(r"E:/terrait/TianJin/LFServer/QGIS", "render.png") img_path = layout.customProperty("imgPath") exporter.exportToImage(img_path, QgsLayoutExporter.ImageExportSettings()) +# 閫�鍑� qgs.exitQgis() -- Gitblit v1.9.3