From 2fd93008d2ce0052353e5016f2c15d1890ffd2e6 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 23 十月 2023 13:42:37 +0800 Subject: [PATCH] 解决影像图层覆盖了矢量图层 --- ExportMap/Sources/MoonExp.py | 59 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 44 insertions(+), 15 deletions(-) diff --git a/ExportMap/Sources/MoonExp.py b/ExportMap/Sources/MoonExp.py index 181fddf..9e19c50 100644 --- a/ExportMap/Sources/MoonExp.py +++ b/ExportMap/Sources/MoonExp.py @@ -4,12 +4,12 @@ import sys import math import argparse -from qgis.core import * from qgis.gui import * +from qgis.core import * from qgis.PyQt.QtGui import * +from qgis.PyQt.QtXml import * from qgis.PyQt.QtCore import * from qgis.PyQt.QtWidgets import * -from qgis.PyQt.QtXml import * # 鑾峰彇瀹屾暣璺緞 @@ -39,12 +39,15 @@ # 璁剧疆鍥惧眰鍙鎬� -def set_item_visibility(root_node, show_layers): +def set_item_visibility(root_node, layout, show_layers): print(root_node.name() + ': Group') for node in root_node.children(): # QgsLayerTreeLayer if isinstance(node, QgsLayerTreeGroup): - set_item_visibility(node, show_layers) + if node.name() == "搴曞浘": + add_raster_layer(node, layout) + else: + set_item_visibility(node, layout, show_layers) # QgsRasterLayer, QgsVectorLayer else: name = node.layer().name() @@ -56,8 +59,32 @@ node.setItemVisibilityChecked(flag) +# 娣诲姞Raster鍥惧眰锛歈gsLayerTreeGroup +def add_raster_layer(node, layout): + wmsUrl = layout.customProperty("wmsUrl") + if wmsUrl is None: + print("wmsUrl 涓虹┖锛�") + return + uris = wmsUrl.split(',') + # uris = uris[::-1] + + i = 0 + for uri in uris: + i = i + 1 + if uri is None: + continue + url = "crs=ESRI:104903&dpiMode=7&format=image/png&layers=Default&styles=default&tileMatrixSet=GoogleCRS84Quad01&url=" + uri + print("WMTS鍦板潃锛�" + url) + + layer = QgsRasterLayer(url, "WmsLayer_" + str(i), "wms") + if layer.isValid(): + ls = project.layerStore() + ls.addMapLayer(layer) + node.addLayer(layer) + + # 娣诲姞搴曞浘锛歭ayer.isValid()锛宭ayer.metadataUri()锛宭ayer.providerType() -def add_map_layer(prj, layout, args): +def add_map_layer(prj, layout): uris = layout.customProperty("wmsUrl").split(',') for uri in uris: if uri is None: @@ -66,6 +93,7 @@ print("WMS鍦板潃锛�" + url) layer = QgsRasterLayer(url, "WmsLayer", "wms") + # if layer.isValid(): prj.addMapLayer(layer) @@ -76,13 +104,13 @@ # 鍔犺浇宸ョ▼ args = get_args() -prj = QgsProject.instance() -# prj.read(r'Test.qgz') -prj.read(os.path.join(args.src, args.qgz)) -print("FileName: " + prj.fileName()) +project = QgsProject.instance() +# project.read(r'Test.qgz') +project.read(os.path.join(args.src, args.qgz)) +print("FileName: " + project.fileName()) -# layout = QgsPrintLayout(prj) -layout = QgsLayout(prj) +# layout = QgsPrintLayout(project) +layout = QgsLayout(project) # layout.initializeDefaults() # 鍔犺浇妯℃澘 @@ -115,11 +143,11 @@ # "闃�瀹�", "绔欏満", "绠¢亾涓績绾�", "鐭㈤噺娉ㄨ", "鐭㈤噺鍥�", "楂樺痉褰卞儚娉ㄨ", "楂樺痉褰卞儚", "褰卞儚娉ㄨ", "褰卞儚鍥�" # showLayers = ["闃�瀹�", "绠¢亾涓績绾�", "鐭㈤噺娉ㄨ", "鐭㈤噺鍥�"] showLayers = layout.customProperty("layers").split(',') -root = prj.layerTreeRoot() +root = project.layerTreeRoot() -# set_layers_valid(prj, showLayers) -set_item_visibility(root, showLayers) -add_map_layer(prj, layout, args) +# set_layers_valid(project, showLayers) +set_item_visibility(root, layout, showLayers) +# add_map_layer(project, layout) # sm = layout.itemById(r'璇存槑') '''table = layout.multiFrames()[0] @@ -137,6 +165,7 @@ # layout.updateBounds() layout.renderContext() layout.refresh() +# project.write("C:/360/a.qgz") # 瀵煎嚭 exporter = QgsLayoutExporter(layout) -- Gitblit v1.9.3