ArcGIS:栅格计算器的运算符和函数详解

简介: ArcGIS:栅格计算器的运算符和函数详解

01 栅格计算器在哪?



02 运算符说明

栅格计算器的表达式书写与Python语法一致(由于其为解释型语言并且语言简洁优美,因此简单上手),这里主要简单说明各个运算符即可使用栅格计算器构建地图代数表达式以输出要求的栅格图像。

首先我们先来了解一下算术运算符。


2.1 +(加)



(或许你会看到+左右两侧均有空格,这是python推荐的写法,但是并不强制,它可以使表达式更为优美简洁,我很喜欢Python)

2.2 -(减)



2.3 *(乘)


2.4 \(除)



接着我们来看一下关系运算符。


2.5 ==(相等)



其它>(大于) 、<(小于)、 >=(大于等于)、 <=(小于等于)、!=(不等于)均为类似用法,这里不再赘述。

接下来我们来看一下逻辑运算符


2.6 &(布尔与)

等价于数学中的取交集;



2.7 |(布尔或)

等价于数学中的取并集



2.8 ^(布尔异或)



2.9 ~(布尔非)

类似数学中的取逆,但是样本空间为{真, 假}.



03 函数

3.1 Con(condition, num1, num2)

实际为If函数,意为对每一个像元进行If判断,如果满足条件condition,那么赋值为num1,否则赋值为num2.

可以进行嵌套,例如,对某一DEM栅格图像dem.tif,我们想要对其进行属性值按照分类标准(<200的像元赋值为1,>= 200 但是 <500的像元赋值为2, 其它赋值为3)进行重新赋值(当然你也可以使用重分类进行)。那么表达式为:

Con("dem.tif" < 200, 1, Con("dem.tif" < 500, 2, 3))
# 或许你会这么写
Con("dem.tif" < 200, 1, Con(200 =< "dem.tif" < 500, 2, 3))
# 恭喜你python支持链式比较(当然你也可以使用& |都行),确实可以200 =< "dem.tif" < 500,
#但是明显不需要,因为已经第二个IF判断了,肯定是>= 200了;

3.2 Pick(Raster.tif, [num1, num2, num3...])

实际就是提取栅格图像中属性值为num1,num2, num3等的像元,其它没有被提取的像元设置为Nodata。

例如,我们现在有一幅土地利用图(栅格数据结构),其中属性值为1的像元表示城镇,属性值为5的像元表示为乡村,当然还有一些其它属性值也表示一些地物。那么我的需求即使将城镇和乡村的像元提取出来,实际底层执行的是:对逐个像元进行判断,若该像元的属性值在列表[num1, num2, num3...]中,那么该像元属性值不变,若是像元属性值不在列表中,那么该像元值设置为Nodata。


3.3 SetNull(condition, raster.tif/num)

其表示将满足条件consition的像元设置为Nodata,不满足条件的像元设置为raster.tif栅格图像(一般为condition条件中的图像意为不满足条件的属性值不变)对应的栅格属性值或者设置为值num。

例如,我们通过DEM栅格图像dem.tif寻找地形平坦的区域(认为高程小于200的均满足要求),为了后续其它空间分析的方便,这里需要将dem.tif进行栅格计算(当然你用重分类等操作也是可以的),那么我们可以写表达式为:

SetNull("dem.tif" >= 200, "dem.tif")
# 表示>=200的像元值设置为Nodata,其它设置为dem.tif对应的栅格像元值即不变

3.4 Float(raster.tif)和Int(raster.tif)

有时候栅格图像中的栅格属性值的数据类型不满足我们的计算要求,那么我们需要对其进行类型转换。

Float()是将栅格图像中的像元值类型转化为浮点型(当然,raster.tif * 1.0也是可以得到浮点数的raster.tif)

Int()是将栅格图像中的像元值类型转化为整型。

未完待续,如今后碰到其它函数在行补充。


目录
相关文章
|
6月前
|
定位技术 Python
ArcGIS批量拼接大量栅格遥感影像:Mosaic工具
ArcGIS批量拼接大量栅格遥感影像:Mosaic工具
249 1
|
6月前
|
算法 定位技术
ArcGIS中ArcMap栅格图像平滑滤波:焦点统计、滤波器、重采样
ArcGIS中ArcMap栅格图像平滑滤波:焦点统计、滤波器、重采样
277 1
|
6月前
|
并行计算 定位技术
ArcGIS中ArcMap分割栅格Split Raster工具没有结果的解决
ArcGIS中ArcMap分割栅格Split Raster工具没有结果的解决
226 1
|
6月前
|
算法 定位技术 Python
ArcGIS中ArcMap栅格重采样操作与算法选择
ArcGIS中ArcMap栅格重采样操作与算法选择
210 1
|
6月前
|
定位技术
ArcGIS中ArcMap栅格图层0值设置为NoData值的简便方法
ArcGIS中ArcMap栅格图层0值设置为NoData值的简便方法
159 1
|
6月前
|
Serverless 定位技术 Windows
ArcGIS中ArcMap快速自动计算单一波段或多波段栅格遥感影像NDVI的方法
ArcGIS中ArcMap快速自动计算单一波段或多波段栅格遥感影像NDVI的方法
247 1
|
6月前
|
存储 机器学习/深度学习 数据挖掘
ArcGIS中ArcMap栅格遥感影像的监督分类
ArcGIS中ArcMap栅格遥感影像的监督分类
156 1
|
人工智能 数据可视化 API
ArcGIS API for Python
ArcGIS API for Python
71 0
|
JavaScript 前端开发 应用服务中间件
Arcgis api for javascript 详细部署
Arcgis api for javascript 详细部署
|
人工智能 数据可视化 数据管理
ArcGIS API for Python
ArcGIS API for Python
114 0