import arcpy
"""
基于矢量文件(shp)对tif进行裁剪
2024.01.12, 22:18, YMJ
"""
# 定义shp裁剪tif的函数
def clip_tiff_with_shapefile_mask(tiff_file, shapefile, output_file):
arcpy.env.workspace = "D:\\YRB"
arcpy.env.outputCoordinateSystem = arcpy.Describe(shapefile).spatialReference
arcpy.env.outputMFlag = "Disabled"
arcpy.env.outputZFlag = "Disabled"
arcpy.env.outputCoordinateSystem = arcpy.Describe(shapefile).spatialReference
# arcpy.Clip_management(tiff_file, "#", output_file, shapefile, "0", "ClippingGeometry", "NO_MAINTAIN_EXTENT")
arcpy.Clip_management(tiff_file,"#", output_file, shapefile,"NoData","ClippingGeometry","NO_MAINTAIN_EXTENT")
# 存储大量被用于裁剪的tif文件的路径
dir = "D:\\CMFD\\Month\\1"
# 裁剪的shp文件
shp_file = "D:\\CMFD\\test\\area.shp"
# 遍历路径,将每个tif文件的绝对路径存储到列表中
file_list = []
for root,subroot,files in os.walk(dir):
for file in files:
if file.endswith(".tif"):
file_path = os.path.join(root, file)
file_list.append(file_path)
# print(file_list)
# 遍历存储了tif文件绝对路径的列表
for i in range(len(file_list)):
print(file_list[i])
# 构建输出路径
output_file = "D:\\YRB\\SGCF\\" + file_list[i].split("\\")[4] + "\\" + \
file_list[i].split("\\")[4] + "_" + file_list[i].split("_")[-1]
# 调用函数
clip_tiff_with_shapefile_mask(file_list[i], shp_file, output_file)
利用shp文件批量裁剪tif文件的python代码
最新推荐文章于 2024-10-11 17:02:15 发布