栅格数据空间分析之三地图代数进阶

在一中简单介绍了一下地图代数的算术运算,二中介绍了一下栅格数据的基本概念。下面就详细的说一下地图代数。包括两方面的内容:地图代数的基本运算、地图代数的函数和类型
1、 地图代数的基本运算:(算术、关系、位、布尔、组合、逻辑、累计、赋值)
算术运算(+、-、*、/ 、Mod):栅格单元相对应进行加减乘除运算,当Mod作用于有理数时,将截断小数位,返回整数。若栅格单元没有数值(Nodata),则相应位置上的返回结果也是NoData。

关系运算(<、>、==、>=、<=):关系运算是根据给定的条件对栅格单元逐个进行比较运算,如果条件为真,则相应的栅格单元返回1,否则返回0,如下:
 

位运算(<<、>>):只能作用单个栅格图层,是对栅格数值的二进制表达,而且只能对整数进行运算,单元格的数字是有理数是,首先截断小数位。

逻辑运算(Diff、In、Over):这些运算术都需要两个输入栅格图层进行比较,一般是以第一个图层作为参考进行比较返回结果。Diff差异运算用于判断两个栅格图层单元的数值是否存在差异,有差异的空间位置上,用第一个输入图层相应位置的值对输出单元赋值,没有差异的单元格赋值为0。In运算术也是对两个输入进行计算,但不是两个栅格图层,通常情况下,第一个输入时一个表达式(通常是一个栅格或一个数据列),第二个输入时一组数字。其基本思想是用预先选出的一组数字和栅格矩阵的数值作比较,和这组数字不一致的单元格赋值为0。Over非零查找运算符用于两个输入栅格矩阵搜索0值单元格,第一个矩阵中所有单元格中的非零值作为输出,当第一个输入矩阵中的单元格的值为0时,用第二个栅格矩阵相应位置的单元格进行赋值。
 

组合运算(And,Or):就是根据一定的运算规则,进行输出。该运算是对所有可能的组合的预先规定,可以将组合运算看成是布尔运算的一般化,在组合运算中若输入值被计算为真(0),则输入单元格被赋以预先规定的两个单元格组合情况下的值,如下的And运算。

矩阵1 矩阵2
输出
1 1 0
2 1 1
3 3 7


 

2、 地图代数中的函数和类型
地图代数中的函数为栅格数据集提供了基本的数据变换功能、统计描述和推断功能、查询功能、接近性度量功能(缓冲区)、叠加分析功能、比较分析功能、预测功能、以及扩展计算等各个方面。
主要的函数有:
1) 局部函数(包括数学函数,分类函数,选择函数,统计函数),局部函数是基于单元格操作运算的计算函数,不考虑邻域单元;
2) 焦函数或邻域函数,根据近邻的栅格单元计算输出值的函数,可用于表面光滑(滑动平均)、边缘检测、评价变化等;
3) 块函数,又称面函数,可以看成是邻域函数的另外一个版本,对相连的单元格构成的“块”整体重新赋以相同的值。
4) 类区函数,是对类型区进行操作的函数。类区是空间上连续或分割的实际的地理类型区域,类型区中的属性具有一致性,类区函数使用的是另外的栅格图层来对目标单元格的值进行重新计算或分类。
5) 全局函数,全局函数式对输入的整个栅格图层数据进行操作的函数,与这些函数相关的是距离计算、几何特征分析、最短路径计算。
6) 应用函数,应用是复杂的,需要和局部、邻域、类区、和全局函数相结合,得到最终的应用函数。
2.1局部函数
局部函数主要可以归纳为以下四种类型:
1) 数学函数:三角函数(sin,cos,tan,cost等),指数函数(exp等),对数函数(log等),幂函数(sprt、power等),以及数值处理函数(abs、rand、ceil、float等);
2) 分类函数:reclass;
3) 选择函数:选择(select,select circle),条件(con,test,pick);
4) 统计函数:(min,max,mean,majority等);
2.2邻域函数
邻域函数是通过对栅格数据集中焦元(focal cell)附近的单元格的数值按照某种规则计算后,将得到的数值赋给焦元的运算。因此邻域函数的概念有两个:一是如何定义邻域;二是按照何种规则对邻域中的单元格数值进行计算。
邻域包括以下几种类型:距离或方向邻域;靠近或延伸的邻域;度量和拓扑邻域;点、线或面的邻域。在实际应用中,通常采用的邻域形状有矩形、圆形、环形面、扇形。确定了邻域形状之后,就是焦元数值的计算,一般都是统计函数如最大值、最小值、和、范围、标准差等。
2.3类区函数
类区函数非常类似于邻域函数,区别是类区是栅格总所有具有相同值得单元格而不考虑它们在空间是否相邻。
2.4块函数
块函数是一种滑动窗口的操作函数,可以进行栅格单元的空间滤波,主要用于遥感影像的某些计算处理过程,它使用的统计量域邻域函数相同,如min,max,mean等。不同的是块函数使用的邻域是矩形窗口,并且在空间上的滑动过程不是逐个单元格进行的,而是按照矩形窗口的大小,先从左向右,然后从上到下进行滑动,根据统计量对窗口所覆盖的单元格进行计算后赋值给这些单元格。
2.5全局函数
全局函数作用下的单元格的输出是栅格数据集的函数,不是基于某个单元格或一组单元格进行统计计算。主要包括距离函数,表面函数。
2.5.1距离函数

直线距离函数:直线距离函数用于计算一个源栅格单元或一组栅格单元到其最邻近的栅格之间的距离和方向。此外还能根据这种距离上的最接近性分配空间上的栅格单元到相应的源栅格上。下面是ArcGIS 直线距离的图解:

 

加权距离函数:加权距离函数计算的是从任意一个单元格到源的最小费用距离。需要两个图层:一个是栅格图层,另外一个是用来描述成本或阻力因素的图层。为了计算用加权距离计算一条最短路径,还需要一个描述方向的函数,两者结合起来即可描述费用距离意义上的最短路径。下面是ArcGIS 直线距离的图解:

 
2.5.1表面函数:包括空间插值函数、坡度、坡向、光照函数
空间插值、坡度、坡向较为常见,这里不再介绍,详细的说一下光照函数。光照函数(hill shading)又称为山体阴影,是一种计算地形或建筑物表面太阳光照射量的方法。
光照函数根据假定的光源位置,考虑单元格之间的遮挡影响,计算栅格数据集中人一个单元格的光照值。其中表达从灰暗到明亮的光照数值的范围是0~255.
光照函数建模需要太阳方位(azimuth)和高度角(altitude)两个参数,太阳方位从北开始顺时针旋转,变化范围0度~360度,太阳高度角是光源对于地平的角度,变化范围0度~90度。

转载自:https://blog.csdn.net/sprintwater/article/details/9209197

You may also like...