栅格计算器中用得到$$相关函数
$$NROWS: the number of rows in the analysis window (行数)
$$NCOLS: the number of columns in the analysis window (列数)
$$CELLSIZE: the current cell size specified in the analysis environment (像元大小)
$$WX0: minimum x-map coordinate of the current analysis window (最小的X坐标)
$$WY0: minimum y-map coordinate of the current analysis window (最小的Y坐标)
$$WX1: maximum x-map coordinate of the current analysis window (最大的X坐标)
$$WY1: maximum y-map coordinate of the current analysis window (最大的Y坐标)
$$XMAP: x-map coordinate for the center of the processing cell (X坐标)
$$YMAP: y-map coordinate for the center of the processing cell (Y坐标)
1.栅格计算器中,表达式中的图层名要用[]括起来,运算符前后都要加空格,不然会出错。
2.Con命令
命令使用方法有两种
一是使用栅格计算工具(Spatial Analyst/Raster Calculator),输入栅格表达式后执行栅格计
$$NROWS: the number of rows in the analysis window (行数)
$$NCOLS: the number of columns in the analysis window (列数)
$$CELLSIZE: the current cell size specified in the analysis environment (像元大小)
$$WX0: minimum x-map coordinate of the current analysis window (最小的X坐标)
$$WY0: minimum y-map coordinate of the current analysis window (最小的Y坐标)
$$WX1: maximum x-map coordinate of the current analysis window (最大的X坐标)
$$WY1: maximum y-map coordinate of the current analysis window (最大的Y坐标)
$$XMAP: x-map coordinate for the center of the processing cell (X坐标)
$$YMAP: y-map coordinate for the center of the processing cell (Y坐标)
1.栅格计算器中,表达式中的图层名要用[]括起来,运算符前后都要加空格,不然会出错。
2.Con命令
命令使用方法有两种
一是使用栅格计算工具(Spatial Analyst/Raster Calculator),输入栅格表达式后执行栅格计
算(Evaluate)。
表达式输入方法为:con(条件,条件为真时的值,条件为假时的值)
具体如con(isnull([dem]),0,[dem])或con( [dem] == 0,0,[dem])等。
如果要执行多个条件语句,则在每个con语句结束时用分号(;)隔开。
二是直接调用ArcToolbox下的con工具(Spatial Analyst Tools/Conditional/Con)。与ArcToolbox中的其他工具类似,定义好相关参数后即可执行该命令。此外,在ArcToolbox中该工具名称上单击右键可以进行批处理(Batch)。
3.Nibble命令
命令使用方法有两种:
一是使用栅格计算工具(Spatial Analyst/Raster Calculator),输入栅格表达式后执行栅格计算(Evaluate)。
表达式输入方法为:nibble(mask图层,原始数据)
具体如nibble ([dem_Nodata]),[dem])等。
二是直接调用ArcToolbox下的Nibble工具(Spatial Analyst Tools/Generalization/Nibble)。与ArcToolbox中的其他工具类似,定义好相关参数后即可执行该命令。此外,在ArcToolbox
表达式输入方法为:con(条件,条件为真时的值,条件为假时的值)
具体如con(isnull([dem]),0,[dem])或con( [dem] == 0,0,[dem])等。
如果要执行多个条件语句,则在每个con语句结束时用分号(;)隔开。
二是直接调用ArcToolbox下的con工具(Spatial Analyst Tools/Conditional/Con)。与ArcToolbox中的其他工具类似,定义好相关参数后即可执行该命令。此外,在ArcToolbox中该工具名称上单击右键可以进行批处理(Batch)。
3.Nibble命令
命令使用方法有两种:
一是使用栅格计算工具(Spatial Analyst/Raster Calculator),输入栅格表达式后执行栅格计算(Evaluate)。
表达式输入方法为:nibble(mask图层,原始数据)
具体如nibble ([dem_Nodata]),[dem])等。
二是直接调用ArcToolbox下的Nibble工具(Spatial Analyst Tools/Generalization/Nibble)。与ArcToolbox中的其他工具类似,定义好相关参数后即可执行该命令。此外,在ArcToolbox
中该工具名称上单击右键可以进行批处理(Batch)。
需要注意的是:通常我们认为输入图层应该为原始图层,mask图层应为经过处理的图层,但在很多情况下,这种做法得不到我们想要的结果,把图层顺序调整一下,就能得到我们想要的结果。至于原因,本人目前也不是很清楚,如果遇到问题,可以试着这样去处理。
4.DEM无值区或零值区替换
对于像元值是整型的DEM,用Con命令和Nibble命令相结合的方法即可实现。
对于像元值是浮点型的DEM,在Con命令的基础上,配合使用focalmean函数即可实现。
focalmean函数的表达式输入方法如下:
focalmean (原始数据,邻域形状,邻域大小)
具体如focalmean([dem],rectangle,5,5)等。
Con命令和focalmean函数配合使用时,在栅格计算工具(Spatial Analyst/Raster Calculator)中,输入如下栅格表达式:
on(isnull([dem]), focalmean([dem],rectangle,5,5),[dem])
实际应用中,根据数据情况,应适当修改focalmean中邻域的形状和大小。
需要注意的是:通常我们认为输入图层应该为原始图层,mask图层应为经过处理的图层,但在很多情况下,这种做法得不到我们想要的结果,把图层顺序调整一下,就能得到我们想要的结果。至于原因,本人目前也不是很清楚,如果遇到问题,可以试着这样去处理。
4.DEM无值区或零值区替换
对于像元值是整型的DEM,用Con命令和Nibble命令相结合的方法即可实现。
对于像元值是浮点型的DEM,在Con命令的基础上,配合使用focalmean函数即可实现。
focalmean函数的表达式输入方法如下:
focalmean (原始数据,邻域形状,邻域大小)
具体如focalmean([dem],rectangle,5,5)等。
Con命令和focalmean函数配合使用时,在栅格计算工具(Spatial Analyst/Raster Calculator)中,输入如下栅格表达式:
on(isnull([dem]), focalmean([dem],rectangle,5,5),[dem])
实际应用中,根据数据情况,应适当修改focalmean中邻域的形状和大小。
栅格计算
栅格计算是栅格数数据空间分析中数据处理和分析中最为常用的方法,应用非常广泛,能够解决各种类型的问题,尤其重要的是,它是建立复杂的应用数学模型的基本模块。 ArcGIS 9 提供了非常友好的图形化栅格计算器,利用栅格计算器,不仅可以方便的完成基于数学运算符的栅格运算,以及基于数学函数的栅格运算,而且它还支持直接调用ArcGIS 自带的栅格数据空间分析函数,并且可以方便的实现多条语句的同时输入和运行。
一 数学运算
数学运算主要是针对具有相同输入单元的两个或多个栅格数据逐网格进行计算的。主要包括三组数学运算符:算术运算符,布尔运算符和关系运算符。
1. 算术运算
算术运算主要包括加、减、乘、除四种。可以完成两个或多个栅格数据相对应单元之间直接的加、减、乘、除运算。
例如,以今年与去年的降水量数据为基础,用公式(今年降水量-去年降水量)/去年降水量,可以计算出去年降水量的变化程度,如图8.65。(单位:毫米)
图1 算术运算示意图
2. 布尔运算
布尔运算主要包括:和(And)、或(Or)、异或(Xor)、非(Not)。它是基于布尔运算来对栅格数据进行判断的。经判断后,如果为“真”,则输出结果为1,如果为“假”, 则输出结果为0。
(1) 和(&):比较两个或两个以上栅格数据层,如果对应的栅格值均为非0 值,则输出结果为真(赋值为1),否则输出结果为假(赋值为0)。
(2) 或(|):比较两个或两个以上栅格数据层,对应的栅格值中只要有一个或一个以上为
非0 值,则输出结果为真(赋值为1),否则输出结果为假(赋值为0)。
(3) 异或(!):比较两个或两个以上栅格数据层,如果对应的栅格值在逻辑真假互不相同(一个为0,一个必为非0 值),则输出结果为真(赋值为1),否则输出结果为假(赋值为0)。
(4) 非(^):对一个栅格数据层进行逻辑“非”运算。如果栅格值为0 ,则输出结果为1;如果栅格值非0 ,则输出结果为0。
例如,以过去及现在的地表类型为基础,说明用“和”来提取从未被沙漠化过的地表的方法,如图2(其中沙漠为0,其它数值代表了不同的地表类型)。
图2布尔运算示意图
3. 关系运算
关系运算以一定的关系条件为基础,符合条件的为真,赋予1 值,不符条件的为假,赋予0 值。关系运算符包括六种:=,<,>,<>,>=,<=。
例如,需要提取出温度介于20 float()函数度到30 度之间的地区(包括20 度和30 度),公式为:20 <= [温度] <= 30。
二 函数运算
栅格计算器除了提供给大家简单的数学运算符来进行栅格计算外还提供给大家一些相对复杂的函数运算,包括数学函数运算和栅格数据空间分析函数运算。数学函数主要包括:算术函数、三角函数、对数函数和幂函数。
1. 算术函数(Arithmetic)
算术函数主要包括六种:Abs(绝对值函数)、Int(整数函数)、Float(浮点函数)、 Ceil
(向上舍入函数)、Floor(向下舍入函数)、IsNul(输入数据为空数据者以1 输出,有数据者以0输出)。
2. 三角函数(Trigonometric)
常用的三角函数包括:Sin(正弦函数)、Cos(余弦函数)、Tan(正切函数)、Asin(反正弦函数)、Acos(反余弦函数)、Atan(反正切函数)。
3. 对数函数(Logarithms) 对数函数可对输入的格网数字做对数或指数的运算。指数部份包括:Exp (底数e)、Exp10 (底数10)、Exp2 (底数2)三种;对数部份包括:Log (自然对数)、Log10 (底数10)、 log2 (底数2)等三种。
4. 幂函数(Powers) 幂函数可对输入的格网数字进行幂函数运算。幂函数包括三种:Sqrt (平方根)、Sqr (平方)、Pow (幂)。
5. 栅格数据空间分析函数 栅格计算器也直接支持ArcGis 自带的大部分栅格数据分析与处理函数,如栅格表面分析中的slope、hillshade 函数等等,在此也不一一列举,具体用法请参阅相关文档。它与数学函数不同的是,这些函数并没有出现在栅格计算器图形界面中,而是
由计算者自己手 动输入。
三 栅格计算器
1. 启动栅格计算器
点击Spatial Analyst 的下拉箭头,选择Raster Calculator。栅格计算器由四部分组成(图3),左上部 Layers 选择框为当前Arcmap 试图中已加载的所有栅格数据层名列表,双击 任一个数据层名,该数据层名便可自动添加到左下部的公式编辑器中,中间部位上部是常 用的算术运算符、0~10、小数点.、关系和逻辑运算符面板,单击所需按钮,按钮内容便可 自动添加到公式编辑器中。右边可伸缩区域为常用的数学运算函数面板,同样单击任一个 按钮,按钮内容便可自动添加到公式编辑器中。
2. 编辑计算公式
(1) 简单算术运算
如下图3 所示,在公式编辑器中先输入计算结果名称,再输入等号(所有符号两边需要加一
个空 格),然后在Layers 栏中双 击要用来计算的图层,则选择的图层将会进入公式编辑器参与运算。其中“-” 和“^”为单目运算符,运算符前可以不加内容,而只在运算符后加参与计算的对象,如a = - [slope]等。在公式编辑器如果引用Layers 选择框的数据层,数据层名必须用[ ]括起来。
图3 栅格计算器的数学算术运算
图4 栅格计算器的数学函数运算
(2) 数学函数运算
数学函数运算需要注意的是它输入时需要先点击函数按钮,然后在函数后面的括号内加入计算对象, 如图4所示。应该注意一点,三角函数以弧度为其默认计算单位。
(3) 栅格数据空间分析函数运算 栅格数据空间分析函数没有直接出现在栅格计算器面板中,
因此需要计算者自己手动输入。需要时引用它们时,首先必须查阅有关文档,查清楚它们的函数全名、参数、引用 的语法规则等。然后在栅格计算器输入函数全名,并输入一对小括号,再在小括号中输入相关参数或计算对象,如图5所示。
图5 栅格数据空间分析函数运算
(4) 多语句的编辑
ArcGIS 栅格计算器多表达式同时输入,并且先输入的表达式运算结果可以直接被后续语句
引用,如图6所示。一个表达式必须在一行内输入完毕,中间不能回行。此外,如果后输入的函数需要引用前面表达式计算结果,前面表达式必须是一个完整的数学表达 式,如图8.70 中的“d = [straightline]*100”,等号左边为输出数据文件名,右边为计算式。 此外,引用先前表达式的输出对象时,直接引用输出对象名称,对象名称不需要用中括号 括起来,如e = d >= 2500 中d。
图6栅格计算器的多语句编辑
3. 检查计算公式准确无误后,点击Evaluate 来完成运算,计算结果会自动加载到当 前ArcMap 视图窗口。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论