anygy 2022-10-21 18:01 采纳率: 100%
浏览 17
已结题

在定义函数运行后,出现报错KeyError: 'nrows'

在定义函数运行后,出现报错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'

本人为代码初学者,主要问题是看不懂这个报错……希望可以解释一下该报错出现原因以及解决方案!谢谢

最终目标:该函数能顺利运行。

  • 写回答

1条回答 默认 最新

  • honestman_ 2022-10-21 18:06
    关注

    曹坪.asc文件中没有nrows

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 创建了问题 10月21日