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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用shp数据批量裁剪栅格数据并统计均值相关的知识,希望对你有一定的参考价值。

参考技术A # -*- coding: UTF-8 -*-

#scrip

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

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

###########修改部分###########

ras_file= r"D:\python\nc\GLEAM\Transpiration_TIF_OUT"  #待裁剪的原始栅格数据存储文件夹路径

suffix= 'tif'  #待裁剪的原始栅格数据后缀

bvalue=-999.0  #待裁剪的原始栅格数据背景值

shp_file= r"D:\python\shp"  #裁剪所需shp模板数据存储文件夹路径

ras_file_cut= r"D:\python\nc\GLEAM\Transpiration_YR_SWAT_mask"  #裁剪后栅格数据结果存储文件夹路径

txtname=r"D:\python\nc\GLEAM\Transpiration_YR_SWAT_mask"    #输出统计文本路径

#############################

#计算部分

import fenqutongji_arcpy

fenqutongji_arcpy.env.workspace=shp_file

shps=fenqutongji_arcpy.ListFeatureClasses()

fenqutongji_arcpy.env.workspace=ras_file

ras=fenqutongji_arcpy.ListRasters('*', suffix)

print "共有"+str(len(ras))+"个栅格数据"

#

print "Processing......"

for shin shps:

    shtmp=sh.encode('cp936')

shpfile=shp_file+"\\"+shtmp

print "共有"+str(len(shps))+"个shp数据,正在处理第"+str(shps.index(sh)+1)+"个:"+shtmp

result=[]

for rsin ras:

        rstmp=rs.encode('cp936')

outname=ras_file_cut+"\\"+rstmp[0:len(rstmp)-4]+shtmp[0:len(shtmp)-4]+".tif"

        #arcpy.Clip_management(rstmp,"#",outname,shpfile,"#","ClippingGeometry")

        fenqutongji_arcpy.Clip_management(rstmp, "#", outname, shpfile, str(bvalue), "ClippingGeometry")#忽略无效值

        stats=fenqutongji_arcpy.GetRasterProperties_management(outname, "MEAN")

result.append(rstmp+'  '+str(stats)+"\n")

# try:

        #    arcpy.Delete_management(outname,"")#注释则裁剪的栅格不删除,不注释删掉。

        # except:

        print(outname+'cannot delete')

file(txtname+"\\"+shtmp[0:len(shtmp)-4]+".txt",'w').writelines(result)

print "Finish!"

以上是关于使用shp数据批量裁剪栅格数据并统计均值的主要内容,如果未能解决你的问题,请参考以下文章

Arcgis之矢量数据裁剪

ENVI中如何用已有SHP文件裁剪影像?

arcgis模型构建器使用(二):按要素属性批量裁剪栅格数据

GIS地理处理脚本案例教程——批量栅格分割-批量栅格裁剪-批量栅格掩膜-深度学习样本批量提取

Python中使用面状矢量裁剪栅格影像,并依据Value值更改矢量属性

Arcgis之栅格数据范围导出到矢量文件