24小时热门版块排行榜    

查看: 463  |  回复: 2

kainan001

铁杆木虫 (正式写手)

[求助] 关于python for Arcgis的循环问题

大致说明:我要对某个栅格文件.tif,开一个n*n的窗口,从栅格第一个像元开始算它周围(包括本身)的均值。以下是我写的代码(这里n=1,即开一个3*3的窗口):
>>> import arcpy
... import math
... import numpy as np
... alocation='a'
... aRaster=arcpy.Raster(alocation)
... a_array=arcpy.RasterToNumPyArray(aRaster,'#','#','#',9999)
... n=1            #'用户输入窗口大小,size',这里Num=2n+1,即窗口为3*3
... rows=a_array.shape[0]
... cols=a_array.shape[1]
... amean_array=np.zeros((rows,cols))
... for i in range(1,rows-1):   #从第1行到倒数第2行
...     for j in range(1,cols-1):   
...         for x in range(i-n,i+n):     #3*3的窗口,则左右扩1,5*5则扩2,依次类推
...             for y in range(j-n,j+n):
...                 a_array[x,y]+=pow(2*n+1,2)   #这里是个步数的迭代,例如3*3的窗口那么a_array[x,y]要迭代累加9次
...                 mean=a_array[x,y]/pow(2*n+1,2)   #算出来的累加值并除以窗口个数,即均值
...         amean_array[i,j]=mean
... mean_raster=arcpy.NumPyArrayToRaster(amean_array)
... mean_raster.save('D:/amean.tif')

这个可以运行,但是出来的结果不对,我的tif文件a_array列表几乎每个value都在30左右,但是最后算出来的3*3窗口的均值为4左右,这个结果肯定有问题。
请大家帮我看看代码哪有问题呢?
回复此楼
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

kainan001

铁杆木虫 (正式写手)

2楼2016-06-21 07:35:21
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

kainan001

铁杆木虫 (正式写手)

3楼2016-06-21 07:35:37
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 kainan001 的主题更新
信息提示
请填处理意见