From 676892f591be011d2e41f309d7e3ee809f412f0d Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 07 八月 2023 17:26:55 +0800 Subject: [PATCH] 1 --- ExportMap/Sources/xyz.py | 74 +++++++++++++------------------------ 1 files changed, 26 insertions(+), 48 deletions(-) diff --git a/ExportMap/Sources/xyz.py b/ExportMap/Sources/xyz.py index acb3e18..0fd93f1 100644 --- a/ExportMap/Sources/xyz.py +++ b/ExportMap/Sources/xyz.py @@ -28,18 +28,18 @@ parser = argparse.ArgumentParser(description='ArgUtils') parser.add_argument("-src", type=str, default=get_full_path(), required=False) parser.add_argument("-qgz", type=str, default=r"xyz.qgz", required=False) - parser.add_argument("-file", type=str, default=r"D:\xyz\domtt\tif.txt", required=False) - parser.add_argument("-out", type=str, default=r"D:\xyz\domtt\png", required=False) + parser.add_argument("-file", type=str, default=r"D:\xyz\dom0.2m\tif.txt", required=False) + parser.add_argument("-out", type=str, default=r"D:\xyz\dom0.2m\png", required=False) parser.add_argument("-min", type=int, default=12, required=False) - parser.add_argument("-max", type=int, default=18, required=False) + parser.add_argument("-max", type=int, default=15, required=False) parser.add_argument("-noData", type=int, default=0, required=False) return parser.parse_args() # 璇诲彇鏂囨湰鏂囦欢 -def readTxt(filePath): - f = open(filePath, encoding="utf-8") +def read_txt(path): + f = open(path, encoding="utf-8") lines = f.readlines() f.close() @@ -50,12 +50,12 @@ # 鍔犺浇鍥惧眰 -def loadLayers(prj, args): +def load_layers(prj, args): for layer in prj.mapLayers().values(): prj.removeMapLayer(layer) - args.authid = None - lines = readTxt(args.file) + args.crs = None + lines = read_txt(args.file) for i in range(0, len(lines)): if len(lines[i]) == 0: continue @@ -67,8 +67,8 @@ continue if len(prj.mapLayers()) == 0: - args.authid = layer.crs().authid() - print("authid: " + args.authid) + args.crs = layer.crs() + print("authid: " + args.crs.authid()) prj.setCrs(layer.crs()) for j in range(1, layer.bandCount() + 1): @@ -88,33 +88,36 @@ self.ymin = ymin self.ymax = ymax + # 鑾峰彇杈圭晫 -def getExtent(prj, args): +def get_extent(prj, args): ex = None for layer in prj.mapLayers().values(): rect = layer.extent() if ex is None: + # print(layer.extent().asWktCoordinates()); geo = QgsGeometry.fromWkt(layer.extent().asWktPolygon()) 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) + if args.crs.authid() != layer.crs().authid(): + transform = QgsCoordinateTransform(layer.crs(), args.crs, prj) min = QgsPoint(rect.xMinimum(), rect.yMinimum()) max = QgsPoint(rect.xMaximum(), rect.yMaximum()) min.transform(transform) max.transform(transform) - setRectBound(ex, min.x(), min.y(), max.x(), max.y()) + set_rect_bound(ex, min.x(), min.y(), max.x(), max.y()) else: - setRectBound(ex, rect.xMinimum(), rect.yMinimum(), rect.xMaximum(), rect.yMaximum()) + set_rect_bound(ex, rect.xMinimum(), rect.yMinimum(), rect.xMaximum(), rect.yMaximum()) # 123543.6722,2730986.0671,2732253.9315,3552923.0518 [EPSG:32643] # return '38400309.1314,38403253.7083,3559920.4768,3561690.3144 [CGCS2000 / 3-degree Gauss-Kruger zone 38]' - return str(ex.xmin) + "," + str(ex.xmax) + "," + str(ex.ymin) + "," + str(ex.ymax) + ' [' + args.authid + "]" + return str(ex.xmin) + "," + str(ex.xmax) + "," + str(ex.ymin) + "," + str(ex.ymax) + ' [' + args.crs.authid() + "]" + # 璁剧疆鐭╁舰杈圭晫 -def setRectBound(ex, xmin, ymin, xmax, ymax): +def set_rect_bound(ex, xmin, ymin, xmax, ymax): if xmin < ex.xmin: ex.xmin = xmin if ymin < ex.ymin: @@ -125,33 +128,8 @@ ex.ymax = ymax -def getExtent2(prj, args): - ex = None - for layer in prj.mapLayers().values(): - rect = layer.extent() - print(layer.name() + ", " + rect.toString() + ", " + layer.crs().authid()) - - 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: - 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]' - return str(ex.xmin) + "," + str(ex.xmax) + "," + str(ex.ymin) + "," + str(ex.ymax) + ' [' + args.authid + "]" - - # 鑾峰彇XYZ鍙傛暟 -def getXYZOps(args): +def get_xyz_ops(args): ops = { 'BACKGROUND_COLOR': QColor(0, 0, 0, 0), 'DPI': 96, @@ -174,10 +152,10 @@ # 鍒涘缓XYZ鐡︾墖 -def createXYZ(args): +def create_xyz(args): import processing - ops = getXYZOps(args) + ops = get_xyz_ops(args) processing.run("qgis:tilesxyzdirectory", ops) @@ -194,11 +172,11 @@ # prj.read(args.qgz) print("FileName: " + prj.fileName()) - loadLayers(prj, args) + load_layers(prj, args) # prj.write(args.file.replace(".txt", ".qgz")) - args.ext = getExtent(prj, args) - createXYZ(args) + args.ext = get_extent(prj, args) + create_xyz(args) qgs.exitQgis() -- Gitblit v1.9.3