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

本文介绍了如何在地理数据库中使用属性规则,特别是计算规则来自动化字段计算、属性映射、几何属性计算及地块容积率等,通过实例展示了如何设置和应用计算规则以改善数据编辑过程的体验和数据完整性。
摘要由CSDN通过智能技术生成

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

规划GIS会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值