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

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

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

属性规则分为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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HOOPS Communicator对3D大模型轻量化加载与渲染的4种解决方案

今天给大家介绍一些关于3D Web轻量化引擎HOOPS Commuicator的关键概念,这些概念可以帮您在HOOPS Communicator流缓存服务器之上更好地构建您自己的模型流服务器。如果您是有大型数据集,那么,使用流缓存服务器可以极大地帮助您最大限度地减少内…

PostgreSQL10.21与PostGIS3.2.3安装文档

背景: 公司需要在一个服务器上装一个pg数据库,要求和其余服务器版本尽量保持一致,临时拉我装一下 特别注意: 需要注意的地方就是因为postgresql数据库是一个空间库,gis行业很多都会使用这个数据库,我们安…

深入Kafka client

分区分配策略 客户端可以自定义分区分配策略, 当然也需要考虑分区消费之后的offset提交, 是否有冲突。 消费者协调器和组协调器 a. 消费者的不同分区策略, 消费者之间的负载均衡(新消费者加入或者存量消费者退出), 需要broker做必要的协调。 b. Kafka按照消费组管理消费者, …

HttpClient—详解、代码演示

简介:HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议,即可以通过HttpClient可以再Java中构建和发送Http请求。 …

将jar包打包为docker镜像

此记录一下将springboot项目的jar打包成docker镜像记录错误点。 1.将springboot项目打包成jar包 参考博客 : springboot项目打包成jar_springboot打包成jar-CSDN博客 具体打包步骤参考他的如何打包: 使用IDEA进行打包。但是我需要在我的springboot的pom.xml文件里面配置如下插…

javascript实现的星座查询

今天在这个网站http://xzxys.wiicha.com/看到查询星座幸运色的效果,想研究一下代码,结果右键禁用。后来参考了一下别人的代码,琢磨着先实现了一下星座查询的功能,输入月份和日期四位数后,可以查询属于哪个星座&#xf…

如何做代币分析:以 INJ 币为例

如何做代币分析:以 INJ 币为例 作者: lesleyfootprint.network 编译:cicifootprint.network 数据源:INJ 代币仪表板 (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作…

网络学习:MPLS技术基础知识

目录 一、MPLS技术产生背景 二、MPLS网络组成(基本概念) 1、MPLS技术简介:Multiprotocol Lable Switching,多协议标签交换技术 2、MPLS网络组成 三、MPLS的优势 四、MPLS的实际应用 一、MPLS技术产生背景 1、IP采用最长掩码…

跨地域传文件时 面临的安全、效率等问题要如何解决?

近年来,企业在异国、异地设立分支机构的越来越多,在日常经营中,企业总部和分支机构间存在平行、垂直及互相交叉的管理模式和业务往来需求,因此,大型企业存在必然的跨地域传文件场景,比如跨地理域文件交换、…

6个常见的动态内存的错误和动态内存经典笔试题

和黛玉学编程..........> 这篇的代码对应知识点就在上一篇啦 常见的动态内存的错误 对NULL指针的解引用操作 void test() { int *p (int *)malloc(INT_MAX/4); *p 20; free(p); } 如果P的值是空指针就会有问题,所以一般都会先进行判断 对动态开辟空间的越…

【无刷电机学习】光耦HCNR200基本原理及应用(资料摘抄)

【仅作自学记录,不出于任何商业目的。如有侵权,请联系删除,谢谢!】 本文摘抄翻译自: https://docs.broadcom.com/wcs-public/products/application-notes/application-note/331/6/av02-1333en-an_5394-16jul10.pdfhtt…

【leetcode】反转字符串 双指针

/*** param {character[]} s* return {void} Do not return anything, modify s in-place instead.*/ var reverseString function(s) {let start0;let ends.length-1;while(start<end){[s[start],s[end]][s[end],s[start]];start;end--;}return s;};双指针&#xff0c;一头…

ST32/GD32——UART串口通信

芯片选型 Ciga Device — GD32F470系列 串口通信 串口通信指的是通过串行通信接口进行数据传输的通信方式&#xff0c;通常用于短距离、低速率的数据传输。 串口通信可以使用不同的串行通信协议和接口&#xff0c;常见的串口通信协议有UART、USART、RS-232、RS-485、SPI、I…

Mybatis_plus-基础

一、简介 1.概述 文档地址&#xff1a;https://baomidou.com/ 概述&#xff1a;MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window) 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提…

解密Lawnchair:打造个性化极致的Android桌面体验

解密Lawnchair&#xff1a;打造个性化极致的Android桌面体验 1. 简介 Lawnchair是一款知名的Android桌面定制工具&#xff0c;旨在为用户提供个性化极致的桌面体验。作为一个开源项目&#xff0c;Lawnchair融合了简洁、灵活和强大的特点&#xff0c;让用户能够自由定制其Andro…

Java基于springboot的课程作业管理系统

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;课程作业管理系统当然也不能排除在外。课程作业管理系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法…

1.线程池的实现机制

为什么使用线程池&#xff1f; 在处理并发问题时&#xff0c;倘若我们一个一个创建线程池再进行线程池的销毁&#xff0c;不但浪费资源还增加了上下文切换的开销。线程池主要是以空间来换取时间。 如图所示给任务队列分配在线程池里线程。 线程池用到的模式是半同步、半异步模…

机器学习 | 四大常用机器学习Python库介绍

今天这篇我们介绍下Python中常用的机器学习库(机器学习、深度学习啥的&#xff0c;小编还是建议使用Python进行建模编写哈)&#xff0c;也算是本公号机器学习的第一篇推文&#xff0c;主要内容如下&#xff1a; 机器学习常用四大Python库 关于机器学习的我想说的话 所有完整代…

mysql高可用架构设计

一、主从架构 1.主从复制 1.主从复制原理 Mysql的主从复制中主要有三个线程&#xff1a; master&#xff08;binlog dump thread&#xff09;、slave&#xff08;I/O thread 、SQL thread&#xff09; &#xff0c;Master一条线程和Slave中的两条线程。 整体上来说&#xff…

如何合理布局子图--确定MATLAB的subplot子图位置参数

确定MATLAB的subplot子图位置参数 目录 确定MATLAB的subplot子图位置参数摘要1. 问题描述2. 计算过程2.1 确定子图的大小和间距2.2 计算合适的figure大小2.3 计算每个子图的position数据 3. MATLAB代码实现3.1 MATLAB代码3.2 绘图结果 4. 总结 摘要 在MATLAB中&#xff0c;使用…