Python+ArcPy 基于掩膜文件批量提取栅格影像

在对遥感影像进行处理分析时,往往需要对栅格影像进行感兴趣区域提取。可以采用ArcGIS Spatial Analyst中的Extract by Mask操作,也可以结合Python和ArcPy批量提取栅格数据。

使用同一个掩膜数据文件对多个栅格影像数据进行批量提取操作的代码如下:

# coding=utf-8
import os
import arcpy
from arcpy import env
from arcpy.sa import *


## 使用掩膜数据对栅格数据进行批量裁剪
def mask_clip(raster_path, mask, out_path):
    n = 0
    rasters = os.listdir(raster_path)         ## 遍历栅格文件,获得所有栅格数据的文件名
    for raster in rasters:
        raster_name = raster.split('.')[0]       ## 文件名去掉后缀
        raster_type = raster.split('.')[-1]      ## 文件名后缀,用于类型筛选,只要tif文件
        if raster_type == 'tif':
            in_raster = os.path.join(raster_path, raster)    ## 获取待裁剪的tif文件的路径(raster只是文件名,读取的时候需要加上路径)
            arcpy.CheckExtension("Spatial")
            out_extract_mask = ExtractByMask(in_raster, mask)     ## 执行裁剪操作,结果为out_extract_mask
            out_raster = os.path.join(out_path, raster_name+'_new.tif')    ## 输出文件路径,raster_name+'_new.tif'为文件名
            out_extract_mask.save(out_raster)    ## 将out_extract_mask保存为out_raster(路径+文件名)
            n = n + 1


if __name__ == '__main__':
    raster_path = './rasters'       # 原始栅格文件的文件夹路径
    mask_file = './masks.shp'       # 栅格或矢量的掩膜文件路径
    out_path = './out_data'         # 裁剪后的文件保存路径
    mask_clip(raster_path, mask_file, out_path)

同理,可以使用多个掩膜文件提取同一幅栅格数据(循环遍历掩膜文件),也可以使用多个掩膜文件分别对每幅栅格影像进行提取(双层循环)。

一般来说,ArcGIS工具包中的操作都可以在ArcPy中实现批处理,高效快速!

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小李AI飞刀^_^

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

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

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

打赏作者

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

抵扣说明:

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

余额充值