# -*- coding: utf-8 -*-
"""
Created on Tue Apr 5 20:18:49 2022
@author: 陨星落云
"""
import os
from osgeo import gdal
def mergeAndClip(img_dir,clip_shp,out_dir):
files = [os.path.join(img_dir,s)for s in sorted(os.listdir(img_dir))]
merged_vrt = os.path.join(img_dir,"merged.vrt")
clip_merged = os.path.join(img_dir,"clip_merged.vrt")
gdal.BuildVRT(merged_vrt,files)
#translate_options = gdal.TranslateOptions(format = 'GTiff',creationOptions = ['TFW=YES', 'COMPRESS=LZW'])
gdal.Warp(clip_merged,merged_vrt,cutlineDSName=clip_shp,cropToCutline=True,dstNodata=-9999)
gdal.Translate(out_dir,clip_merged)
os.remove(merged_vrt)
#os.remove(clip_merged)
if __name__ == '__main__':
img_dir = "D:\\Lake\\2017\\tiles" # 待镶嵌的影像
clip_shp = "D:\\Lake\\2017\\clip.shp" # 裁剪范围
out_dir = "D:\\Lake\\2017\\cliped_img.tif" # 裁剪的影像
mergeAndClip(img_dir,clip_shp,out_dir)
结果: