ArcGIS专用语言:Arcade详细介绍(一)

Arcade语言是专为在ArcGIS中使用而设计的。是一种可移植、轻量级且安全的表达语言,用于在ArcGIS应用程序中创建自定义内容。

与其他表达式语言一样,它可以执行数学计算、设置文本格式和计算逻辑语句,还支持多语句表达式、变量和流控制语句。

在ArcGIS中,和其它语言,如VB、python相比,Arcade的优势是包含了数据特征和几何数据类型等内容。

Arcade在ArcGIS中的使用场景包括【标注、字段计算器、属性规则、工具中的计算表达式】等。

我也是刚开始学习Arcade,记录一下以后可能会用到的东西。

东西比较多,要分几个篇章慢慢来。

第一篇记录下Text函数和逻辑函数。


一、Text函数

1、Concatenate【连接字符串】

最简单的连接:

Concatenate([$feature.DLBM,$feature.DLMC,$feature.QSDWMC])
Concatenate($feature.DLBM,$feature.DLMC,$feature.QSDWMC)
return "0307其他林地小村村"

连接的字符串间可以添加符号:

Concatenate([$feature.DLBM,$feature.DLMC,$feature.QSDWMC],"/")
return "0307/其他林地/小村村"

2、Count【字符个数】

返回文本值中的字符数。

Count('规划GIS会')
return 6

3、Find【找到字符串所在的位置】

需要注意,第一个参数是查找的字符串,第二个参数才是文本。

Find("划", "规划GIS会")
return 1

4、FromCharCode【UTF-16字符代码转文本】

返回根据一系列UTF-16字符代码创建的文本值。一些符号还挺有意思的

FromCharCode(88,89,90)
return 'XYZ'
FromCharCode(55356, 57097)
return '🌉'

5、FromCodePoint【UTF-32字符代码转文本】

返回从一系列UTF-32代码点创建的文本值。

FromCodePoint(88,89,90)
return 'XYZ'
FromCodePoint(127753)
return '🌉'

6、Left【从左边取值

从左边起取2位。

Left("规划GIS会",2)
return "规划"

7、Lower【小写

全部小写。

Lower('HELLO')
return 'hello'

8、Mid【从中间位置获取多个字符

从第3位起,取3个字符。

Mid("规划GIS会", 2, 3)
return "GIS"

9、Proper【大小写

参数everyword,每个单词第一个字母大写,参数firstword,只有第一个字母大写。

Proper('the quick brown fox', 'everyword')
return 'The Quick Brown Fox'
Proper('the quick brown fox', 'firstword')
return 'The quick brown fox'

10、Replace【替换文本

将参数2替换为参数3。

Replace("规划GIS会","会","不会")
return "规划GIS不会"

11、Right【从右边取值

从右边起取2位。

Right("规划GIS会",2)
return "S会"

12、Split【分割文本

参数2是分割符,参数3决定从结果的list取几个要素。

Split("林地;园地;耕地",";")
return ["林地","园地","耕地"]
Split("林地;园地;耕地",";",2)
return ["林地","园地"]

13、Text【任意值转为文本

将任意值转换为文本值。提供了一个可选的格式参数,用于格式化日期和数字数据输入。如果无法确定等效的文本转换,则返回null。

Text($feature)     // "{"geometry":{"rings":[[[39606160.8011,2993152.7727],......."
Text(123, '0000') // '0123'
Text(123, '00') // '23'
Text(1234, '#,###') // '1,234'
Text(12345678.123, '#,###.00') // '12,345,678.12'
Text(1234.55, '$#,###.00') // '$1,234.55'
Text(1.236, '#.00') // '1.24'
Text(1234.5678, '#,##0.00#') // '1,234.568'
Text(-2, 'Floor #;Basement #') // 'Basement 2'
Text(2, 'Floor #;Basement #') // 'Floor 2'
Text(0.3, '#%') // '30%'
Text(Now(), 'dddd, MMMM D, Y @ h:m:s')  // ÐÇÆÚËÄ, ¶þÔÂ 29, 2024 @ 4:13:50(字符格式原因不明)

14、ToHex【整数转十六进制

ToHex(100)  // 64
// RGB颜色生成
var r = ToHex(65); // returns "41"
var g = ToHex(105); // returns "69"
var b = ToHex(225); // returns "E1"
Concatenate("#",r,g,b)
// Returns "#4169E1"

15、Trim【去除空格

删除输入文本值开头或结尾的空格,中间的空格不会被删除。

Trim("    规划  GIS   会    ")
return "规划  GIS   会"

16、Upper【全部大写

Upper('Hello')
return 'HELLO'

二、逻辑函数

1、Boolean【转布尔】

尝试将给定的非布尔值转换为布尔值,如0是false,1是true:

Boolean("true")
// returns true
Boolean(0)
// returns false
Boolean(1)
// returns true
Boolean('hello')
// returns false

2、Decode【属性映射】

将表达式求值为一个值,并将结果值与后续参数的值进行比较。如果表达式的计算结果为匹配值,则返回后续的参数值。如果没有找到匹配项,则可以提供默认值。有点像属性映射。

var code = $feature.DLBM;
var decodedValue = Decode(code, '1104', '坑塘水面', '0201K', '可调整果园', 'Other');
return decodedValue

3、DefaultValue【设置默认值,消空值】

如果检测到空值,则返回指定的默认值。

DefaultValue($feature.小类名称, 'no data')

4、Equals【判断相等

指示两个值是否相等。对象类型(即阵列、特征、字典、几何体)只有在它们是同一对象时才会返回true。

Equals(1, "1") // returns falsevar testVal = "test";
Equals(testVal, "test") // returns truevar array1 = Array(5);
var array2 = Array(5);
Equals(array1, array2); // returns false
Equals(array1, array1); // returns true

5、IIf【简单版的三目运算表达式

如果条件表达式的计算结果为true,则返回给定值;如果条件表达式计算结果为false,则返回备用值。

var name = $feature.中类名称;
IIf(name == "果园", '有吃的', '饿死了');

6、IsEmpty【判断为空

如果提供的值为null或为空文本(例如""),则返回true。对于所有其他情况,包括空数组和字典,都返回false。

IsEmpty(null)    // Returns true
IsEmpty('hello world')   // Returns false

7、IsNan【判断是否为非数字

是数字则返回false,如果是其它能转为数字的输入,也返回false。

// Returns true
IsNan(Infinity / Infinity)
// Returns false
IsNan('4')

8、TypeOf【返回数据类型

返回输入值的类型。类型包括:Array, Date, Text, Boolean, Number, Dictionary, Feature, FeatureSet, Point, Polygon, Polyline, Multipoint, Extent, Function, Unrecognized Type。

TypeOf(true)   // return 'Boolean'
TypeOf(Now())  // return 'Date'

9、When【条件表达式

跟c#里的While是一样的,但写法略有不同。

var density = $feature.densityField;
var ranking = When(density < 50, 'low', density >=50 && density < 100, 'medium', density >= 100, 'high', 'n/a');

10、if【条件表达式

if其实不是函数,暂且先记在这里。

var name = $feature.中类名称;
if(name == "果园")return "有吃的"
elsereturn "饿死了"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解计算着色器中glsl语言的内置变量

概要 本文通过示例的方式&#xff0c;着重解释以下几个内置变量&#xff1a; gl_WorkGroupSizegl_NumWorkGroupsgl_LocalInvocationIDgl_WorkGroupIDgl_GlobalInvocationID 基本概念 局部工作组与工作项 一个3x2x1的局部工作组示例如下&#xff0c;每个小篮格子表示一个工作项…

Vulnhub靶机:basic_pentesting_1

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.4&#xff09; 靶机&#xff1a;basic_pentesting_1&#xff08;10.0.2.6&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/en…

密码学——基本概念

引言 在计算机和通信技术发达的现代社会,密码已经成为防止信息被篡改,盗取等方面不可或缺的技术。可应用于:本人身份认证,网上交易加密和认证。保证文件不被篡改的电子签名。电子邮件的加密等等领域。 密码学术语: 密码 cipher 基本词汇: 明文P(Plain text)= 没有经…

TCP缓存

TCP缓存是指TCP协议在数据传输过程中使用的一种机制&#xff0c;用于临时存储和管理数据包。它主要有三个作用&#xff1a;提高网络性能、保证数据的可靠性和实现流量控制。 首先&#xff0c;TCP缓存可以提高网络性能。当发送端发送数据时&#xff0c;TCP协议会将数据分割成若…

如何实现无公网ip远程访问本地安卓Termux部署的MySQL数据库【内网穿透】

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…

VR危险环境模拟介绍|VR虚拟现实设备

VR危险环境模拟是指利用虚拟现实技术来模拟和展现各种危险环境&#xff0c;以便训练人员应对紧急情况、提高安全意识和应急反应能力。这种模拟可以涉及到工业、医疗、紧急救援等多个领域&#xff0c;旨在帮助人们在真实环境中面对危险时能够做出正确的应对和决策。 VR危险环境…

Linux alias命令(为复杂命令创建别名,其中命令可带选项或参数)

文章目录 Mastering the Linux alias Command&#xff08;精通Linux的alias命令&#xff09;1. Understanding the alias Command&#xff08;理解alias命令&#xff09;示例Ubuntu20.04 arm操作系统OpenEuler20.03 arm操作系统 2. Basic Usage of alias&#xff08;alias的基本…

AMEYA360:广和通5G智能模组SC171支持Android、Linux和Windows系统,拓宽智能物联网应用

世界移动通信大会2024期间&#xff0c;广和通宣布&#xff1a;5G智能模组SC171除支持Android操作系统外&#xff0c;还兼容Linux和Windows系统&#xff0c;帮助更多智能终端客户快速迭代产品&#xff0c;拓宽智能化应用覆盖范围。 广和通SC171系列基于高通QCM6490物联网解决方案…

基于Python3的数据结构与算法 - 07 归并排序

一、归并 引入 假设现在的列表分两段有序&#xff0c;如何将其合并成为一个有序列表。 这种操作成为一次归并。 归并的思路 分别对两个列表进行遍历&#xff0c;比较两个列表中的最小值&#xff0c;将更小的取出来。取出后一次进行上操作&#xff0c;直到其中一个列表中的元…

springboot+vue实现Minio文件存储

安装minio 首先点击进入MINIO官网&#xff0c;进行一个minio服务器的下载 下载好了之后在本地磁盘找一个文件夹&#xff0c;把下载的exe放入文件夹&#xff0c;再新建一个文件夹准备存放数据和文件 在当前目录cmd进入控制台&#xff0c;输入代码 minio.exe server data成功后…

内衣洗衣机什么牌子好又便宜?实力非凡机型深度测评

内衣裤这种小件的衣物紧密接触皮肤&#xff0c;更是接触特殊生理部位&#xff0c;所以&#xff0c;内衣裤对卫生标准有着特殊要求&#xff0c;现在很多人都是&#xff0c;把内衣裤放到家里的大型洗衣机和其他衣物混洗&#xff0c;你应该知道大型洗衣机由于长期清洗一些大件的衣…

【Linux】——期末复习题(十一)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

MySQL 8.0.35 企业版比社区版性能高出 25%?

前言 说实话&#xff0c;比较一下这两个 MySQL 发行版&#xff0c;并不会让我很兴奋。这是因为在我关于 MySQL 的记忆中&#xff0c;如果是谈代码库时&#xff0c;两个发行版之间没有真正的区别。 据我所知&#xff0c;企业版的差异在于附加的插件/组件&#xff0c;因此除非您…

简单版 git快速上手使用 clone项目 新建/切换分支 提交修改

Git是一个广泛使用的版本控制系统&#xff0c;允许多个用户跟踪文件的更改&#xff0c;并协作开发项目。 首先确定自己电脑已经安装了git&#xff0c;具体安装步骤请查找教程&#xff0c;应该不难。 以windows电脑为例&#xff0c;安装完后在搜索栏搜索git会出现 先解释一下这…

C# OpenVINO Nail Seg 指甲分割 指甲检测

目录 效果 模型信息 项目 代码 数据集 下载 C# OpenVINO Nail Seg 指甲分割 指甲检测 效果 模型信息 Model Properties ------------------------- date&#xff1a;2024-02-29T16:41:28.273760 author&#xff1a;Ultralytics task&#xff1a;segment version&#…

【GitHub】修改默认分支

GitHub的默认分支为main&#xff0c;但我们常常习惯使用master作为默认分支&#xff0c;那在GitHub上如何将master修改为默认分支呢&#xff1f; 全局修改 点击头像&#xff0c;选择菜单栏中的设置 输入master作为默认分支&#xff0c;然后执行updating即可&#xff01; 单项…

智能指针知识点归纳

3.3 智能指针 3.3.1 RAII 和 智能指针实现 智能指针使用RAII 技术将普通的指针封装为一个栈对象&#xff0c;当栈对象的生存周期结束后&#xff0c;会在析构函数中释放掉申请的内存&#xff0c;从而防止内存泄漏。 智能指针的实现&#xff1a; template <typename T>…

springboot+vue实现oss文件存储

前提oss准备工作 进入阿里云官网&#xff1a;阿里云oss官网 注册 搜OSS&#xff0c;点击“对象存储OSS” 第一次进入需要开通&#xff0c;直接点击立即开通&#xff0c;到右上角AccessKey管理中创建AccessKey&#xff0c;并且记住自己的accessKeyId和accessKeySecret&#…

【Unity】构建简单实用的年份选择器(简单原理示范)

在许多应用程序和游戏中&#xff0c;年份选择是一个常见的需求。无论是在日历应用程序中查看事件&#xff0c;还是在历史类游戏中选择时间段&#xff0c;年份选择器都是用户体验的重要组成部分&#xff0c;下面实现一个简易的年份选择器。 一、效果预览&#xff1a; 目录 一、…

python读写查询mysql数据库

我的免费云服务器&#xff0c;阿贝云数据库操作方法 一、pymysql简介pymysql是一个纯Python编写的MySQL客户端库&#xff0c;用于连接和操作MySQL数据库。它实现了Python DB API v2.0规范&#xff0c;提供了与MySQL服务器进行通信所需的所有基本功能。通过pymysql&#xff0c;开…