下面是使用arcpy实现上述功能的示例代码:

import arcpy
from arcpy.sa import *

# 设置工作环境
arcpy.env.workspace = "C:/data"
arcpy.env.overwriteOutput = True

# 获取目录下的所有tif文件
tif_list = arcpy.ListRasters("*", "TIF")

# 指定参考tif路径
reference_tif = "C:/data/reference.tif"

# 裁剪tif
for tif_file in tif_list:
    # 构建输出shp文件路径
    shp_file = arcpy.Describe(tif_file).basename.replace(".tif", ".shp")
    # 执行裁剪操作
    arcpy.Clip_management(tif_file, "#", shp_file, "#", "#", "ClippingGeometry", "NO_MAINTAIN_EXTENT")

    # 获取参考tif的坐标系和空间范围
    reference_sr = arcpy.Describe(reference_tif).spatialReference
    reference_extent = arcpy.Describe(reference_tif).extent

    # 投影tif到参考坐标系
    projected_tif = tif_file.replace(".tif", "_projected.tif")
    arcpy.ProjectRaster_management(tif_file, projected_tif, reference_sr)

    # 调整投影后的tif空间范围和分辨率
    resampled_tif = tif_file.replace(".tif", "_resampled.tif")
    arcpy.Resample_management(projected_tif, resampled_tif, reference_extent, "BILINEAR")

    # 删除中间结果
    arcpy.Delete_management(projected_tif)

    print(f"处理完成:{resampled_tif}")

使用这段代码,你只需要将目录路径和参考tif路径修改为实际的路径,然后运行代码即可实现裁剪、投影和重采样的功能。

使用arcpy实现首先将目录下的tif使用同名称的shp裁剪然后将该tif投影到参考tif相同的坐标系并使其空间范围与参考栅格相同重采样到参考tif的分辨率使之格网一一对应

原文地址: https://www.cveoy.top/t/topic/i9jx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录