栅格计算器(Raster Calcul ator)
栅格计算机是一种空间分析函数工具,可以输入地图代数表达式,使用运算符和函数来做数学计算,建立选择查询,或键入地图代数语法。可输入栅格数据、栅格图层、covera ges,shapef iles,表格,常数,数值。在“空间分析”(Spatia l Analys t)下拉菜单中可到。栅格计算机使用“运算符”和“函数”来执行任务。
【函数(functi ons)】
1.函数执行专门任务,如由海拔(elevat ion)计算边坡(slope),通常返回的是数值。栅格计算机提供算术函数、三角函数、指数对数函数以及幂函数。
2.应用实例(实习数据:landus e,elevat ion):
①对landu se每个栅格取平方(平方后=sqr([landus e]))
②栅格数据空间分析函数:用山体阴影函数(hillsh ade)作用于ele vatio n图层得到立体形态(立体图=hillsh ade([elevat ion]))
【运算符(operat ors)】
运算符的使用通常与科学计算器相类似。栅格计算器提供算术运算符、关系运算符以及布尔运算符。
①算术运算符(+,-,*,/)。加减乘除四则运算。对相应空间位置上的栅格单元进行算术运算,可用于土地利用价值的评价。规则:整数的运算是整数;浮点数与整数的运算得到的结果是浮点数;Mod运算符的结果是整数(实习数据:landus e):
(1)选择出耕地栅格(耕地=[landus e] == 5),选择出森林栅格(森林=[landus e] == 6);
(2)将耕地和森林栅格相加(绿地=[耕地] + [森林]),又例如创建三个火灾危险性栅格,互相叠加显得出新的全面危险分析栅格。
(3)用来转换值从一个测量到另一个(例如,x英尺= 0.3048米)。
②关系运算符(>,<,==,<=,>=,<>)。建立逻辑测试,返回真假值(true (1),false(0))(实习数据:landus e,mask,elevat ion)。
(1)选择出城区栅格(设置环境加M ask)(城区=[landus e]);
(2)选择出高程高于1000的栅格(高地=[elevat ion] > 1000)。
③布尔运算符(和and ^,或or &,异或xor!,非not | )。and:当相同位置的栅格单元取值不为0时,返回1,但有一个栅格中取值0时,返回0链接逻辑测试(实习数据:landus e,mask,elevat ion):选择高于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 {valuelist}:如果A的某栅格单元内值属于值列表,则返回,否则返回No Data。包含运算符:第一个输入是一个表达式(通常是一个栅格或一个数据列),第二个输入是一组数字。基本思想:用预先选出的一组数字和栅格矩阵中的数值作比较,和这组数字不一致的单元格赋值为0,相当于利用这组数字作为选择栅格单元的条件。例:在Grid1中分离出数值为2和4的单元格。多用于查询;
(3)A over B:如果A内某栅格单元值(不)为零,则返回,否则返回B。非零查与替换运算符。对两个输入栅格矩阵搜索0值单元格,第一个矩阵中的所有单元格中的非零值作为其输出,当第一个输入矩阵中的单元格的值为0时,用第二个栅格矩阵相应位置的单元
格数值进行赋值。多应用-如果第一个输入中0值代表居住用地,第二个输入是环境质量类型区,则这一方法,可分析不同的居住区的环境质量状况。
栅格计算器中用得到$$相关函数
$$NROWS: the number of rows in the analys is window(行数)
$$NCOLS: the number of column s in the analys is window(列数)
$$CELLSI ZE: the curren t cell size specif ied in the analys is enviro nment(像元大小)
$$WX0: minimu m x-map coordi nateof the curren t analys is window(最小的X坐标)$$WY0: minimu m y-map coordi nateof the curren t analys is window(最小的Y坐标)$$WX1: maximu m x-map coordi nateof the curren t analys is window(最大的X坐标)$$WY1: maximu m y-map coordi nateof the curren t analys is window(最大的Y坐标)$$XMAP: x-map coordi natefor the center of the proces singcell (X坐标)
$$YMAP: y-map coordi natefor the center of the proces singcell (Y坐标)
1.栅格计算器中,表达式中的图层名要用[]括起来,运算符前后都要加空格,不然会出错。
2.Con命令
命令使用方法有两种
一是使用栅格计算工具(Spatia l Analys t/Raster Calcul ator),输入栅格表达式后执行栅格计算(Evalua te)。
科学计算器使用表达式输入方法为:con(条件,条件为真时的值,条件为假时的值)
具体如con(isnull([dem]),0,[dem])或con( [dem] == 0,0,[dem])等。
如果要执行多个条件语句,则在每个co n语句结束时用分号(;)隔开。
二是直接调用ArcTo olbox下的con工具(Spatia l Analys t Tools/Condit ional/Con)。与ArcTo olbox中的其他工具类似,定义好相关参数后即可执行该命令。此外,在ArcTo olbox 中该工具名称上单击右键可以进行批处理(Batch)。
3.Nibble命令
命令使用方法有两种:
一是使用栅格计算工具(Spatia l Analys t/Raster Calcul ator),输入栅格表达式后执行栅格计算(Evalua te)。
表达式输入方法为:nibble(mask图层,原始数据)
具体如nib ble ([dem_No data]),[dem])等。
二是直接调用ArcTo olbox下的Nib ble工具(Spatia l Analys t Tools/Genera lizat ion/Nibble)。
与ArcTo olbox中的其他工具类似,定义好相关参数后即可执行该命令。此外,在ArcTo olbox中该工具名称上单击右键可以进行批处理(Batch)。
需要注意的是:通常我们认为输入图层应该为原始图层,mask图层应为经过处理的图层,但在很多情况下,这种做法得不到我们想要的结果,把图层顺序调整一下,就能得到我们想要的结果。至于原因,本人目前也不是很清楚,如果遇到问题,可以试着这样去处理。
4.DEM无值区或零值区替换
对于像元值是整型的DE M,用Con命令和Nibb le命令相结合的方法即可实现。
对于像元值是浮点型的D EM,在Con命令的基础上,配合使用fo calme an函数即可实现。
focalm ean函数的表达式输入方法如下:
focalm ean (原始数据,邻域形状,邻域大小)
具体如foc almea n([dem],rectan gle,5,5)等。
Con命令和focal mean函数配合使用时,在栅格计算工具(Spatia l Analys t/Raster Calcul ator)中,输入如下栅格表达式:
on(isnull([dem]), focalm ean([dem],rectan gle,5,5),[dem])
实际应用中,根据数据情况,应适当修改f ocalm ean中邻域的形状和大小。
发布评论