From c47fa10dda775e94840549bf990a297bd218529c Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期五, 21 四月 2023 18:05:51 +0800
Subject: [PATCH] 1

---
 ExportMap/Sources/xyz.py |   66 +++++++++++++++++++++++++--------
 1 files changed, 50 insertions(+), 16 deletions(-)

diff --git a/ExportMap/Sources/xyz.py b/ExportMap/Sources/xyz.py
index f1afa7b..1f62db5 100644
--- a/ExportMap/Sources/xyz.py
+++ b/ExportMap/Sources/xyz.py
@@ -60,7 +60,7 @@
         if len(lines[i]) == 0:
             continue
 
-        print("layer: " + lines[i])
+        print("layer_" + str(i) + ": " + lines[i])
         layer = QgsRasterLayer(lines[i], "layer_" + str(i))
         if not layer.isValid() or layer.crs() is None:
             print("layer_" + str(i) + ": failed to load!")
@@ -85,9 +85,54 @@
         self.ymin = ymin
         self.ymax = ymax
 
-
 # 鑾峰彇杈圭晫
 def getExtent(prj, args):
+    ex = None
+    for layer in prj.mapLayers().values():
+        rect = layer.extent()
+        if ex is None:
+            ex = Rectangle(rect.xMinimum(), rect.xMaximum(), rect.yMinimum(), rect.yMaximum())
+            continue
+
+        if args.authid != layer.crs().authid():
+            transform = QgsCoordinateTransform(QgsCoordinateReferenceSystem(layer.crs().authid()), QgsCoordinateReferenceSystem(args.authid), prj)
+            min = QgsPoint(rect.xMinimum(), rect.yMinimum())
+            max = QgsPoint(rect.xMaximum(), rect.yMaximum())
+            min.transform(transform)
+            max.transform(transform)
+
+            if min.x() < ex.xmin:
+                ex.xmin = min.x()
+            if min.y() < ex.ymin:
+                ex.ymin = min.y()
+            if max.x() > ex.xmax:
+                ex.xmax = max.x()
+            if max.y() > ex.ymax:
+                ex.ymax = max.y()
+
+        else:
+            if rect.xMinimum() < ex.xmin:
+                ex.xmin = rect.xMinimum()
+            if rect.yMinimum() < ex.ymin:
+                ex.ymin = rect.yMinimum()
+            if rect.xMaximum() > ex.xmax:
+                ex.xmax = rect.xMaximum()
+            if rect.yMaximum() > ex.ymax:
+                ex.ymax = rect.yMaximum()
+
+    # -3640.3675,1734588.1947,2434663.1477,3677421.7047 [EPSG:32643]
+    # 123543.6722,2730986.0671,2732253.9315,3552923.0518 [EPSG:32643]
+    return str(ex.xmin) + "," + str(ex.xmax) + "," + str(ex.ymin) + "," + str(ex.ymax) + ' [' + args.authid + "]"
+
+
+# 鑾峰彇鍧愭爣鐐�
+def setNewRect(ex, xmin, ymin, xmax, ymax):
+    p = QgsPoint(x, y)
+
+    return p
+
+
+def getExtent2(prj, args):
     ex = None
     for layer in prj.mapLayers().values():
         rect = layer.extent()
@@ -95,6 +140,8 @@
 
         if ex is None:
             ex = Rectangle(rect.xMinimum(), rect.xMaximum(), rect.yMinimum(), rect.yMaximum())
+            # print(layer.extent().asWktCoordinates())
+            geo = QgsGeometry.fromWkt(layer.extent().asWktPolygon())
             continue
 
         if rect.xMinimum() < ex.xmin:
@@ -108,19 +155,6 @@
 
     # '-3640.3675,1734588.1947,2434663.1477,3677421.7047 [EPSG:32643]'
     return str(ex.xmin) + "," + str(ex.xmax) + "," + str(ex.ymin) + "," + str(ex.ymax) + ' [' + args.authid + "]"
-
-
-# 鑾峰彇杈圭晫2
-def getExtent2(prj):
-    rt = None
-    for layer in prj.mapLayers().values():
-        if rt is None:
-            rt = layer.extent()
-            continue
-
-        rt = rt.combineExtentWith(layer.extent())
-
-    return str(rt.xMinimum()) + "," + str(rt.xMaximum()) + "," + str(rt.yMinimum()) + "," + str(rt.yMaximum())
 
 
 # 鑾峰彇XYZ鍙傛暟
@@ -151,7 +185,7 @@
     import processing
 
     ops = getXYZOps(args)
-    # processing.run("qgis:tilesxyzdirectory", ops)
+    processing.run("qgis:tilesxyzdirectory", ops)
 
 
 # 鍒濆鍖�

--
Gitblit v1.9.3