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