Python遥感图像处理基础篇(一):arcpy遥感图像波段组合批量处理

合并MOD13Q1一年23期NDVI或者EVI指数数据为一个tif文件。

可以同时进行N个年份数据的批处理合并。

示例数据如下:包含两年的MOD13Q1  NDVI数据

Python遥感图像处理基础篇(一):arcpy遥感图像波段组合批量处理_第1张图片

代码:

# -*- coding: utf-8 -*-
import os,arcpy,datetime

#读取和存放文件夹的位置
layerspath = r'H:\python_RS'#波段存放文件夹
path =r'H:\LayerStack'#输出结果存放文件夹

# start calculate time
startTime = datetime.datetime.now()
print startTime

# set the intermediate data folder
intermediateDataPath = path+"\\"+"IntermediateData"
# set result data folder
resultDataPath = path+"\\"+"Result"

# determine if the folder exists
if os.path.exists(intermediateDataPath):
    print "IntermediateData floder exists"
else:
    # create a intermediate data floder
    arcpy.CreateFolder_management(path,"IntermediateData")
    
if os.path.exists(resultDataPath):
    print("Result floder exists")
else:   
    # create a result floder
    arcpy.CreateFolder_management(path, "Result")
print("-----------------------------------------------------------")
print("Under calculation......")
print("Please do not close the window.")

#这段为数据处理代码
# function:按顺序拼接字符串,作为波段组合函数的的参数
def getInputParam(files):
    ret = ""
    rets = []
    layers_num=len(files)

    i=1
    for file in files:  # 拼接其他的
           print file
           ret = ret + file + ";" 
           if i%23==0:
              ret = ret[:-1] #去除最后的;
              rets.append(ret)
              ret = ""
           i+=1
    return rets

arcpy.env.workspace = layerspath  #被裁剪栅格影像所在文件夹
print layerspath+"路劲下包含以下数据:"

arcpy.env.overwriteOutput = True
files = os.listdir(layerspath)
print "-----------------------------------------"
input_param = getInputParam(files)
print "-----------------------------------------"
print input_param
for param in input_param:
    print "开始波段组合运算!"
    print "-----------------------------------------"
    resultfileName=param[:37]
    arcpy.CompositeBands_management(param,resultfileName+"_StackLayers.tif")
    print resultfileName+"计算完成!"

print "Finish!"
endTime = datetime.datetime.now()
print "Time use: " + str((endTime - startTime).seconds)+ " (second)"
print "-----------------------------------------------------------"

运行效果:

Python遥感图像处理基础篇(一):arcpy遥感图像波段组合批量处理_第2张图片

Python遥感图像处理基础篇(一):arcpy遥感图像波段组合批量处理_第3张图片

你可能感兴趣的:(#,Python遥感图像处理,波段组合批处理)