栅格计算器使用
- 格式:docx
- 大小:14.18 KB
- 文档页数:3
栅格计算器(Raster Calculator)
栅格计算机是一种空间分析函数工具,可以输入地图代数表达式,使用运算符和函数来做数学计算,建立选择查询,或键入地图代数语法。可输入栅格数据、栅格图层、coverages,shapefiles,表格,常数,数值。在“空间分析”(Spatial Analyst)下拉菜单中可找到。栅格计算机使用“运算符”和“函数”来执行任务。
【函数(functions)】
1.函数执行专门任务,如由海拔(elevation)计算边坡(slope),通常返回的是数值。栅格计算机提供算术函数、三角函数、指数对数函数以及幂函数。
2.应用实例(实习数据:landuse,elevation):
①对landuse每个栅格取平方(平方后=sqr([landuse]))
②栅格数据空间分析函数:用山体阴影函数(hillshade)作用于elevation图层得到立体形态(立体图=hillshade([elevation]))
【运算符(operators)】
运算符的使用通常与科学计算器相类似。栅格计算器提供算术运算符、关系运算符以及布尔运算符。
①算术运算符(+,-,*,/)。加减乘除四则运算。对相应空间位置上的栅格单元进行算术运算,可用于土地利用价值的评价。规则:整数的运算是整数;浮点数与整数的运算得到的结果是浮点数;Mod运算符的结果是整数(实习数据:landuse):
(1)选择出耕地栅格(耕地=[landuse] == 5),选择出森林栅格(森林=[landuse] == 6);
(2)将耕地和森林栅格相加(绿地=[耕地] + [森林]),又例如创建三个火灾危险性栅格,互相叠加显得出新的全面危险分析栅格。
(3)用来转换值从一个测量到另一个(例如,x英尺= 0.3048米)。
②关系运算符(>,<,==,<=,>=,<>)。建立逻辑测试,返回真假值(true (1),false (0))(实习数据:landuse,mask,elevation)。
(1)选择出城区栅格(设置环境加Mask)(城区=[landuse]);
(2)选择出高程高于1000的栅格(高地=[elevation] > 1000)。
③布尔运算符(和and ^,或or &,异或xor !,非not | )。and:当相同位置的栅格单元取值不为0时,返回1,但有一个栅格中取值0时,返回0链接逻辑测试(实习数据:landuse,mask,elevation):选择高于1000m的城区栅格(高城区=[高地]&[城区])
④逻辑运算符(diff,in,and over)。不同运算符有不同结果(实习数据:xs_1991和xs_2006):
(1)A diff B:差异运算符:对两个栅格图层单元格的数值是否存在差异进行计算。数值没有差异的单元格赋值为0,数值有差异的返回第一个输入数据集中单元格的数值。检测土地利用的变化([xs_2006] diff [xs_1991])如果diff左右两栅格单元内有不同值(cell value),取左舍右,如果相同返回零值(zero);
(2)A in {value list}:如果A的某栅格单元内值属于值列表,则返回,否则返回NoData。包含运算符:第一个输入是一个表达式(通常是一个栅格或一个数据列),第二个输入是一组数字。基本思想:用预先选出的一组数字和栅格矩阵中的数值作比较,和这组数字不一致的单元格赋值为0,相当于利用这组数字作为选择栅格单元的条件。例:在Grid1中分离出数值为2和4的单元格。多用于查询;
(3)A over B:如果A内某栅格单元值(不)为零,则返回,否则返回B。非零查找与替换运算符。对两个输入栅格矩阵搜索0值单元格,第一个矩阵中的所有单元格中的非零值作为其输出,当第一个输入矩阵中的单元格的值为0时,用第二个栅格矩阵相应位置的单元
格数值进行赋值。多应用-如果第一个输入中0值代表居住用地,第二个输入是环境质量类型区,则这一方法,可分析不同的居住区的环境质量状况。
栅格计算器中用得到$$相关函数
$$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中该工具名称上单击右键可以进行批处理(Batch)。
需要注意的是:通常我们认为输入图层应该为原始图层,mask图层应为经过处理的图层,但在很多情况下,这种做法得不到我们想要的结果,把图层顺序调整一下,就能得到我们想要的结果。至于原因,本人目前也不是很清楚,如果遇到问题,可以试着这样去处理。
4.DEM无值区或零值区替换
对于像元值是整型的DEM,用Con命令和Nibble命令相结合的方法即可实现。
对于像元值是浮点型的DEM,在Con命令的基础上,配合使用focalmean函数即可实现。
focalmean函数的表达式输入方法如下:
focalmean (原始数据,邻域形状,邻域大小)
具体如focalmean([dem],rectangle,5,5)等。