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

news/2024/11/26 4:15:55/

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()是将栅格图像中的像元值类型转化为整型。

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


如果有问题,欢迎一起探讨.

<p>炒茄子<p>


http://www.ppmy.cn/news/31414.html

相关文章

项目管理工具DHTMLX Gantt灯箱元素配置教程:如何验证

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求&#xff0c;具备完善的甘特图图表库&#xff0c;功能强大&#xff0c;价格便宜&#xff0c;提供丰富而灵活的JavaScript API接口&#xff0c;与各种服务器端技术&am…

(蓝桥真题)剪格子(搜索+剪枝)

样例1输入&#xff1a; 3 3 10 1 52 20 30 1 1 2 3 样例1输出&#xff1a; 3 样例2输入&#xff1a; 4 3 1 1 1 1 1 30 80 2 1 1 1 100 样例2输出&#xff1a; 10 分析&#xff1a;这道题目我们直接从(1,1)点开始进行dfs搜索即可&#xff0c;但是需要注意一点的是我们搜…

【正则表达式】正则表达式语法规则

正则表达式语法规则1.普通字符 字符描述[ABC]匹配 […] 中的所有字符[^ABC]匹配除了 […] 中字符的所有字符[A-Z][A-Z] 表示一个区间&#xff0c;匹配所有大写字母&#xff0c;[a-z] 表示所有小写字母.匹配除换行符以外的任意字符[\s\S]匹配所有。\s 是匹配所有空白符&#xf…

机器看世界

博主简介 博主是一名大二学生&#xff0c;主攻人工智能研究。感谢让我们在CSDN相遇&#xff0c;博主致力于在这里分享关于人工智能&#xff0c;c&#xff0c;Python&#xff0c;爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主&#xff0c;博主会继续更新的&#xff0c…

Git设置SSH Key

一、git 配置 &#xff08;1&#xff09;打开 git 命令窗口 &#xff08;2&#xff09;配置用户名&#xff08;填自己的姓名&#xff09; git config --global user.name “xinyu.xia” &#xff08;3&#xff09;配置用户邮箱&#xff08;填自己的邮箱&#xff0…

品牌营销 | 学习如何最大限度地发挥品牌营销的作用

您是否想过如何最大限度地发挥品牌营销的潜力&#xff1f;这是一项艰巨的挑战&#xff0c;通过了解品牌营销的基本组成部分&#xff0c;您可以成功地推广您的品牌。 &#xff08;图源&#xff1a;Pixabay&#xff09; 品牌营销的基本组成部分 你需要做什么来发展稳固的品牌&am…

MySQL DDL表操作【入门到精通】

目录 一、查询创建 1、查询当前数据库所有表 2、查看指定表结构 3、查询指定表的建表语句 4、创建表结构 二、数据类型 1、数值类型 2、字符串类型 3、日期时间类型 三、表操作-案例 设计一张员工信息表&#xff0c;要求如下&#xff1a; 对应的建表语句如下&#…

一文教会你如何简单使用Fegin进行远程服务调用

文章目录1、fegin的基本介绍2、fegin的基本使用步骤3、项目中的实际运用4、测试前言在分布式微服务中&#xff0c;少不了会进行不同服务之间的相互调用&#xff0c;比如A服务要调用B服务中的接口&#xff0c;如何简单方便的实现呢&#xff1f;fegin可以来帮助。 1、fegin的基本…