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

news2024/11/19 5:41:16

一、约束规则

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

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

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

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

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.coloradmin.cn/o/1492032.html

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

相关文章

Hack The Box-Bizness

目录 信息收集 nmap dirsearch WEB Get shell 提权 get user flag get root flag 信息收集 nmap 端口扫描┌──(root㉿ru)-[~/kali/hackthebox] └─# nmap -p- 10.10.11.252 --min-rate 10000 -oA port Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-04 1…

链表哨兵例子

哨兵链表例子_根据值删除链表 package linklist;public class leetcode203 {public static void main(String[] args) {ListNode listNode new ListNode(1,new ListNode(2,new ListNode(3)));ListNode listNode1 removeElements(listNode,2);System.out.println(listNode1);…

【车辆安全管理】强制降速系统

在很久之前&#xff0c;我们就讨论过车辆强制降速系统的重要性&#xff0c;即使驾驶人故意撞人&#xff0c;也难以做到&#xff0c;因为强制降速系统会控制车辆的速度。强降速系统可以通过多种传感器进行智能分析&#xff0c;即使降速。 汽车的Robot化概念-CSDN博客 最近发生…

【Web】浅浅地聊JDBC java.sql.Driver的SPI后门

目录 SPI定义 SPI核心方法和类 最简单的SPIdemo演示 回顾JCBC基本流程 为什么JDBC要有SPI JDBC java.sql.Driver后门利用与验证 SPI定义 SPI&#xff1a; Service Provider Interface 官方定义&#xff1a; 直译过来是服务提供者接口&#xff0c;学名为服务发现机制 它通…

Bootstrap 入门介绍

Bootstrap 是什么 Bootstrap是一个开源的前端框架&#xff0c;旨在帮助开发人员快速构建响应式和移动优先的网站。它由Twitter开发并于2011年开源。Bootstrap提供了一组CSS样式和JavaScript组件&#xff0c;用于创建各种网页元素和交互效果。 Bootstrap 的特点 以下是Bootst…

ES入门八:Mapping的详细讲解

什么是Mapping&#xff1f;**Mapping定义了索引中的文档有哪些字段及其类型、这些字段是如何存储和索引的。**每个文档都是一个字段的集合&#xff0c;每个字段都有自己的数据类型&#xff0c;例如我们定义的books索引&#xff0c;其中有book_id、name等字段。所以Mapping的作用…

Linux运维工具-ywtool默认功能介绍

提示:工具下载链接在文章最后 目录 一.资源检查二.日志刷新三.工具升级四.linux运维工具ywtool介绍五.ywtool工具下载链接 一.资源检查 只要系统安装了ywtool工具,默认就会配置上"资源检查"的脚本资源检查脚本的执行时间:每天凌晨3点进行检查资源检查脚本的检查内容…

阿里云搭建私有docker仓库(学习)

搭建私有云仓库 首先登录后直接在页面搜索栏中搜索“容器镜像服务” 进入后直接选择个人版&#xff08;可以免费使用&#xff09; 选择镜像仓库后创建一个镜像仓库 在创建仓库之前我们先创建一个命名空间 然后可以再创建我们的仓库&#xff0c;可以与我们的github账号进行关联…

网络编程作业day5

将课堂上实现的模型&#xff08;IO多路复用&#xff09;重新自己实现一遍 服务器代码&#xff1a; #include<myhead.h> #define SER_IP "192.168.125.151" //服务器IP #define SER_PORT 8888 //服务器端口号int main(int argc, const char *argv…

首尔之春在线资源最新电影1080p高清

打开下面这个链接就可以看到 首尔之春在线资源最新电影1080p高清 如果链接打不开&#xff0c;就复制下面的网址到浏览器打开 https://www.zhufaka.cn/liebiao/A09504AE3BF8BD06 用阿里云盘下载&#xff0c;下载完成之后&#xff0c;用迅雷播放 首尔之春在线资源最新电影10…

JAVA SE 2.基本语法

1.Java的基本语法 1.基本格式 // 类的修饰包括&#xff1a;public&#xff0c;abstract&#xff0c;final 修饰符 class 类名{程序代码 } 例: public class Test{public static void main(String[] args){System.out.println("hello " "world");} }语法说明…

蓝桥杯——123

123 二分等差数列求和前缀和数组 题目分析 连续一段的和我们想到了前缀和&#xff0c;但是这里的l和r的范围为1e12&#xff0c;明显不能用O(n)的时间复杂度去求前缀和。那么我们开始观察序列的特点&#xff0c;可以按照等差数列对序列进行分块。如上图&#xff0c;在求前10个…

一台服务器,最大支持的TCP连接数是多少?

一个服务端进程最大能支持多少条 TCP 连接&#xff1f; 一台服务器最大能支持多少条 TCP 连接&#xff1f; 一、原理 TCP 四元组的信息&#xff1a;源IP、源端口、目标IP、目标端口。 一个服务端进程最大能支持的 TCP 连接个数的计算公式&#xff1a;最大tcp连接数客户端的IP…

Nodejs 第四十六章(redis持久化)

redis持久化 Redis提供两种持久化方式&#xff1a; RDB&#xff08;Redis Database&#xff09;持久化&#xff1a;RDB是一种快照的形式&#xff0c;它会将内存中的数据定期保存到磁盘上。可以通过配置Redis服务器&#xff0c;设置自动触发RDB快照的条件&#xff0c;比如在指…

达梦数据库QA(一):用户赋予系统权限 Any 时报“授权者没有此授权权限”

问题描述 达梦数据库&#xff0c;给用户赋予系统权限 Any 时报“授权者没有此授权权限” 解决方案 方法 1&#xff1a;在 dm.ini 文件中修改参数 ENABLE_DDL_ANY_PRIV 为 1。 方法 2&#xff1a; 通过以下语句修改参数 ENABLE_DDL_ANY_PRIV。 sp_set_para_value(1,‘ENABLE…

matplotlib——直方图(python)

需求 假设你获取了250部电影的时长&#xff0c;希望统计出这些电影时长的分布状态等信息。 代码 from matplotlib import pyplot as plt import matplotlibmatplotlib.rc("font",family"FangSong")# 初始化数据 a[131, 98, 125, 131, 124, 139, 131, 1…

如何使用公网地址远程访问内网Nacos UI界面查看注册服务

文章目录 1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Plik Nacos是阿里开放的一款中间件,也是一款服务注册中心&#xff0c;它主要提供三种功能&#xff1a;持久化…

day58 异常 IO流

异常 1异常处理机制 编译时错误 运行时错误 代码逻辑错误 2异常类结构图 java.lang.Throwable 所有异常的父类 只有它能剖出异常 java.lang.Error: extends Throwable 程序中的硬件严重问题不需要处理 java.lang.Exception extends Throwable 异常 指出要捕获的处理条件 3异常…

Licky‘s Escape 现已在苹果应用商店上线!

Pixelcraft 隆重推出 Aavegotchi 的首款手机游戏 —— Lickys Escape&#xff01; Lickys_Escape_Launch1_2024--1- 与 Licky 一起潜入 Gotchiverse吧&#xff01;Licky是一只憨厚但勇敢的Lickquidator&#xff0c;但它的任务出了差错。被一群卑鄙的 Gotchis 抓走后&#xff0c…

户外、春衣、养发……阿里妈妈经营指南揭秘38消费热点

在春天这个万象更新的季节&#xff0c;春天生意也在升温。 内容平台上&#xff0c;#成都醉美樱花季 #春天穿什么 互动增长率分别达到了156倍、252倍&#xff1b;#初春氛围感穿搭 #春游记 的互动增长率分别达到了77倍、24倍……“赏花”“穿搭”“居家锻炼”等和春天有关的消费…