4.1 栅格运算的几种模式
4.1.1 局域运算与栅格叠加
局域运算是针对一个或同一位置(局域)的多个像元进行的运算分析。输出的栅格像元的值,是一个或同一位置的多个输入像元的函数。
根据输入栅格数量的不同,局域运算可以分为单一栅格的局域运算和多个栅格的局域运算。单一栅格的运算是一种最简单的局域运算模式。它针对单个栅格数据中的各个像元逐一进行函数运算,从而产生一个新的栅格数据。多个栅格的局域运算相当于基于栅格的地图叠加操作,输出栅格是多个输入栅格的函数。
4.1.1.1 栅格运算方法
1.算术运算:主要是指加、减、乘、除等运算。单一栅格的算术运算,主要是对栅格中的各个像元加、减、乘、除某一常量;多个栅格的算术运算,主要是对同一位置的多个像元进行加、减、乘、除运算。
2.关系运算:它以一定的数学关系为基础,将符合条件的像元赋值为1,不符合的赋值为0。这些运算符包括大于>、小于<、等于=、大于等于>=、小于等于<=、不等于<>。
3.布尔运算:也称二值运算、逻辑运算。它通过逻辑运算判断一个或多个栅格图层中对应栅格值的逻辑关系来确定输出结果。若判断为真,则输出为1;否则,输出为0。
(1)逻辑与(And,&):对两个或两个以上栅格中的对应像元,若值均不为0,则输出为1,否则输出为0。
(2)逻辑或(Or,|):对两个或两个以上栅格中的对应像元,只要有一个或一个以上像元的值不为0,则输出为1,否则输出为0。
(3)逻辑异或(XOr,^):对两个或两个以上栅格中的对应像元,若值的逻辑真假互不相同(即0与非0值都有),则输出为1,否则输出为0。
(4)逻辑非(Not,~):对某一栅格的像元,若值为0,则输出为1,否则输出为0。
4.函数运算
(1)算术函数:包括绝对值Abs( )、求反Negate()等两个符号函数,以及整数函数Int( )、浮点函数Float( )、向下取整函数RoundDown( )、向上取整函数RoundUp( )等类型转换函数。
(2)三角函数:包括正弦函数Sin( )、余弦函数Cos( )、正切函数Tan( )、反正弦函数ASin( )、反余弦函数ACos( )、反正切函数ATan( )等。在使用三角函数时,往往需要将栅格数据的角度值(如坡度角)乘以系数0.01745(2π/360),转换为以弧度为单位的栅格数据。
(3)对数函数与指数函数:包括Ln( )、Log10( )、Log2( )、Exp( )、Exp10( )、Exp2( ) 等6种分别以自然数e、10、2为底的对数和指数函数。
(4)幂函数:包括平方Square( )、平方根SquareRoot( )、及幂函数Power( )等3种。
(5)统计函数:1)Maximum( ):最大值;2)Minimum( ):最小值;3)Range( ):像元值的数值范围,即最大值与最小值之差,也称值域;4)Sum( ):总和;5)Mean( ):平均值;6)Standard Deviation( ):标准差;7)Majority( ):像元值中出现次数最多的数值,即众数;8)Minority( ):像元值中出现次数最少的数值,即寡数;9)Median( ):中值;10)Variety( ):像元值中不同数值的种类数,反映数据的变异程度。
对于不同数据类型的栅格,可以使用的统计函数有所不同。整数类型的栅格数据可以进行以上所有类型的统计分析,但对于浮点类型的栅格数据,则不能进行众数、寡数、中值、种类数的统计。
(6)其他函数:转换函数Con( )、空值设置函数SetNull( )、提取函数Pick( )等条件函数,以及空值判断函数IsNull( )等。此外,软件自身的一些空间分析工具,如计算坡度的Slope( )、计算坡向的Aspect( )等,也可以作为函数在栅格运算中直接调用。
5.组合运算(Combine):把输入的两个或者多个整型栅格中像元属性值的每种组合输出为一个唯一的值。
4.1.1.2 重分类
重分类(Reclassify)对栅格数据的像元值重新进行分类整理和安排,输出具有新值的栅格数据,其实质是一种条件转换。
ArcGIS的Reclassify工具:ArcToolbox>SpatialAnalyst Tools> Reclass>Reclassify
1.新值替代:基于新的信息,用新值代替原有的栅格值。这种转换往往是一对一的关系。
2.分组替代:将原有的值按一定的分类规则进行重新分组,用新值替换该组内所有的原值。
3.空值替代:将特定的值设为空值或将空值设为某一个值。
4.1.1.3 像元统计
像元统计(Cell Statistics)是基于栅格局域运算、针对数值型栅格数据进行统计的一种方法,其实质与前述局域运算中的统计函数类似。输出栅格像元的值是多个栅格图层中同一位置的多个栅格像元的统计值。这些统计值包括最大值、最小值、范围、总和、平均值、标准差、众数、寡数、中值、种类数等。
在ArcGIS中的像元统计工具:Cell Statistics(ArcToolbox>SpatialAnalyst Tools>Local> CellStatistics。
4.1.1.4 地图代数与栅格计算器
地图代数(MapAlgebra)是指对两个或两个以上栅格图层按代数的方式进行的局域运算,它往往是栅格地图叠加运算的代名词。事实上,广义的地图代数也应当包括单一栅格的局域运算。
ArcGIS中执行地图代数的工具:栅格计算器Raster Calculator(ArcToolbox> SpatialAnalyst Tools>Map Algebra> Raster Calculator)。
4.1.2 邻域运算
4.1.2.1 邻域与邻域运算
邻域是按照一定规则(距离、方向等)确定的、与目标像元在空间上相邻的若干像元组成的区域。目标像元也称待计算像元或焦点像元,空间常指二维空间。
栅格运算中邻域的形状可以有多种。最常见的是以目标像元为中心,以一定像元数量作为长宽的矩形邻域。此外,还有圆形、环形、扇形邻域。
定义邻域大小的单位可以采用像元,也可以采用实际的距离单位。
邻域运算是以设定的邻域范围内的若干像元(往往包括目标像元本身)为对象的运算,运算结果将在输出栅格中赋予目标像元所在位置的像元。
一般而言,邻域运算往往不是针对输入栅格中的单个或几个像元,而是对输入栅格中的所有像元采用相同的邻域运算方式。也就是说,邻域运算会遍历输入栅格的所有像元。
邻域的大小对运算时间有直接影响,合理设置邻域大小尤为重要。
通过邻域运算,可以获得像元周边的地理信息。它可以用于模拟森林火灾的蔓延、工厂污染物的扩散等相关分析之中,也可用于栅格数据的简化(如对数据进行平滑处理以达到降噪的效果),还可以广泛应用于表面分析之中。
4.1.2.2 邻域统计
邻域统计(FocalStatistics)是邻域运算的一个重要方面,它利用邻域内的像元值来进行统计,并将统计结果赋予目标像元。与像元统计类似,邻域统计值的类型也包括最大值、最小值、范围、总和、平均值、标准差、众数、寡数、中值、种类数等。
通过邻域统计,可以获得邻域范围内地理要素的不同类型的统计特征,为开展地理分析提供参考信息。
ArcGIS中用于邻域统计的Focal Statistics工具:ArcToolbox>SpatialAnalyst Tools>Neighborhood> FocalStatistics。
4.1.2.3 滤波分析
滤波分析(FilterAnalysis)是一种基于邻域运算的窗口分析方法,它是数字图像处理中一种常用的方法,可以实现不同目的的图像处理。
窗口往往是一个一定长宽的矩形区域,窗口中各个像元的值可以构成一个加权系数矩阵。窗口也常被称为滤波器、掩膜、模板或核。
根据分析目的的不同,滤波分析主要有高通滤波(High Pass)和低通滤波(Low Pass)两种基本类型。高通滤波具有突出边缘的功能,而低通滤波正好相反,具有减弱像元间显著变化,实现数据平滑的功能。滤波分析在原始栅格上来回移动一个窗口(常用3*3的网格),窗口中心的像元值(目标像元值)通过滤波算子与窗口中对应各像元的值加权求和而得到。
低通滤波是一个平均型滤波,窗口中的9个像元等量加权,相当于邻域统计中的平均值。由于低通滤波算子的权重总和为1,因此可以确保数据平滑后各像元值的总和保持不变。
高通滤波是一个边缘增强型滤波,它将去掉数据中的低频变量并使不同区域之间的边界突显出来。由于高通滤波算子的权重总和为0,因此边缘增强后栅格数据中各像元值的总和为0。
ArcGIS中用于滤波分析的Filter工具:ArcToolbox>SpatialAnalyst Tools>Neighborhood> Filter。
4.1.3 分区运算
分区运算是指在对区域进行类型划分的基础上,在每个类型区内对某一属性(分区栅格的或其他栅格的)进行的栅格运算,运算结果赋予输出栅格或输出为表格。
类型区可以是具有某一特定值的单块独立区域,也可以是具有相同值的多个不连续区域。只要是数据中某项属性具有相同值的区域,无论其是否相邻,都可以归为同一个类型区。
在分区运算中,使用矢量数据作为分区数据的效率不如使用栅格数据的高。
由于分区运算目的的不同,使得运算所针对的属性可能在分区数据之中,也可能来自另一栅格数据,因此有的分区运算只有一个输入数据,有的则需要有两个输入数据。
分区运算的输出结果可以是栅格数据,也可以是表格数据。若是栅格数据,则同一类型区内的所有像元将被赋予相同的运算值(分区质心例外)。
4.1.3.1 分区统计
分区统计是以一个数据层中的各个类型区为基础,对另一个数据层中同一类型区内的像元进行的数值统计。
与像元统计、邻域统计类似,分区统计的统计类型也包括最大值、最小值、范围、总和、平均值、标准差、众数、寡数、中值、种类数等。
分区统计是一种常用的空间统计方法,它有着广泛的应用。
ArcGIS中的分区统计工具(表):Zonal Statistics as Table:ArcToolbox>SpatialAnalyst Tools> Zonal >Zonal Statistics as Table。
4.1.3.2 分区几何量算
分区几何量算是对分区数据中各类型区的面积、周长、厚度、中心点等几何属性进行的运算,所以输入数据只需要一个分区数据即可。量算结果采用地图单位而不是实际单位,因此,要得到实际的几何属性需要进行单位换算。
1.分区面积量算。
2.分区周长量算。
3.分区厚度量算。
4.分区质心量算。
ArcGIS中用于分区几何量算的工具Zonal Geometry:ArcToolbox>SpatialAnalyst Tools> Zonal>Zonal Geometry。
4.1.3.3 分区填充
分区填充(ZonalFill)是使用权重栅格数据中类型区边界上的像元最小值来填充类型区,需要分区数据以及权重栅格两个输入数据。它首先确定分区数据中各类型区的边界像元,然后计算权重栅格中这些边界像元所在位置的像元最小值,最后用该最小值赋予该类型区内的所有像元。
ArcGIS中用于分区填充的工具是Zonal Fill:ArcToolbox>Spatial Analyst Tools> Zonal>Zonal Fill。
与水文分析中的洼地填充(Fill)有所不同。洼地填充是将流域分水线(流域边界)最低点(即流域出水口)的高程值,赋与流域内部比该值还低的像元上,以达到填洼的目的,从而使每个像元的水都能流出洼地。这个过程类似于木桶装水,即先确定木桶的短板高程,然后将木桶按此高度装水。