ArcGIS Pro 加载项(6)——样式符号属性对调

news2024/9/20 16:24:58

之前是已经通过Python构建脚本工具,实现了stylx文件的符号属性的对调。

ArcGIS Pro脚本工具(12)——样式符号属性对调_学学GIS的博客-CSDN博客为地类做样式符号匹配经常碰到这样的问题:属性表里面只有地类代码,但是做样式文件的时候名称框里面填的是地类名称,或者是反过来,这都匹配不到一块嘛。如果我把地类名称、地类代码分别做到这几处,需要用地类代码匹配就把地类代码换到符号的名称属性,需要地类名称匹配就把地类名称换到符号的名称属性,岂不美哉?Python中用sqlite3模块对.stylx样式文件进行读写,考虑到这种对调操作将会是多次的,所以做成Python脚本工具。Pro里观察一下样式符号可以发现,符号可修改的属性有名称、标签、键3处。.........https://blog.csdn.net/baidu_28157641/article/details/126309203

上面的脚本工具有一些不足

  1. 不能单独选择样式中的某一类符号进行属性对调,而是进行点、线、面等所有符号的属性对调。
  2. 进行属性对调后需要手动刷新样式。

为了修补这些不足,再考虑到这个功能适合置于系统菜单中,所以琢磨了一下怎么通过SDK构建add-in来实现这个功能。

样式符号属性对调 加载项

效果演示

以三调样式里的面符号为例,将符号的名称属性与类别属性进行对调

主要代码

        private void Button_apply_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var styleList = Project.Current.GetItems<StyleProjectItem>();
                StyleProjectItem style = styleList.First(style => (style.Name == ComboBox_StyleList.Text));

                var cate = ComboBox_Categories.Text switch
                {
                    "点" => StyleItemType.PointSymbol,
                    "线" => StyleItemType.LineSymbol,
                    "面" => StyleItemType.PolygonSymbol,
                    "文本" => StyleItemType.TextSymbol,
                    _ => StyleItemType.PolygonSymbol,
                };

                var att1 = ComboBox_Attri1.Text switch
                {
                    "名称" => "Name",
                    "标签" => "Tags",
                    "类别" => "Category",
                    "键" => "Key",
                    _ => "",
                };

                var att2 = ComboBox_Attri2.Text switch
                {
                    "名称" => "Name",
                    "标签" => "Tags",
                    "类别" => "Category",
                    "键" => "Key",
                    _ => "",
                };

                QueuedTask.Run(() =>
                {
                    IList<SymbolStyleItem> symbols = null;
                    

                    symbols = style.SearchSymbols(cate, "");


                    foreach (SymbolStyleItem symbol in symbols)
                    {
                        
                        var attValue1 = symbol.GetType().GetProperty(att1).GetValue(symbol, null);
                        var attValue2 = symbol.GetType().GetProperty(att2).GetValue(symbol, null);

                        symbol.GetType().GetProperty(att1).SetValue(symbol, attValue2);
                        symbol.GetType().GetProperty(att2).SetValue(symbol, attValue1);

                        style.UpdateItem(symbol);
                    }
                    style.Refresh();
                });
            }
            catch(Exception)
            {
                MessageBox.Show("未完成");
            }
        }

工具下载

请私信联系

工具说明

  1. 只适用于ArcGIS Pro3.0及之后的版本,如需在Pro2.x版本中使用,需要使用代码重新构建。
  2. 建议不要将键值与其他属性对调,如果必须这样对调,请确保与它对调的属性具有唯一值。

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

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

相关文章

win10+VS2017+OpenGL ES3.0 环境配置 源码编译及示例运行

win10VS2017OpenGL ES3.0 环境配置 源码编译及示例运行 win10VS2017OpenGL ES3.0 环境配置 源码编译及示例运行 本人参考其他人的博客内容学习opengles3.0编程指南&#xff0c;并在win10系统上用VS2017对OpenGL ES3.0 进行了实际的环境配置及源码编译。 一、环境准备工作 1…

Java项目:SSM网上药品销售商城网站系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本系统分为前后台&#xff0c;分为管理员与普通用户两种角色&#xff0c;前台由普通用户登录&#xff0c;后台由管理员登录&#xff1b; 管理员…

架构师必读 —— 逻辑模型(3)

逻辑思考总是从提问“为什么”开始 培养逻辑思考习惯的捷径之一&#xff0c;就是经常问自己“为什么”。无论收到什么信息&#xff0c;都应该试着问一句“为什么”。 举个例子&#xff0c;A公司收购了其他竞争公司。为什么会收购呢&#xff1f; 这其中隐藏着A公司的发展战略。另…

闲置物品交易系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 基于55m闲置物品交易系统 网站前台&#xff1a;关于我们、联系我们、公告信息、闲置物品、求购信息 管理员功能&#xf…

多态的学习

目录什么是多态多态有啥限制条件吗&#xff1f;重写向下转型和向上转型向上转型向下转型多态的优点多态缺陷避免在构造方法中调用重写的方法什么是多态 多态的概念&#xff1a;就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。 举个例子大家就知道了&…

vue router动态路由与路由的匹配

vue router动态路由与路由的匹配&#xff0c;路由使用正则语法 一、动态路由 1.1 新建一个 user.vue文件 在views文件夹&#xff0c;新建一个user.vue文件 <template><div>用户{{id}}</div> </template><script setup>import { useRoute } from…

SAP ABAP Algorithm 计算一组数据样本的常用统计值(最大值/最小值 /平均值/中位数/众数/总数/方差/标准差 )

SAP ABAP Algorithm 计算一组数据样本的常用统计值(最大值/最小值 /平均值/中位数/众数/总数/方差/标准差 ) 引言&#xff1a; 这是统计学常用统计值的 ABAP 实现&#xff0c;这些统计值可以用在一些统计分析型报表中。 关键字&#xff1a;SAP ABAP Algorithm 算法 统计值 文…

Pytest测试框架(4):conftest.py文件应用---实现数据共享

conftest.py文件&#xff1a; pytest中的fixture是pytest用于将测试前后进行预备&#xff0c;清理工作的代码分离出核心测试逻辑的一种机制。但是我们更加希望的是在一个测试套件中&#xff0c;能够共享fixture的机制&#xff0c;这样一个测试套件里面的所有测试点都能够共同使…

Innodb存储引擎-idb文件格式解析

文章目录ibd 文件格式解析idb文件page类型和格式(File Header & Trailer)FIL_PAGE_TYPE_FSP_HDR格式Extent Descriptor格式Extent Descriptor链表管理Inode page链表管理FIL_PAGE_INODE格式Segment inode链表管理FIL_PAGE_TYPE_XDESFIL_PAGE_INDEX格式记录存储格式compact …

免费分享一个SSM商城管理系统,很漂亮的

大家好&#xff0c;我是锋哥&#xff0c;看到一个不错的SSM商城管理系统&#xff0c;分享下哈。 项目介绍 这是基于SSM框架开发的项目&#xff0c;前端用户界面采用 HtmlcssJavaScriptAjax开发&#xff0c;后台管理页面采用Easyui技术开发。 项目展示 1、主界面 2、商品详…

JDK Stream流式API使用总结

前言 JDK是Java Development Kit英文首字母大写缩写&#xff0c;是 Sun 公司&#xff08;已被 Oracle 收购&#xff09;针对 Java 开发员的软件开发工具包。自从 Java 推出以来&#xff0c;JDK 已经成为使用最广泛的 Java SDK。从JDK8版本开始新增了Stream流式API的功能&#x…

单片机毕业设计题目选题推荐

文章目录1前言2 如何选题2.1 不要给自己挖坑2.2 难度把控2.3 如何命名题目3 单片机 嵌入式 选题大全3.1 嵌入式方向3.2 算法方向3.3 移动通信方向3.4 学长作品展示4 最后1前言 &#x1f947; 近期不少学弟学妹询问学长关于单片机和嵌入式相关的毕设选题&#xff0c;学长特意写…

城镇居民医疗网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 模块划分&#xff1a;通知类型&#xff0c;通知信息&#xff0c;区域信息&#xff0c;人员信息&#xff0c;缴费类型&a…

Java基础:使用 Optional 优雅地解决判空问题

我是 ABin-阿斌&#xff1a;写一生代码&#xff0c;创一世佳话&#xff0c;筑一览芳华。如果小伙伴们觉得不错就一键三连吧~ 声明&#xff1a;原作者&#xff1a;樊亦凡&#xff1a;juejin.cn/post/6844904154075234318 文章目录1 . 前言2 . 认识 Optional 并使用2.1 Optional …

非零基础自学Golang 第9章 结构体 9.6 结构体内嵌

非零基础自学Golang 文章目录非零基础自学Golang第9章 结构体9.6 结构体内嵌9.6.1 初始化结构体内嵌9.6.2 内嵌匿名结构体第9章 结构体 9.6 结构体内嵌 Go语言的结构体内嵌是一种组合特性&#xff0c;使用结构体内嵌可构建一种面向对象编程思想中的继承关系。 结构体实例化后…

[附源码]Python计算机毕业设计Django文曦家教预约系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

PCB四层板、六层板层叠推荐设计,常见层叠方案优缺点

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

Qt-Web混合开发-WebSocket客户端程序Web版本(9)

Qt-Web混合开发-WebSocket客户端程序Web版本&#x1f49a;&#x1f49c;&#x1f251;&#x1f351; 文章目录Qt-Web混合开发-WebSocket客户端程序Web版本&#x1f49a;&#x1f49c;&#x1f251;&#x1f351;1、概述&#x1f41b;&#x1f986;2、实现效果&#x1f605;&…

Java实战:hutool-db实现多数据源配置

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

5G NR同频多beam检测方法

【摘 要】5G NR与LTE有诸多方面的不同,较突出的变化就是SSB内PSS序列和SSS序列设计与LTE明显不同,而且在每个SSB突发内会有多个SSB,多个SSB的出现增加了小区搜索的难度。由于频谱资源匮乏,所以采用同频方式组网,但因此相邻小区之间也会产生干扰,影响检测效率。同频检测技…