| | |
| | | import os |
| | | import sys |
| | | import time |
| | | |
| | | sys.path.append(r"C:\Program Files\QGIS 3.16\apps\qgis-ltr\python\plugins") |
| | | import math |
| | | import argparse |
| | |
| | | parser = argparse.ArgumentParser(description='ArgUtils') |
| | | parser.add_argument("-src", type=str, default=get_full_path(), required=False) |
| | | parser.add_argument("-qgz", type=str, default="xyz.qgz", required=False) |
| | | parser.add_argument("-file", type=str, default=r"D:\xyz\dq.txt", required=False) |
| | | parser.add_argument("-out", type=str, default=r"D:\xyz\tiles\dq", required=False) |
| | | parser.add_argument("-file", type=str, default=r"D:\xyz\cn.txt", required=False) |
| | | parser.add_argument("-out", type=str, default=r"D:\xyz\tiles\cn", required=False) |
| | | parser.add_argument("-min", type=int, default=4, required=False) |
| | | parser.add_argument("-max", type=int, default=8, required=False) |
| | | |
| | | return parser.parse_args() |
| | | |
| | |
| | | return str(ex.xmin) + "," + str(ex.xmax) + "," + str(ex.ymin) + "," + str(ex.ymax) |
| | | |
| | | |
| | | # 获取XYZ参数 |
| | | def getXYZOps(args, level): |
| | | return { |
| | | 'BACKGROUND_COLOR': QColor(0, 0, 0, 0), |
| | | 'DPI': 96, |
| | | 'EXTENT': args.ext, |
| | | 'METATILESIZE': 4, |
| | | 'OUTPUT_DIRECTORY': args.out, |
| | | 'OUTPUT_HTML': args.out + "\\view.html" if args.min == level else 'TEMPORARY_OUTPUT', |
| | | 'QUALITY': 100, |
| | | 'TILE_FORMAT': 0, |
| | | 'TILE_HEIGHT': 256, |
| | | 'TILE_WIDTH': 256, |
| | | 'TMS_CONVENTION': True, |
| | | 'ZOOM_MAX': level, |
| | | 'ZOOM_MIN': level |
| | | } |
| | | |
| | | |
| | | # 创建XYZ瓦片 |
| | | def createXYZ(args): |
| | | import processing |
| | | |
| | | for i in range(args.min, args.max + 1): |
| | | ops = getXYZOps(args, i) |
| | | print(ops) |
| | | processing.run("qgis:tilesxyzdirectory", ops) |
| | | |
| | | |
| | | # 初始化 |
| | | def init(): |
| | | # QgsApplication.setPrefixPath("C:\Program Files\QGIS 3.16", True) |
| | |
| | | print("FileName: " + prj.fileName()) |
| | | |
| | | loadLayers(prj, args) |
| | | ext = getExtent(prj) |
| | | prj.writePath(args.file.replace(".txt", ".qgz")) |
| | | prj.write(args.file.replace(".txt", ".qgz")) |
| | | |
| | | import processing |
| | | ops = { |
| | | 'BACKGROUND_COLOR': QColor(0, 0, 0, 0), |
| | | 'DPI': 96, |
| | | 'EXTENT': ext, |
| | | 'METATILESIZE': 4, |
| | | 'OUTPUT_DIRECTORY': args.out, |
| | | 'OUTPUT_HTML': args.out + "\\view.html", |
| | | 'QUALITY': 100, |
| | | 'TILE_FORMAT': 0, |
| | | 'TILE_HEIGHT': 256, |
| | | 'TILE_WIDTH': 256, |
| | | 'TMS_CONVENTION': True, |
| | | 'ZOOM_MAX': 18, |
| | | 'ZOOM_MIN': 4 |
| | | } |
| | | print(ops) |
| | | processing.run("qgis:tilesxyzdirectory", ops) |
| | | args.ext = getExtent(prj) |
| | | createXYZ(args) |
| | | |
| | | qgs.exitQgis() |
| | | |
| | |
| | | timer = time.time() |
| | | init() |
| | | print(f'耗时:{time.time() - timer:.2f}s') |
| | | |