在定义函数运行后,出现报错KeyError: 'nrows'
import math
f = open('曹坪.asc','r',encoding='utf-8')
lines = f.readlines()
#创建空列表
a = []
#给列表切片
f.close()
def aspect1(y):
dem={}
for i in range(6):
a,b=lines[i].split()
dem[a]=float(b)
#slope = [[dem['NODATA_value'] for i in range(int(dem['ncols']))] for i in range(int(dem['nrows']))]
aspect = [[dem['NODATA_value'] for i in range(int(dem['ncols']))] for i in range(int(dem['nrows']))]
x=[]
for i in range(6,int(dem['nrows'])+6):
a=lines[i].split()
x1=[]
for j in a:
x1.append(float(j))
x.append(x1)
for i in range(1,int(dem['nrows'])-1):
for j in range(1,int(dem['ncols'])-1):
flag1=[0]*9
flag1[0]=1 if abs(x[i][j]-dem['NODATA_value']) < 1 else 0
flag1[1]=1 if abs(x[i][j-1]-dem['NODATA_value'])<1 else 0
flag1[2]=1 if abs(x[i][j+1]-dem['NODATA_value'])<1 else 0
flag1[3]=1 if abs(x[i-1][j]-dem['NODATA_value'])<1 else 0
flag1[4]=1 if abs(x[i-1][j-1]-dem['NODATA_value'])<1 else 0
flag1[5]=1 if abs(x[i-1][j+1]-dem['NODATA_value'])<1 else 0
flag1[6]=1 if abs(x[i+1][j]-dem['NODATA_value'])<1 else 0
flag1[7]=1 if abs(x[i+1][j-1]-dem['NODATA_value'])<1 else 0
flag1[8]=1 if abs(x[i+1][j+1]-dem['NODATA_value'])<1 else 0
if sum(flag1)<1 :
we=((x[i-1][j-1]+2*x[i][j-1]+x[i+1][j-1])-\
(x[i-1][j+1]+2*x[i][j+1]+x[i+1][j+1]))/\
8/dem['cellsize']
sn=((x[i+1][j+1]+2*x[i+1][j]+x[i+1][j-1])-\
(x[i-1][j-1]+2*x[i-1][j]+x[i-1][j+1]))/\
8/dem['cellsize']
if abs(we)>0.001: aspect[i][j]=sn/we
else : aspect[i][j]=sn/0.001
return aspect
aspect1(a)
报错:KeyError: 'nrows'
本人为代码初学者,主要问题是看不懂这个报错……希望可以解释一下该报错出现原因以及解决方案!谢谢
最终目标:该函数能顺利运行。