

栅格计算器算数运算
该操作相当于对原栅格数据进行了加密处理,具体加密公式可以自己写,别人不知道具体的公式,就不能还原的最原始的栅格数据,当然也可以其他应用,多个栅格,根据权重计算。
例2:输入算数运算公式:9000 - "dem.tif",可以发现原来高的地方变低,低的地方变高,就是平时讲的反地形,海洋中山脉和陆地的山脉正好相反,在陆地上的山谷线就是海洋的山脊线。
例3:输入逻辑计算公式:"dem.tif" < 1000,计算后,看到满足条件返回1,不满足条件(大于等于1000),返回0,即将栅格数据以1000数值进行了分类,原始数据小于1000的变为1,大于等于1000的数值变为0。
一、空间分析函数调用
测试数据:“chp15\dem.tif、dem1.tif、clip.SHP和dgx.SHP”。
例1:计算坡度:
在栅格计算机中输入表达式:Slope("dem.tif"),如图15-17所示。

图15-17栅格计算器函数调用界面
例2:重分类:
将栅格数据分成两类:像元值在2000以下的设置成1,像元值大于2000的设置成2。在栅格计算器中输入表达式:Reclassify("dem.tif", "VALUE", "0 20001;2000 9000 2"),其中输入语法中使用的都是双引号,分类中间使用“;”隔开,输出结果就是分类后输出栅格。
例3:裁剪影像:
使用面clip.SHP裁剪栅格dem.tif。将该数据一定添加到ArcMap中,在栅格计算器中输入表达式:ExtractByMask("dem.tif","clip")。
二、 Con函数使用
测试数据:“chp15\dem.tif、chp15\dem1.tif”。
针对输入栅格的每个输入像元执行 if/else 条件评估。具体的语法如下:
Con (in__raster,in_true_raster_or_constant, {in_false_raster_or_constant}, {where_clause})
Con函数的参数说明如表15-1所列。
表-Con函数的参数说明表
参数 |
说明 |
数据类型 |
in__raster |
表示所需条件结果为真或假的输入栅格。可以是整型或浮点型。 |
栅格 |
in_true_raster_or_constant |
条件为真时,其值作为输出像元值的输入。可为整型或浮点型栅格,或为常数值。 |
栅格或数值常量 |
in_false_raster_or_constant (可选) |
条件为假时,其值作为输出像元值的输入。可为整型或浮点型栅格,或为常数值。 |
栅格或数值常量 |
where_clause (可选) |
决定输入像元为真或假的逻辑表达式。表达式遵循 SQL 表达式的一般格式。where_clause的一个示例为 "VALUE > 100"。 |
SQL 表达式 |
例如:对于DEM值小于1000,返回1,大于1000的返回0,则输入的表达式为:Con("dem.tif"< 1000,1,0),也可以是Con("dem.tif",1,0,"VALUE <1000");如果只返回小于1000的范围,输入的表达式:Con("dem.tif" < 1000,1)。返回变量Con("dem.tif" < 2000,"dem.tif")。也支持没有加入arcmap的数据,如Con("F:\2020培训\data\最后示例数据\最后示例数据\chp15\dem.tif"<2000,"F:\2020培训\data\最后示例数据\最后示例数据\chp15\dem.tif")

结果

三、空和0转换
在栅格数据,有一种数据值为空:NoData,该值是表示在该位置处数据缺失,NoData 与 0 不同,0 是有效数值。在栅格数据中NoData值不能做任何数学运算。我们经常需要把dem.tif中空值转换成0,此时应输入的表达式是:Con(IsNull("dem.tif"),0,"dem.tif"),如果使用栅格文件格式,需要加扩展名,来自数据库中栅格数据,就是数据名称,反之加扩展名的是就是文件格式的栅格,不加扩展名就是数据库格式的栅格数据。
有时需要0转换成空,如raster1数据,此时需要输入的表达式为Con("raster1"!=0,"raster1"),或SetNull("raster1"==0,"raster1"),这里的raster1是上面dem.tif将空转换成0的结果数据。
四、比较影像的不同
第2种:相同不返回,返回不相同的差值。在栅格计算器中输入表达式:Con("dem.tif"!= "dem1.tif","dem.tif" - "dem1.tif")。
- END -

