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