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

2024-03-01 02:12

本文主要是介绍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 "饿死了"

这篇关于ArcGIS专用语言:Arcade详细介绍(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/760859

相关文章

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

Springboot 中使用Sentinel的详细步骤

《Springboot中使用Sentinel的详细步骤》文章介绍了如何在SpringBoot中使用Sentinel进行限流和熔断降级,首先添加依赖,配置Sentinel控制台地址,定义受保护的资源,... 目录步骤 1: 添加 Sentinel 依赖步骤 2: 配置 Sentinel步骤 3: 定义受保护的