使用shp数据批量裁剪栅格数据并统计均值

批量实现利用shp文件,裁剪相应的多个栅格数据,并统计裁剪后栅格的均值至TXT文件,亲测可用。
#使用shp数据批量裁剪栅格数据并统计均值

# -*- coding: cp936 -*-
#使用shp数据批量裁剪栅格数据并统计均值
print"使用shp数据批量裁剪栅格数据并统计结果均值"
#修改部分
ras_file = r"D:\实验室\数据\气象数据\降雨数据_插值_60_17\pcp"    #栅格数据位置
ras_file_cut = r"D:\实验室\数据\气象数据\降雨数据_插值_60_17\sx_yr"  #栅格数据裁剪结果存储位置
suffix = 'tif'    #栅格数据后缀
bvalue= '-9999'	#栅格数据背景值
#下面两个选择注释一个,用 # 注释 
clpgeo = 'ClippingGeometry'   #裁剪出来的是要素形状   选择注释1
# clpgeo = 'NONE'     #裁剪出来的是要素的外接矩形形状   选择注释2

shp_file = r"D:\实验室\数据\边界\长江流域-陕西\yr_sx.shp"#裁剪模板shp数据
# ras_extent="D:\实验室\数据\水循环数据提取\数据\data\lucc_1km\landcover_1988_tempslid.tif"

txtname=r"D:\实验室\数据\气象数据\降雨数据_插值_60_17\sx_yr\MEAN_cuo.txt"     #输出统计文本路径及名称

#计算部分  无须修改
import arcpy
import os

# arcpy.env.snapRaster =ras_extent
# arcpy.env.extent =ras_extent
if not os.path.exists(ras_file_cut):
    os.mkdir(ras_file_cut)

arcpy.env.workspace=ras_file
# arcpy.env.extent = ras_extent
ras=arcpy.ListRasters('*',suffix)
print "共有"+'%d'%len(ras)+"个栅格数据"
#
print "Processing......"
result=[]
for rs in ras:
    outname=ras_file_cut+"\\"+str(rs[0:len(rs)-4])+".tif"    #####
    #arcpy.Clip_management(rs,"#",outname,shp_file,str(bvalue),"ClippingGeometry")   #ClippingGeometry   NONE
    arcpy.Clip_management(rs,"#",outname,shp_file,bvalue,clpgeo)
    stats = arcpy.GetRasterProperties_management(outname,"MEAN")
    result.append(str(stats)+"\n")
    #arcpy.Delete_management(outname,"")
    print str(rs)+"   OK!"

file(txtname,'w').writelines(result)
print "Finish!"

你可能感兴趣的:(地理,python,矢量数据,栅格数据,ArcGIS)