| | |
| | | #!/usr/bin/env |
| | | # -*- coding: utf-8 -*- |
| | | import os |
| | | import sys |
| | | import math |
| | | import argparse |
| | |
| | | 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) |
| | | |
| | |
| | | |
| | | |
| | | # 设置å¾å±å¯ç¨æ§ |
| | | 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) |
| | |
| | | |
| | | |
| | | # 设置å¾å±å¯è§æ§ |
| | | 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) |
| | | |
| | |
| | | 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) |
| | |
| | | |
| | | # å è½½æ¨¡æ¿ |
| | | # 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) |
| | |
| | | # 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() |