From 28758d48c68b8ac93a2f29a9d0e0d35c329bb8f4 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 08 十一月 2022 17:35:08 +0800 Subject: [PATCH] 1 --- ExportMap/ExportMap.csproj | 1 ExportMap/Sources/render.py | 93 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 0 deletions(-) diff --git a/ExportMap/ExportMap.csproj b/ExportMap/ExportMap.csproj index 1a62664..6e7fa2b 100644 --- a/ExportMap/ExportMap.csproj +++ b/ExportMap/ExportMap.csproj @@ -104,6 +104,7 @@ <Content Include="js\jquery.1.12.4.js" /> <Content Include="js\rollups.js" /> <Content Include="js\rsa.min.js" /> + <Content Include="Sources\render.py" /> <Content Include="Test.html" /> <Content Include="Web.config"> <SubType>Designer</SubType> diff --git a/ExportMap/Sources/render.py b/ExportMap/Sources/render.py new file mode 100644 index 0000000..66a5acc --- /dev/null +++ b/ExportMap/Sources/render.py @@ -0,0 +1,93 @@ +#!/usr/bin/env +# -*- coding: utf-8 -*- +import sys +import math +import argparse +from qgis.core import * +from qgis.gui import * +from qgis.PyQt.QtGui import * +from qgis.PyQt.QtCore import * +from qgis.PyQt.QtWidgets import * +from qgis.PyQt.QtXml import * + + +# 鑾峰彇鍙傛暟 +def getArgs(): + argv = sys.argv[1:] + print("argv = ", argv) + parser = argparse.ArgumentParser(description='ArgUtils') + parser.add_argument("-qgz", type=str, default="Test.qgz", required=False) + parser.add_argument("-qpt", type=str, default="Test.qpt", required=False) + + return parser.parse_args() + + +# 璁剧疆鍥惧眰鍙敤鎬� +def setLayersValid(project, showLayers): + for layer in project.mapLayers().values(): + flag = layer.name() in showLayers + print(layer.name() + ": " + str(flag)) + # if not flag: + # project.removeMapLayer(layer) + layer.setValid(flag) + + +# 璁剧疆鍥惧眰鍙鎬� +def setItemVisibility(root, showLayers): + print(root.name() + ': Group') + for node in root.children(): + # QgsLayerTreeLayer + if isinstance(node, QgsLayerTreeGroup): + setItemVisibility(node, showLayers) + # QgsRasterLayer, QgsVectorLayer + else: + name = node.layer().name() + flag = name in showLayers + print(name + ": " + str(flag)) + # if not flag: + # root.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() +project = QgsProject.instance() +# project.read(r'Test.qgz') +project.read(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: + template_content = f.read() +doc = QDomDocument() +doc.setContent(template_content) +layout.loadFromTemplate(doc, QgsReadWriteContext(), True) + +# map = layout.itemById(r'鍦板浘') +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) + +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