批处理获取文件夹内所有影像文件的栅格统计数据

  近日,师兄忙毕业论文,需要获取影像文件的栅格统计信息进行植被损失评估的时间序列分析。如果只是查看单个栅格的统计信息,很简单,在ArcMap中Table Of Contents窗口右键单击栅格数据集,点击Properties,在跳出的Properties窗口中选择Source选项卡,然后滚动到Statistics部分,即可获得(见下图)。

  但是,问题是处理的数据量很庞大:430多幅图,分辨率1公里,数据范围覆盖整个广东省。曾经尝试过ToolBox里面的Batch模式,发现对通配符的使用不是很懂。想着正好用Python练练手,这时候就用上了ArcGIS强大的脚本工具——Python。

  代码如下:

1 # -*- coding: cp936 -*-
2  import os,arcgisscripting,sys,string
3
4 imagedir="D:\\Temp\\rsies"## 设置工作空间(就是影像文件的目录所在)
5  txtpath="D:\\Temp\\rsies\\result.txt"## 设置输出txt文件的路径
6  suffix=".img"## 设置 影像文件的后缀名,用了筛选其他附属文件
7  
8 gp = arcgisscripting.create()
9 gp.workspace = imagedir
10 out=open(txtpath,'w')
11
12 properties=["MINIMUM","MAXIMUM","MEAN","STD","UNIQUEVALUECOUNT","TOP","LEFT","RIGHT",\
13 "BOTTOM","CELLSIZEX","CELLSIZEY","VALUETYPE","COLUMNCOUNT","ROWCOUNT","BANDCOUNT"]
14 for property in properties:
15 out.write(property+",")
16 filenames=os.listdir(imagedir)
17 for name in filenames:
18 index=name.rfind(".")
19 if(index!=-1):
20 extension=name[index:]
21 if extension == suffix:
22 gp.CalculateStatistics_management(name,"1","1","0")
23 # Process: GetRasterProperties
24 print""
25 print"-------------------",name,"--------------------"
26 out.write('\n')
27 for property in properties:
28 try:
29 ztemp=gp.GetRasterProperties (name, property)
30 print"%20.16s"% property,":%20.3f"%ztemp
31 out.write(str(ztemp)+",")
32 except:
33 # Print error message if an error occurs
34 out.write("-1.000,")
35 print gp.GetMessages()
36 out.close()

  在Python内嵌的集成开发环境IDLE中输入这些代码,设置好初始参数后,按F5,就开始计算指定文件夹内所有影像文件的统计数据,程序不仅仅在输出端输出各个栅格数据集的统计信息(见下图),同时也将相关信息输出到指定路径的txt文件,这样就方便用excel等相关软件做后续的处理。

posted on 2011-05-29 16:34  Jazzy.L  阅读(654)  评论(0)    收藏  举报