您现在的位置是:首页 > 生活探索生活探索

arcgis栅格计算器在哪里-arcgis栅格计算器con函数-

查看 wangqiang2022bixu8 的更多文章wangqiang2022bixu82022-04-24【生活探索】203人已围观

  “栅格计算器(RasterCalculator)”工具是栅格数据计算的利器,是栅格数据空间分析中对栅格进行数据处理和分析操作中最为常用的方法,应用非常广泛,能够解决各种类型的问题,尤其重要的是建立复杂的应用数学模型的基本模块。使用的栅格数据必须是单个波段,多个波段只对第一个波段运算。输入数据可以是一个栅格、也可以多个栅格;用到多个栅格数据时,要求它们的坐标系相同,像元的CELLSIZE大小(分辨率)相同,且栅格数据的范围一致,当多个栅格数据的范围不同时取它们的交集。栅格计算器是在ArcGIS的空间分析模块,使用前一定要选中空间分析扩展模块。

  ArcGIS提供了非常友好的图形化栅格计算器界面,计算的基本原理就是对每个像元数值进行计算。不仅可以方便的完成基于数学运算符(加、减、乘、除等)的栅格运算和逻辑运算符(大于、小于,等于)的运算,以及基于数学函数的栅格运算。而且它还支持直接调用ArcGIS 自带的栅格数据空间分析函数和工具,并且可以方便的实现多条语句的同时输入和运行,如计算坡度,可以直接使用“Slope”函数,工具箱中输出栅格有关的工具都可以使用,函数名就是工具名称,而不是看到的标签(平时看到工具,汉字就是标签)。

  栅格计算器使用Python语法,使用函数严格区分大小写,大小写有规律,每一个单词首字母大写,其他小写,如Con工具,务必输入为 Con,而不是con 或 CON。栅格数据的图层名称必须包含在半角双引号内。对于引号总结:在写SQL查询语句时是使用单引号,其他所有情况(含标注、字段计算器、栅格计算器,无论VBScript,或是Python)都是双引号。

  使用测试数据:“chp15\dem.tif”,先把数据加入到ArcMap中.

  例1:运行“栅格计算器”工具,在算数运算编辑框中输入: "dem.tif"/3+500,如图15-16所示。

  栅格计算器算数运算

  该操作相当于对原栅格数据进行了加密处理,具体加密公式可以自己写,别人不知道具体的公式,就不能还原的最原始的栅格数据,当然也可以其他应用,多个栅格,根据权重计算。

  例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")。

  例4:生成DEM:

  使用dgx.SHP的高程字段“gc”,调用工具“地形转栅格(TopoToRaster) ”工具,输出分辨率10,栅格表达式:TopoToRaster ("dgx gcContour", "10")

  例子5:计算填挖方:

  在栅格计算器中输入表达式:CutFill("dem.tif","dem1.tif")。

  注意:栅格计算器使用数据最好先加载到ArcMap中,如果没有加载到ArcMap中,则需要把数据的绝对路径注明,如:"d:\chp15\dem.tif"。

  二、 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函数的参数说明表

  例如:对于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")

  结果

  使用栅格计算器加入条件函数的使用,再使用工具箱中“栅格转面(RasterToPolygon)”工具就可以得到类似洪水淹没的范围数据(指定高程值以下的区域)。

  三、空和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的结果数据。

  四、比较影像的不同

  影像数据的比较,只能是一个波段,对于多个波段数据,各个波段要分别比较,也可以先转换成灰度图。

  处理的有两种方法:

  第1种:相减。在栅格计算器中输入表达式:"dem.tif" - "dem1.tif",执行后数值为0的地方相同,不为0就不同;

  第2种:相同不返回,返回不相同的差值。在栅格计算器中输入表达式:Con("dem.tif"!= "dem1.tif","dem.tif" - "dem1.tif")。

Tags: