利用Arcmap批量裁剪栅格数据(tif文件)【使用Arcmap自带的python工具】

利用Arcmap批量裁剪栅格数据(tif文件)【使用Arcmap自带的python工具】

前期准备

准备好需要裁剪的shp文件、tif数据,注意两者的参考坐标系要一样(一般只要在Arcmap里面显示下图这样的就没什么问题了)
在这里插入图片描述

批量裁剪栅格数据Python代码

import sys,os
import glob
import arcpy

tile_dir = "G:/Snow/HDF/2003-2004/result/"
out_dir = "G:/Snow/HDF/2003-2004/clip_tif/" 
folder = os.path.exists(out_dir)
if not folder:
    os.mkdir(out_dir)
tile_list = glob.glob(tile_dir + '*.tif')
mask = "G:/Snow/ahxzqh/ahxzqh.shp"
for tile_n in tile_list:
    myraster = tile_n
    rastername = tile_n.split('\\')[-1]
    outraster = out_dir + rastername
    arcpy.Clip_management(myraster,"#",outraster,mask,"256","ClippingGeometry","NO_MAINTAIN_EXTENT")
    print "subseting... the ndvi file " + myraster

tile_dir是被裁减文件文件夹路径
out_dir是输出路径
mask是shp文件路径

对照直接更换路径即可
注意事项:
在arcpy.Clip_management这行代码是设置参数的,在下图对“裁剪”右击可以查看官方帮助文档
在这里插入图片描述
语法和参数设置:
语法:Clip_management (in_raster, rectangle, out_raster, {in_template_dataset}, {nodata_value}, {clipping_geometry}, {maintain_clipping_extent})
代码里面的“#”代表无参数的含义,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Arcmap运行

点开工具栏中的Python窗口
在这里插入图片描述
直接ctrl+c,ctrl+v复制进去,然后回车→回车,记得是两下回车
在这里插入图片描述
最后等待数据处理好即可。

### 如何在 ArcMap裁剪栅格数据 #### 准备工作 为了能够在 ArcMap 中顺利执行栅格裁剪操作,需先确认已安装并配置好 ArcGIS 软件环境。启动 ArcMap 后加载待处理的栅格文件以及用于定义裁剪范围的要素类(通常是面状要素)。如果要进行批量处理,则建议准备一个包含多个裁剪边界的图层。 #### 单个栅格裁剪流程 对于单个栅格图像的裁剪任务,可以通过【工具箱】中的“Extract by Mask”工具来完成。具体步骤如下: 1. 打开 ArcToolbox 并导航到 `Spatial Analyst Tools` -> `Extraction` -> `Extract by Mask`[^1]; 2. 设置输入栅格为想要裁剪的目标影像; 3. 将作为掩膜使用的矢量边界设置为 Input raster 或者通过浏览选择具体的 shapefile 文件; 4. 配置输出路径及名称; 5. 运行该工具即可得到按指定区域提取后的结果。 ```python import arcpy from arcpy.sa import * arcpy.CheckOutExtension("Spatial") outExtractByMask = ExtractByMask(inRaster="C:/data/myraster", inMaskData="C:/data/mask.shp") outExtractByMask.save("C:/output/cut_raster.tif") ``` 此代码片段展示了如何利用 Python API 实现上述过程自动化。 #### 多个栅格批量裁剪方案 当面对大量栅格文件时,手动逐个应用上述方法显然效率低下。此时可以借助 ArcGIS 的 ModelBuilder 功能构建模型来进行批量作业;也可以编写简单的脚本来循环调用相应的地理处理函数。以下是基于 Python 编写的简单示例程序,它会遍历给定目录下的所有 TIFF 文件,并按照预设好的 mask 对其逐一实施裁剪操作。 ```python import os import arcpy from arcpy.sa import * # 检查扩展许可 arcpy.CheckOutExtension("spatial") workspace = "D:/input" mask_file = "D:/boundary/boundary.shp" for root, dirs, files in os.walk(workspace): for file_name in files: if not file_name.endswith(".tif"): continue full_path = os.path.join(root, file_name) out_extract_by_mask = ExtractByMask(full_path, mask_file) output_folder = r"D:\output" base_name = os.path.splitext(file_name)[0] result_file = f"{base_name}_clipped.tif" final_output = os.path.join(output_folder, result_file) out_extract_by_mask.save(final_output) ``` 这段脚本能够有效地提高工作效率,尤其适用于拥有众多相似结构的数据集的情况之下。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zzq_Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值