【一起學習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.pswp.cn/news/719208.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719208.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719208.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CGI中使用Cookie

文章目錄 CGI中使用Cookiecookie的語法設置Cookie獲取Cookie檢索Cookie信息文件上傳實例1. 創建HTML表單2. 編寫Python腳本處理上傳 文件下載對話框 CGI中使用Cookie 在CGI&#xff08;Common Gateway Interface&#xff09;中使用Cookie涉及設置和獲取由Web服務器發送到瀏覽器…

java導出多個xml文件的壓縮zip

代碼&#xff1a; // 設置響應頭response.setCharacterEncoding("UTF-8");//設置響應的字符編碼為UTF-8response.setContentType("application/octet-stream");//設置響應的內容類型為二進制流&#xff0c;通常用于文件下載。response.setHeader("Con…

解釋一下前端框架中的虛擬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. 將…

【百度】B端數據中臺組_大數據研發工程師(J68899)

北京市技術3人2023-12-14 工作職責&#xff1a; 負責百家號和Feed相關大數據的基礎建設負責數倉引擎、Spark底層的優化和基礎建設為百度系APP相關業務分析及策略優化提供大數據支持參與百度系APP日志數據架構開發和APP端性能分析平臺建設 職責要求&#xff1a; 本科及以上學…

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數組里,讓之前匹配過的信息指…

我的單片機入門之旅

我的單片機入門之旅 前言 單片機作為現代電子技術的重要組成部分&#xff0c;廣泛應用于各個領域。而作為一個初學者&#xff0c;我對單片機一無所知。但是&#xff0c;通過不斷的學習和實踐&#xff0c;我逐漸掌握了單片機的基本概念和使用方法。在我的單片機入門之旅中&…

【每日前端面經】2024-03-03

題目來源: 牛客 說說你對Vue3的理解&#xff1f; Vue2面對對象編程&#xff0c;Vue3函數時編程對TS支持的更好選項式API替代組合式API響應式原理由Object.defineProperty變為Proxy支持template中存在多個根節點重寫虛擬DOM增加setup修飾符支持tree-shaking&#xff0c;減小體…

代碼隨想錄算法訓練營(動態規劃10,11 股票問題)| 121. 買賣股票的最佳時機 122.買賣股票的最佳時機II

動態規劃10 動態規劃5步曲&#xff0c;個人感覺應該加一步狀態分析 狀態分析&#xff1a; 列出所有的狀態&#xff0c;將狀態歸納后定義dp數組狀態轉移&#xff0c;狀態怎么轉移也就是遞推公式是什么 買賣股票的動規五部曲分析如下&#xff1a; 1 確定dp數組&#xff08;d…

pytorch中的可學習查找表實現之nn.Embedding

假設我們需要一個查找表&#xff08;Lookup Table&#xff09;&#xff0c;我們可以根據索引數字快速定位查找表中某個具體位置并讀取出來。最簡單的方法&#xff0c;可以通過一個二維數組或者二維list來實現。但如果我希望查找表的值可以通過梯度反向傳播來修改&#xff0c;那…

上傳項目的全部依賴到maven私有倉庫-nexus

背景 項目之前的私有倉庫不能使用了&#xff0c;本地倉庫可以&#xff0c;但是一旦clean就沒了&#xff0c;所以在本地有依賴的時候可以自己搭建一個maven私有倉庫然后將依賴全部上傳上去 搭建&#xff1a;使用docker-compose方式搭建 docker-compose文件 version: "3…

C語言入門到精通之練習47:一個偶數總能表示為兩個素數之和。

題目&#xff1a;一個偶數總能表示為兩個素數之和。 程序分析&#xff1a;我去&#xff0c;這是什么題目&#xff0c;要我證明這個問題嗎&#xff1f;真不知道怎么證明。那就把一個偶數串聯成兩個素數吧。 實例 #include<stdio.h> #include<stdlib.h> int Isprime…

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、什么是兼容性測試?兼容性測試側重哪些方面? 參考答案: 兼容測試主要是檢查軟件在不同的硬件平臺、軟件平臺上…