管道基础大数据平台系统开发-【CS】-ExportMap
13693261870
2024-09-07 8d7a67ab1d635cb954337d8a767878ae526dd3dc
ExportMap/Sources/merge.py
@@ -29,7 +29,7 @@
    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\dem\dem.txt", required=False)
    parser.add_argument("-out", type=str, default=r"D:\xyz\dem\dem\astgtm2.tif", required=False)
    parser.add_argument("-out", type=str, default=r"D:\xyz\dem\out.tif", required=False)
    return parser.parse_args()
@@ -68,16 +68,27 @@
            print("authid: " + args.authid)
            prj.setCrs(layer.crs())
        # for j in range(1, layer.bandCount() + 1):
        #     try:
        #         layer.dataProvider().setNoDataValue(j, 0)
        #     except Exception as e:
        #         print(e)
        prj.addMapLayer(layer)
# 获取参数
def get_ops(args):
def get_ops(prj, args):
    layers = []
    for layer in prj.mapLayers().values():
        layers.append(layer.name())
    ops = {
        'INPUT': layers,
        'DATA_TYPE': 5,
        'OUTPUT': args.out,
        'NODATA_INPUT': 0,
        'NODATA_OUTPUT': 0,
        # 'NODATA_INPUT': 0,
        # 'NODATA_OUTPUT': 0,
        'OPTIONS': ''
    }
    print(ops)
@@ -86,11 +97,36 @@
# 合并
def merge(args):
def merge(prj, args):
    import processing
    ops = get_ops(args)
    ops = get_ops(prj, args)
    processing.run("gdal:merge", ops)
# 获取中心点坐标
def get_coord(prj, args):
    layer = QgsRasterLayer(args.out, "layer_tif")
    rect = layer.extent()
    x = (rect.xMinimum() + rect.xMaximum()) / 2
    y = (rect.yMinimum() + rect.yMaximum()) / 2
    sid = layer.crs().authid()
    if sid != "EPSG:4490" and sid != "EPSG:4326":
        sid = "EPSG:4490" if layer.crs().toWkt().find("CGCS2000") > -1 else "EPSG:4326"
        transform = QgsCoordinateTransform(QgsCoordinateReferenceSystem(layer.crs().authid()), QgsCoordinateReferenceSystem(sid), prj)
        p = QgsPoint(x, y)
        p.transform(transform)
        x = p.x()
        y = p.y()
    coord = str(x) + ", " + str(y) + ", " + str(sid)
    print(coord)
    f = open(args.out.replace(".tif", "_cs.txt"), 'w')
    f.write(coord)
    f.close()
# 初始化
@@ -107,8 +143,8 @@
    print("FileName: " + prj.fileName())
    load_layers(prj, args)
    merge(args)
    merge(prj, args)
    get_coord(prj, args)
    qgs.exitQgis()