¶Ô±ÈÐÂÎļþ |
| | |
| | | #!/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() |