【一起学习Arcade】(5):属性规则实例_计算规则

news2024/10/23 2:43:40

属性规则可改善地理数据库数据集的编辑体验并提高数据完整性。

这些规则均为用户定义的规则,可用于自动填充属性、在编辑操作期间限制无效编辑,以及对现有要素执行质量保证检查。

属性规则分为3类:计算、约束和验证。

这一篇介绍计算规则,计算规则可用于对字段值进行自动计算。


一、如何打开属性规则

属性规则开启方法:点击图层后,在【数据】标签下,点击【属性规则】,打开属性规则对话框:

选择【计算】标签,点击【添加规则】,选择【添加实时计算规划】。(批处理计算规则待研究):

打开规则栏后,输入要计算的字段、表达式以及触发器这3个参数,其它参数可以随意填或不填。

点击【保存】,正常情况下无法保存,可以看到这样的错误:

原因是少了全局ID。刚开始我也很懵,后来在系统工具里找了个【添加全局ID】的工具,直接给它用上:

工具执行后,查看属性表,多了一个【GlobalID】字段,再保存属性规则就不会报错了。

后面最主要的工作就是写表达式了,下面看几个有意思的例子。


二、计算规则示例

计算规则的触发器都设置为【插入+更新】。

1、简单计算

最简单的字段计算,比如目标字段根据另外两个字段的值进行赋值:

$feature.DLBM + $feature.DLMC

修改DLBM或DLMC时,目标字段会自动更新:

2、字段属性映射

比如说在一个字段里输入DLBM,结果字段里生成DLMC。

这需要你准备一个【DLBM和DLMC】一一对应的字典,也就是属性映射表,写到代码里:

(对照表我只写了一小段示例而已,需要自行补充完整)

var key = $feature.DLBM
var dic = Dictionary('0101', '水田',  '0102', '水浇地', '0103', '旱地');
if(HasKey(dic, key)){
   return dic[key]
}

 修改DLBM时,DLMC会自动更新:

3、计算要素的属性

Arcade可以直接计算出要素的的一些属性,基本等效于【计算几何属性】工具。

这个示例计算面要素的部件数,是否有Z值、M值。其它属性的计算类似。

// 部件数
var partCount = Count(Geometry($feature)["rings"])
// Z、M值
var hasZ = Decode(Geometry($feature)["hasZ"],true,"有Z值","无Z值")
var hasM = Decode(Geometry($feature)["hasM"],true,"有M值","无M值")
return `部件数:${partCount},${hasZ},${hasM}`

在编辑中修改或创建要素时,目标字段会自动更新:

4、计算地块容积率

一般情况下,要计算地块容积率需要地块面积以及地块范围内建筑的总面积,这2个数据位于2个要素内,正常做法是用【空间连接】工具将2个要素关联起来再计算。

Arcade可以直接引用同一数据库的数据,这就意味着可以在地块图斑上直接计算。

首先准备数据:

在表达式中输入:

// 获取建筑要素
var features = FeatureSetByName($datastore, "建筑", ["建筑面积"], true);
// 获取相关部分
var int_geo = Intersects($feature,features);
// 计算相交部分总建筑面积【shape_area*层数】
var total_area = Sum(int_geo,"建筑面积")
// 计算容积率
var f = round(total_area/$feature.Shape_Area,2)
return f

在编辑中修改或创建要素时,目标字段会自动更新:

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

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

相关文章

光谱整形1

华为张德江:下一代光传送网将走向400G80波WDM系统_通信世界网 (cww.net.cn) 张德江指出,400G WDM系统具有三大基本特征:支持400G80波,单纤32T超大容量,传输距离与100G相当;支持32维以上的光交叉&#xff1…

为什么不从独立服务器中转向云或其他方案呢?

传统的专用服务器,如香港服务器租赁、重庆服务器租赁等,是最强大、最稳定的业务托管类型之一。您将获得比任何其他托管计划更多的管理权限和卓越的性能,并且您可以控制整个服务器上的几乎所有内容。 当然,专用服务器也是在线业务…

昏暗场景增强-低照度增强-弱光增强(附代码)

引言 随着现代科技的发展,图像采集设备已经渗透到生活的方方面面,然而在昏暗场景、低照度或弱光条件下,图像的质量往往受到严重影响,表现为亮度不足、对比度低下、色彩失真以及细节丢失等问题。这类图像对于人眼识别和计算机视觉…

大数据冷热分离方案

数据冷热分离方案 1、背景 ​ 随着业务的发展,在线表中的数据会逐渐增加。常规业务都有冷热数据现象明显的特性(需要访问的都是近期产生的热数据;时间久远的冷数据出于备份、备案溯源等诉求会进行在线保留)。在业务表数据 量可控…

自动化测试之web自动化(Selenium)

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

基础小白快速入门并行计算------>我们为什么要学习并行计算

什么是并行计算? 随着计算机的不断发展,我们处理的数据不断变多,需要更大得到处理能力、我们希望计算机有着更大更强壮的计算能力,由于cpu的运行能力有限,我们便想到了将多个cpu进行串联计算问题,这也就是我…

第五十二回 戴宗二取公孙胜 李逵独劈罗真人-飞桨AI框架安装和使用示例

吴用说只有公孙胜可以破法术,于是宋江请戴宗和李逵去蓟州。两人听说公孙胜的师傅罗真人在九宫县二仙山讲经,于是到了二仙山,并在山下找到了公孙胜的家。 两人请公孙胜去帮助打高唐州,公孙胜说听师傅的。罗真人说出家人不管闲事&a…

接口测试,后端接口还没开发完,如何测?解决看这一篇就够了......

前言 在测试的时候经常会碰到后端开发工程师的接口还没有开发完成,但是测试任务已经分配过来。没有接口怎么测试呢? 测试人员可以通过 mock server 自己去造一个接口来访问。mock server 可用于模拟真实的接口。收到请求时,它会根据配置返回…

【24春招/简历】如果技术和学历不行,如何包装自己在春招中占得先机?突出你的亮点!

面试讲什么 学历: 行情 要美化(吹牛) 面试很好 技术能力 让面试官知道你会哪些技术,尽量细节 “熟悉spring” > ioc流程,Bean的生命周期,循环依赖,常见注解 熟悉redis > 缓存穿透&…

2024年AI辅助研发:科技遇上创意,无限可能的绽放

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 随着人工智能技术的持续突破与深度融合,2024年AI辅助研发正以前所未有的速度和规模,引领着科技界和工业界…

【开源】JAVA+Vue.js实现创意工坊双创管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员端2.2 Web 端2.3 移动端 三、系统展示四、核心代码4.1 查询项目4.2 移动端新增团队4.3 查询讲座4.4 讲座收藏4.5 小程序登录 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的创意工坊双创管理…

个人项目介绍4:三维园区篇

个人项目介绍: 地图铁路线路篇 地球卫星篇 火车站篇 三维园区篇 项目需求: 1.按比例全景显示三维园区 2.精确显示园区内设备设施 3.实时显示设备报警信息 4.显示园区内摄像监控设备,并可点击显示监控视频流 5.显示园区内的重大危险源和风险分布 …

Ansible 基础入门

2)Ansible 介绍 Ansible 基本概念 Ansible 是一种自动化运维工具,基于 Paramiko 开发的,并且基于模块化工作,Ansible 是一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,它是基于 Python 语言&#xf…

tomcat搭建个人博客 实现动静分离

jar包相关 .war:WebApp打包,类zip格式文件,通常包括一个应用的所有资源,比如jsp,html,配置文件等 .jar:EJB类文件的打包压缩类zip格式文件,,包括很多的class文件, 网景公司发明 .rar:资源适配器类打包文件,目前已不常…

6个维度分析实时渲染和Webgl技术异同

在日常交流中,对Webgl技术熟悉的合作伙伴,在初次了解实时渲染技术时,都会问二者之间的异同。目前很多要求B/S架构的项目,很多在用webgl技术路线,而且这个方案在行业里比较普,业主方对这个也比较熟悉&#x…

T01类加载机制

类加载机制 类加载运行全过程 当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM public class Math {public static final int initData 666;public static User user new User();public int compute() {int a 1;int b …

泛型 --java学习笔记

什么是泛型 定义类、接口、方法时&#xff0c;同时声明了一个或者多个类型变量&#xff08;如&#xff1a;<E>&#xff09;&#xff0c;称为泛型类、泛型接口&#xff0c;泛型方法、它们统称为泛型 可以理解为扑克牌中的癞子&#xff0c;给它什么类型它就是什么类型 如…

1.BOM-获取元素(获取元素、修改属性)

web Api基本认知 作用&#xff1a;通过JS去操作html页面和浏览器(实现浏览器中的某些功能) 分类&#xff1a; DOM(网页)&#xff1a;Document Object Model(文档对象模型) BOM(浏览器)&#xff1a;Borwser Object Model(浏览器对象模型) DOM DOM树 将网页中标签的关系以树状…

Java定时调度:Timer类和TimerTask类

Java提供了多种方式来执行定时任务&#xff0c;其中使用Timer类和TimerTask类是一种简单而有效的方法。这篇教程将介绍如何使用Java的Timer类和TimerTask类来实现定时调度。 1. Timer类 Timer类用于安排指定的任务按指定的时间执行。它可以执行一次性任务&#xff0c;也可以按…

详解事件循环机制

浏览器最主要的进程 &#xff1a; 渲染主线程 如何理解JS的异步 任务没有优先级&#xff0c;但消息队列有优先级 阐述一下JS的事件循环