自从10月末、11月初写了一个有关计算SEVI的小软件,优化、便利化、实时出结果的想法,就一直回旋在脑海。
 我是这么构思的,下面分优化、心理历程的几个阶段进行阐述:
第一个阶段、初探(10月第四周)
1 思路
f值的窗口如何选?起初我是暂定以坡度最大值格点为中心格点,以20格20格为初始窗口,也就是600m600m为初始窗口,这样应该可以同时触及到阴阳坡,如果初始窗口过小的话,可能就仅单单会涉及到阴坡或者阳坡。向外以步长为5格,60格为最大扩展半径。开始向外成上下、左右同时扩展
2 实施
具体形成代码如下:
# 注: 已完成了阴阳坡剖分图
[max_hang,max_lie] = np.where(slope == np.max(slope))
max_hang = xi
max_lie = yi
width_pre = 10
height_pre = 10
for add in range(0,61,5):
width = width_pre+add
height = height_pre+add
sum_area = 2*width*2*height
# -------窗口参数如下--------
win_up = max_hang-height
win_bottom = max_hang+height
win_left = max_lie-width
win_right = max_lie+width
windows = aspect_10[int(win_up):int(win_bottom),int(win_left ):int(win_right)]
sum_windows1 = np.sum(windows == 1)
ind1 = sum_windows1/windows # 当ind1等于50%时,确认为当前最优窗口
为什么设置指标-ind1?之前有做过验证,纯阳坡、纯阴坡、阴阳坡混合,第三种用来计算最好。这是因为,根据SEVI的“相关系数法”的计算算法,里面的皮尔逊相关系数涉及到了求累积和、累乘和。与SEVI求共线性相关性的RVI、SVI一个是为阳坡“声张”的量,一个是为阴坡“声张”的量。所以,当阴阳坡面积足够大,且被声张的力量相等时,f值的计算结果才最有意义。
通过使指标1-ind1等于50%,也就是阴阳坡像元数相等,面积相等时,被当做最佳窗口,进行计算。
3 弊端
(1)未涉及到非矩形不规则边界的问题,如果遥感影像为非矩形,窗口很可能就会扩展到背景值。
(2)窗口扩展方式很单调,有可能涉及扩不到最佳窗口的问题。假设步长为s,最大长度M,从0步长开始扩展,那么这种扩展方式一共会运算(M/s)次。
第二个阶段、改进(11月第二周及第三周前三天)
1 问题及解决方案
知识往往都是一个循序渐进的过程,当我11月第二周刚开始感觉渐入佳境的时候,有很多实际的问题,其实都给予我了迎头痛击。
根据第一个阶段所存在的问题,以及老师所给出的建议。想出了构建第二个指标—ind2,这个指标也是为了判断窗口的可用性,就是是否涉及到了背景值的问题。具体实现代码如下:
# 注: 表观反射率不会存在负值,以及很小可能出现0值。满足这些值就是背景值。
# 用Arcgis剪裁背景值可能会出现-38e+38这个数,是小于-5的
rs_windows = rs[int(win_up):int(win_bottom),int(win_left ):int(win_right)]
index1 = np.where(rs_windows < 5)[0] # 小坑,np.where返回的是一个tuple,等于2
index2 = np.where(rs_windows == 0)[0]
ind2 = index1 + index2
2 扩展方式
左右宽度扩一次,上下高度扩12次,以此循环。假设步长为s,最大长度M,从0步长开