当前位置: 首页 > news >正文

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

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


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

<p>炒茄子<p>

相关文章:

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

01 栅格计算器在哪&#xff1f;02 运算符说明栅格计算器的表达式书写与Python语法一致&#xff08;由于其为解释型语言并且语言简洁优美&#xff0c;因此简单上手&#xff09;&#xff0c;这里主要简单说明各个运算符即可使用栅格计算器构建地图代数表达式以输出要求的栅格图像…...

spring的beanfactory与applicationContext的区别以及继承关系

applicationContext继承关系 首先可以看一张图 ListableBeanFactory 可列举的bean工厂 hierarchical 分层bean工厂 messageSource 国际化信息 //国际化&#xff08;internationalization&#xff09;是设计和…...

分享一个 hive on spark 模式下使用 HikariCP 数据库连接池造成的资源泄露问题

最近在针对某系统进行性能优化时&#xff0c;发现了一个hive on spark 模式下使用 HikariCP 数据库连接池造成的资源泄露问题&#xff0c;该问题具有普适性&#xff0c;故特地拿出来跟大家分享下。 1 问题描述 在微服务中&#xff0c;我们普遍会使用各种数据库连接池技术以加快…...

MySQL 行锁

行锁 : 对表中行记录的锁 MySQL 的行锁 : 由各个引擎自己实现MyISAM 不支持行锁InnoDB 支持行锁 两阶段锁协议 : 行锁是在需要时才加上&#xff0c;要等到事务结束才释放 例子 : id 是表 t 的主键的 B 的 update 会阻塞&#xff0c;直到 A 执行 commit 后&#xff0c;B 才能…...

成为AI架构师的三大能力

AI架构师的定义 “AI 架构师”是以深度学习为代表的第三次AI热潮所催生的新型复合型人才&#xff0c;它的产生最本质的驱动因素是AI产业化落地应用的蓬勃发展对人才的需求&#xff0c;深度学习突出的工程属性也特别需要复合型人才来驾驭。 从字面来看&#xff0c;AI架构师的“…...

博客系统 实现 (前端 + 后端 )代码

文章目录博客系统前端代码 &#xff1a;1. add.html2. blog_detail.html3. blog_edit.html4. blog_list.html5. login.htmlcss 文件1. blog_detail.css2. blog_edit.css3. blog_list.css4. common.css5. login.css6. 分页器使用的 css后端代码1.config 包1.1 AppConfig类1.2 Lo…...

C语言:如何在cmd命令窗口上玩贪吃蛇游戏

最近在重新学习C语言知识,还别说,在这个过程中,我还真的学到了过去很多没有学习到C语言知识,于是就做了这个游戏–贪吃蛇. 运行结果如下: C语言:如何在cmd命令窗口上玩贪吃蛇游戏 文章目录 1. 实现原理2. 实现过程3. 参考代码1. 实现原理 其实,就是利用了人的视觉错觉来…...

Flutter-自定义图标

虽然Flutter有许多内置的icon图标&#xff0c;但是有些特殊功能的话&#xff0c;需要自定义图标或者需要在iconfont 阿里巴巴的图标库里找对应合适的图标。 第一步&#xff1a;在iconfont 阿里巴巴里搜索想要的图标并加入到购物车&#xff0c;点击下载代码后&#xff0c;会生成…...

教学场景应用视频试看预览功能

html5播放器视频预览功能效果 - 视频预览代码示例预播放一小段时间的视频内容&#xff0c;比如3分钟&#xff0c;然后引导用户付费观看或注册会员观看完整视频。原理&#xff1a;视频播放结束&#xff0c;执行s2j_onPlayOver()函数&#xff0c;显示提示信息或对话框&#xff0c…...

关于进程与进程调度

目录什么是进程进程管理进程的结构体(PCB)里的属性并行与并发什么是进程 一个运行起来的程序就是进程. 比如文件名是以 exe 结尾的就是一可执行文件(程序) 双击QQ.exe文件, 这个程序就跑起来了, 它在系统中形成了一个进程, 那我们怎么看到进程呢? 可以打开任务管理器, 点开进…...

Redis常用命令及数据类型参数

1. 针对于string SET key value / GET key SET k1 v1 GET k1 // v1String是二进制安全的&#xff0c;是可变长度的&#xff0c; 底层类似于ArrayList 是可扩容的&#xff0c;最大存储内存为 512MB。 2. 判断key中是否存在某个内容 EXISTS key SET k1 v1 EXISTS k1 // …...

(七十四)大白话深入探索多表关联的SQL语句到底是如何执行的?(2)

今天咱们就以MySQL单表查询来举例&#xff0c;看看执行计划到底包含哪些内容 其实只要大家跟着专栏一步一步的学习下来&#xff0c;会很轻松的看懂执行计划&#xff0c;但是如果你之前对什么数据页&#xff0c;索引&#xff0c;索引使用规则&#xff0c;这些东西学的不扎实&am…...

销售使用CRM系统集成Excel的五个技巧

销售过程中有很多情况会降低团队的效率。通过正确的实施CRM客户管理系统&#xff0c;可以帮助您的企业自动执行手动任务、减少错误并专注于完成交易。这里有5个技巧&#xff0c;可以帮助您的销售人员通过CRM集成Excel为销售流程赋能并提高他们的整体效率。 技巧1&#xff1a;将…...

过来人告诉你:Java学到什么程度可以找工作?

大部分初次学习Java的同学都非常关注自己学到什么程度可以找工作就业&#xff0c;因为学习的目的一方面在于掌握知识、提高技能&#xff0c;另一方面就是就业谋生。今天笔者就来跟大家聊一聊一下Java学习到什么地步可以面试找工作。任何企业&#xff0c;不论大小&#xff0c;对…...

【Linux】目录结构

Linux世界里&#xff0c;一切皆文件。 /bin&#xff1a;是Binary的缩写&#xff0c;这个目录存放着最经常使用的命令。&#xff08;常用&#xff09; /sbin&#xff1a;s就是Super User的意思&#xff0c;这里存放的是系统管理员使用的系统管理程序。 /home&#xff1a;存放普…...

37.Java进阶之实现动态编译

文章目录1. 作为程序员的最高追求2.如何实现动态编译2.1 生成源码2.2 调用编译器API对Test源码文件进行编译生成字节码2.3 调用类加载器对字节码进行加载得到Class对象2.4 使用Class对象创建对象进行使用3. Java编译API学习4. 类加载机制4.1 类加载过程4.2 类加载器的层次结构4…...

【Python百日进阶-Web开发-Vue3】Day549 - Vue3 商城后台 09:Veux4-01基本概念

文章目录 一、Vuex是什么?1.1 Vuex官网1.2 Vuex安装1.3 Vuex概述1.4 核心概念二、Vuex的基本使用2.1 简单使用2.1.1 `src/store/index.js`创建store并导出2.1.2 `main.js`中引入并`use(store)`2.1.3 `src/views/index.vue`首页中使用store2.2 使用`mapState`简化 `$store.stat…...

GitLab 解析:为什么市场正在转向一体化 DevSecOps 平台?(附Forrester完整报告下载)

本文来源&#xff1a;about.gitlab.com 译者&#xff1a;极狐(GitLab) 市场部内容团队 如 GitLab 预测&#xff1a;2023 年企业会将更多的时间和资源投入到持续的安全左移上&#xff08;详情请戳&#x1f449;&#xff1a;重磅&#xff01;GitLab 提出五大预测&#xff0c;洞见…...

ThreadLocal的内部结构和源码探究

目录一. ThreadLocal的内部结构1 常见的误解2 现在的设计3 这样设计的好处二. ThreadLocal的核心方法源码1 set方法2 get方法3 remove方法**4 initialValue方法**三. ThreadLocalMap源码分析1 基本结构2 弱引用和内存泄漏3 hash冲突的解决一. ThreadLocal的内部结构 ​ 通过之…...

Linux文件系统(下)

逻辑卷管理如果用标准分区在硬盘上创建了文件系统&#xff0c;为已有文件系统添加额外的空间多少是一种痛苦的体验。你只能在同一个物理硬盘的可用空间范围内调整分区大小。如果硬盘上没有地方了&#xff0c;你就必须弄一个更大的硬盘&#xff0c;然后手动将已有的文件系统移动…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...