代码分享 Python | 批量计算栅格影像最大值,最小值,总和,均值等

 01


任务举例:文件夹内有12个月遥感影像求年最大值,累加值等(生成的是一幅栅格影像)

数据准备:文件夹(工作空间)-含有需要批量处理的tif影像

工具准备:Python arcpy 环境
操作:替换代码中的路径即可

# -*- coding: UTF-8 -*-
import arcpy
from arcpy import env
from arcpy.sa import *
​
# Set environment settings
env.workspace = "E:/NPPresult/"#输入工作空间中
# Set local variables
rasters = arcpy.ListRasters("*", "tif") #遍历工作空间中的tif格式数据
​
​
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
​
outCellStatistics = CellStatistics(rasters, "MEAN", "DATA")#"SUM"总和; STD标准差; MINIMUM最小值; MAXIMUM最大值;
outCellStatistics.save("E:/RHME.tif")
print("All project is OK!")

 02


任务举例:文件夹内有12个月研究区域植被覆盖度,地表温度等影像,求该区域12个月每月的植被覆盖度(地表温度)平均值,最大值,最小值等(一幅影像生成一个值)

数据准备:文件夹(工作空间)-含有需要批量处理的tif影像

工具准备:Python arcpy 环境
操作:替换代码中的路径即可

# -*- coding: UTF-8 -*-
​import arcpy
import os
import glob
import arcpy
from arcpy.sa import *
​
arcpy.CheckOutExtension("ImageAnalyst")  # 检查许可
arcpy.CheckOutExtension("spatial")
​
inws =  r"E:/05BeijingPark/tem/park/"
​
OutputFile = open('E:/05BeijingPark/tem/park/PA.csv', 'w')#更改要存储结果的路径,自动生成表格
​
# 利用glob包,将inws下的所有tif文件读存放到rasters中
rasters = glob.glob(os.path.join(inws, "*.tif"))
​
whereClause = "VALUE = 0"  # 去除异常值。如果无异常值可删去.
​
# 循环rasters中的所有影像,进行“求平均值”操作
for ras in rasters:
    outSetNull = SetNull(ras, ras, whereClause)  # 去除异常值;如果无异常值可删去
​
    meanValueInfo = arcpy.GetRasterProperties_management(outSetNull, 'MEAN')
    # MINIMUM —输入栅格中所有像元的最小值。
    # MAXIMUM —输入栅格中所有像元的最大值。
    # MEAN —输入栅格中所有像元的平均值。
    # STD —输入栅格中所有像元的标准差。
    # TOP —范围的顶部值或Y最大值(YMax)。
    # LEFT —范围的左侧值或X最小值(XMin)。
    # RIGHT —范围的右侧值或X最大值(XMax)。
    meanValue = meanValueInfo.getOutput(0)
    print os.path.basename(ras).split('_')[0] + ',' + str(meanValue) + '\n'
    OutputFile.write(os.path.basename(ras).split('_')[0] + ',' + str(meanValue) + '\n')
​
OutputFile.close()
print("All project is OK!")
​

END

编辑 |南波婉琳

审核 |南波婉琬

更多精彩请关注

代码分享 Python | 批量计算栅格影像最大值,最小值,总和,均值等_第1张图片

你可能感兴趣的:(数据处理,代码,python)