用arcpy批量将逐月的最大NDVI栅格数据合成逐年的NDVI,并且要求栅格以整型储存

可以使用 ArcGIS 中的 Cell Statistics 工具结合 Python 循环来批量合成逐年 NDVI 数据,以整型形式进行储存。下面是代码:


import arcpy
import os

# 设置输入输出路径和文件名
input_folder = r"C:\data\monthly_ndvi"
output_folder = r"C:\data\yearly_ndvi"

# 获取所有输入栅格文件的名称和年份信息
input_files = os.listdir(input_folder)
file_years = set([int(i.split("_")[1]) for i in input_files])

# 创建输出文件夹
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 将每一年的最大 NDVI 栅格合成为一个栅格,并保存为整型 TIFF 文件
for year in file_years:
    # 筛选出当前年份的多个月份 NDVI 文件,用于合并
    month_files = [i for i in input_files if int(i.split("_")[1])==year]

    # 执行 Cell Statistics 工具,将该年的 NDVI 合成为一个栅格
    output_raster = os.path.join(output_folder, "NDVI_{}.tif".format(year))
    arcpy.CheckOutExtension("Spatial")
    max_ndvi = arcpy.sa.CellStatistics(month_files, "MAXIMUM", "DATA")
    max_ndvi_int = arcpy.sa.Int(max_ndvi)  # 转换为整型数据
    max_ndvi_int.save(output_raster)
    del max_ndvi_int, max_ndvi

# 释放 Spatial Analyst 扩展许可
arcpy.CheckInExtension("Spatial")
 

首先,代码会获取输入栅格文件夹中所有文件的名称,并根据文件名获取每个文件对应的年份信息。利用 `set()` 方法将年份去重后获得一个年份数组。

循环年份数组,筛选出当前循环到的年份的多个月份 NDVI 文件,然后使用 Cell Statistics 工具将这些文件合并为一个栅格。

在 Cell Statistics 工具的第三个参数 `ignore_nodata` 默认值为 "DATA" 模式,可以保证输出整型数据时传输为整型数值而不是浮点数(即避免小数舍入误差)。因此,本代码不需要额外设置 `cell_statistics_type` 参数。

最后,释放 Spatial Analyst 扩展许可以确保代码安全运行。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

认真学GIS

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

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

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

打赏作者

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

抵扣说明:

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

余额充值