From 2fd93008d2ce0052353e5016f2c15d1890ffd2e6 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 23 十月 2023 13:42:37 +0800
Subject: [PATCH] 解决影像图层覆盖了矢量图层

---
 MoonExp/Sources/MoonExp.py |   59 ++++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 44 insertions(+), 15 deletions(-)

diff --git a/MoonExp/Sources/MoonExp.py b/MoonExp/Sources/MoonExp.py
index 181fddf..9e19c50 100644
--- a/MoonExp/Sources/MoonExp.py
+++ b/MoonExp/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