【一起学习Arcade】(6):属性规则实例_约束规则和验证规则

一、约束规则

约束规则用于指定要素上允许的属性配置和一般关系。

与计算规则不同,约束规则不用于填充属性,而是用于确保要素满足特定条件。

简单理解,约束规则就是约束你的编辑操作在什么情况下可执行。

如果出现不符合规则的操作,就会报错,操作中断。

1、禁止删除特定的要素

如果你想控制你的编辑操作,避免某些图斑被误删除,就可以设定这样的规则。

比如在用地图斑中,我不想【耕地】被删除,可以将触发器选择为【删除】,在表达式中输入:

if ($feature.DLMC != "耕地")
{return true;
}

删除的图斑如果【DLMC】的字段值为“耕地”,就会弹出错误。

2、限制编辑内容在特定范围内

比如数据库里有2个图层,(因为代码要通过数据库这一共同联系作为媒介,所以2个图层一定要在同一数据库内)。

限制设施点必须在用地范围的边界内。

将触发器选择为【插入、更新】,在表达式中输入:

// 从同一个数据库里找到“用地范围”
var fw = FeatureSetByName($datastore, "用地范围", null, false);
// 用地范围和当前编辑的设施点相交,如果结果不为空(数量大于0),就给予通过。
// 否则就报错
return Count(Intersects(fw, Geometry($feature))) > 0

新创建的设施点如果在用地范围外,就会弹出错误。

3、禁止碎面

可以通过限制图斑的面积来禁止碎面的产生。

将触发器选择为【插入、更新】,在表达式中输入:

// 获取图斑面积
var mj = area(geometry($feature));
// 如果面积大于1平方米,就通过
if(mj>1)return true

新创建或修改的图斑面积小于1平方米,就会弹出错误:

4、禁止超短线

通过计算相邻点之间的距离,可以禁止画出超短线。

将触发器选择为【插入、更新】,在表达式中输入:

// 获取环
var rings = geometry($feature)["rings"]
// 逐环处理
for(var i in rings){// 环内每个点处理for(var j=0; j < count(rings[i])-1; j++) {// 算距离  var dis = Distance(rings[i][j],rings[i][j+1],'meters')if(dis>1)return true}
}

创建或修改的时候,如果边界点之间的距离小于1米,就会弹出错误:

5、禁止尖锐角

通过计算相邻3个点之间的角度,可以禁止画出尖锐角。

将触发器选择为【插入、更新】,在表达式中输入:

// 获取环
var rings = geometry($feature)["rings"]
// 逐环处理
for(var i in rings){// 环内每个点处理for(var j=0; j < count(rings[i])-2; j++) {// 算角度  var ang = Angle(rings[i][j],rings[i][j+1],rings[i][j+2])// 保证在180度内if(ang>180)ang = 360-ang// 小于20度就报错if(ang<20)return false}
}
return true

这里我省略了计算最后一个点的情况,要计算的话,需要把第一个点加到列表末尾,有兴趣的可以自己试试。

创建或修改的时候,如果边界点的角度小于20度,就会弹出错误:


二、验证规则

验证规则用于验证数据集中的错误。根据规则对现有要素进行评估,如果违反规则,则会创建错误要素。

表达式写法和计算、约束差不多。

这部分软件预制了许多规则,点击即用型规则,可以看到如下:

但是我试用过后,发现过程繁琐,而且有疑似bug,总之不太好用,有兴趣的可以自行尝试。

后面有空可以专门出一篇关于属性规则使用步骤的文章。

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

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

相关文章

解释一下前端框架中的虚拟DOM(virtual DOM)和实际DOM(real DOM)之间的关系。

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

leetcode日记(36)全排列

想思路想了很久……思路对了应该会很好做。 我的思路是这样的&#xff1a;只变化前n个数字&#xff0c;不断增加n&#xff0c;由2到nums.size()&#xff0c;使用递归直到得到所有结果 代码如下&#xff1a; class Solution { public:vector<vector<int>> permut…

正信法律:借款纠纷的民事起诉状怎么写

在借款纠纷中&#xff0c;当协商无果时&#xff0c;诉诸法律成为债权人追回债务的有效途径。而民事起诉状作为启动诉讼程序的法律文书&#xff0c;其撰写质量直接关系到案件的受理与判决。本文旨在简明扼要地阐述如何撰写一份规范的借款纠纷民事起诉状。 起诉状需包含以下几个关…

阿克曼转向车型导航末段位姿调整控制

1目标 分析RPP算法时控制器算法学习1-RPP受控纯追踪算法发现,在终点时如果角度还有较大偏差,该算法无法进行很好的调整,故开始尝试在末端接近目标点时,用自己的控制算法去调整位姿,姑且命名为TEA算法(Target-End-Adjust Algorithm for Ackermann) 2控制思路 step1. 将…

C# Onnx segment-anything 分割万物 一键抠图

目录 介绍 效果 模型信息 sam_vit_b_decoder.onnx sam_vit_b_encoder.onnx 项目 代码 下载 C# Onnx segment-anything 分割万物 一键抠图 介绍 github地址&#xff1a;https://github.com/facebookresearch/segment-anything The repository provides code for runn…

设计模式(十二)享元模式

请直接看原文: 原文链接:设计模式&#xff08;十二&#xff09;享元模式-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- 享元模式定义 享元模式是结构型设计模式的一种&am…

Kubernetes-1

学习Kubernetes第一天 k8s-11、什么是Kubernetes2、配置Kubernetes2.1、准备三台全新的虚拟机2.2、关闭防火墙和SElinux2.3、修改主机名2.4、升级操作系统(三台一起操作)2.5、配置主机hosts文件&#xff0c;相互之间通过主机名互相访问2.6、配置master和node之间的免密通道2.7、…

KMP算法和Manacher算法

KMP算法 KMP算法解决的问题 KMP算法用来解决字符串匹配问题: 找到长串中短串出现的位置. KMP算法思路 暴力比较与KMP的区别 暴力匹配: 对长串的每个位,都从头开始匹配短串的所有位. KMP算法: 将短字符串前后相同的部分存储在 n e x t next next数组里,让之前匹配过的信息指…

上传项目的全部依赖到maven私有仓库-nexus

背景 项目之前的私有仓库不能使用了&#xff0c;本地仓库可以&#xff0c;但是一旦clean就没了&#xff0c;所以在本地有依赖的时候可以自己搭建一个maven私有仓库然后将依赖全部上传上去 搭建&#xff1a;使用docker-compose方式搭建 docker-compose文件 version: "3…

Python算法100例-3.1 回文数

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.问题拓展7.巧用字符串技巧 1&#xff0e;问题描述 打印所有不超过n&#xff08;取n<256&#xff09;的其平方具有对称性质的数&#xff08;也称回…

在国内如何申请US,visa卡?

随着跨境与AI的发展大家对美国虚拟卡的需求也越来越多&#xff0c;比如说亚马逊、ebay、Etsy、ChatGPTPLUS、midjourney、POE等等软件以及海淘的需要&#xff0c;所以我们需要用到美国虚拟卡的场景就越来越多 如何获得一张US 虚拟信用卡&#xff1f; 方法很简单&#xff0c;点…

一线大厂软件测试面试题及答案解析,2024最强版...

【软件测试面试突击班】2024吃透软件测试面试最全八股文攻略教程&#xff0c;一周学完让你面试通过率提高90%&#xff01;&#xff08;自动化测试&#xff09; 1、什么是兼容性测试?兼容性测试侧重哪些方面? 参考答案: 兼容测试主要是检查软件在不同的硬件平台、软件平台上…

CNAN知识图谱辅助推荐系统

CNAN知识图谱辅助推荐系统 文章介绍了一个基于KG的推荐系统模型&#xff0c;代码也已开源&#xff0c;可以看出主要follow了KGNN-LS 。算法流程大致如下&#xff1a; 1. 算法介绍 算法除去attention机制外&#xff0c;主要的思想在于&#xff1a;user由交互过的item来表示、i…

OpenShift AI - 部署并使用 LLM 模型

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.15 RHODS 2.7.0 的环境中验证 文章目录 安装 OpenShift AI 环境安装 Minio 对象存储软件配置 Single Model Serving 运行环境创建项目和 Workbench准备模型和配置 Model Server访问 LLM 模…

DCTNet

DCTNet http://giantpandacv.com/academic/%E7%AE%97%E6%B3%95%E7%A7%91%E6%99%AE/%E9%A2%91%E5%9F%9F%E4%B8%AD%E7%9A%84CNN/CVPR%202020%20%E5%9C%A8%E9%A2%91%E5%9F%9F%E4%B8%AD%E5%AD%A6%E4%B9%A0%E7%9A%84DCTNet/ 一个对输入图像进行频域转换和选择的方法&#xff0c;达到…

python实现手机号归属地查询

手机上突然收到了某银行的短信提示&#xff0c;看了一下手机的位数&#xff0c;正好是11位。我一想&#xff0c;这不就是标准的手机号码吗&#xff1f;于是一个想法涌上心头——用python的库实现查询手机号码归属地查询自由。 那实现的效果如下&#xff1a; 注&#xff1a;电…

2.3_3 进程互斥的硬件实现方法

文章目录 2.3_3 进程互斥的硬件实现方法&#xff08;一&#xff09;中断屏蔽方法&#xff08;二&#xff09;TestAndSet指令&#xff08;三&#xff09;Swap指令 总结&#xff08;四&#xff09;互斥锁 2.3_3 进程互斥的硬件实现方法 学习提示&#xff1a; 1.理解各方法的原理 …

Python从0到100(二):Python语言介绍及第一个Pyhon程序

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

springcloud:3.3测试重试机制

服务提供者【test-provider8001】 Openfeign远程调用服务提供者搭建 文章地址http://t.csdnimg.cn/06iz8 相关接口 测试远程调用&#xff1a;http://localhost:8001/payment/index 服务消费者【test-consumer-resilience4j8004】 Openfeign远程调用消费者搭建 文章地址http:/…

UNIapp实现局域网内在线升级

首先是UNIapp 生成apk 用Hbuilder 进行打包 可以从网站https://www.yunedit.com/reg?gotocert 使用自有证书&#xff0c;目测比直接使用云证书要快一些。 发布apk 网站 用IIS发布即可 注意事项中记录如下内容 第一、需要在 iis 的MiMe 中添加apk 的格式&#xff0c;否则无法…