我创建了一个函数,它使用4个值计算距离:lat1、lon1、lat2和lat2
def greatcirclem(lat1,lon1,lat2,lon2):
lat1,lon1,lat2,lon2=map(np.deg2rad,[lat1,lon1,lat2,lon2])
dlon=lon2-lon1
sint1=np.sin(lat1)
sint2=np.sin(lat2)
cost1=np.cos(lat1)
cost2=np.cos(lat2)
codln=np.cos(dlon)
aaa=np.arccos(sint1*sint2+cost1*cost2*codln)
ccc=np.rad2deg(aaa)
km_greatcircle=ccc*1.852*60
m_greatcircle=km_greatcircle*100
return m_greatcircle
当我在for
循环中应用此函数时,当lat2、lon2不存在时会发生错误
我的意思是,因为我只是在我的函数中从n行和n+1行中选择值,n+1行将超出零件末尾的范围
当值不存在时,如何退出for
循环
我还将附加for循环代码
for row in range(min(data3.index),max(data3.index)):
data3.loc[row+1,'diff_m'] = greatcirclem(data3.loc[row,'lat'], data3.loc[row,'lon'], data3.loc[row+1,'lat'], data3.loc[row+1,'lon'])
或许有两种解决方案:
1)是否使用默认值编写函数
def greatcirclem(lat1=0,lon1=0,lat2=0,lon2=0):
2)在for循环中加入一个条件(尽管更昂贵):
听起来您正在处理一个数据文件,其中可能缺少一些条目?因此,您可以在某些值中进行篡改,或者在一个远远超出范围的值中进行粘贴,使其表现为错误信号,或者您可以抛出一个异常。。。i、 e.由于数据错误而停止程序执行。一切取决于手头的情况
相关问题 更多 >
编程相关推荐